『代码』··By/蜜汁炒酸奶

手机号验证

/*
功能:手机号验证
日期:2013-05-30
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char num[30]={0};
char tmpNum[4]={0};
char mob[4]={0};
char uni[4]={0};
char tel[4]={0};
int mobileNum[16]={134,135,136,137,138,139,147,150,151,152,157,158,159,182,187,188};
int uniconNum[7]={130,131,132,155,156,185,186};
int teleNum[4]={133,153,180,189};
int i,a=0,numLen;

printf("请输入手机号:");

while(1)
{
//gets()函数的作用是接收一行数据,只以回车符作为结束标志。
gets(num);
//验证是否含有非数字字符
for (i=0;i<strlen(num);i++)
{
if (num[i]<48||num[i]>57)
{
printf("手机号码不能含有非数字字符,请重新输入:");
gets(num);
i=0;
continue;
}
}
//验证手机号码的长度是否小于11位
if (strlen(num)<11)
{
printf("手机号码的长度小于11位,请重新输入:");
continue;

}
//验证手机号码的长度是否小于11位
else if(strlen(num)>11)
{

printf("手机号码的长度大于11位,请重新输入:");
continue;
}
//从此处开始验证是哪个公司的手机号
for (i=0;i<3;i++)
{

tmpNum[i] = num[i];

}
tmpNum[3]=0;
//验证是否是移动的
for (i=0;i<16;i++)
{
sprintf(mob, "%d" , mobileNum[i]);

if(strcmp(tmpNum,mob)==0)
{

printf("你用的是移动的手机。");
a++;
break;
}
}
//验证是否为联通的
for (i=0;i<7;i++)
{
sprintf(uni, "%d" , uniconNum[i]);
if (strcmp(tmpNum,uni)==0)
{
printf("你用的是联通移动的手机。");
a++;
break;

}
}
//验证是否为电信的
for (i=0;i<4;i++)
{
sprintf(tel, "%d" ,teleNum[i]);
if (strcmp(tmpNum,tel)==0)
{
printf("你用的是电信的手机。");
a++;
break;
}
}

if(a == 0)
{
printf("没这样的号码,请重新输入:");
continue;
}
break;

}

printf("n");
system("pause");
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

预览
Loading comments...
2 条评论
  • W

    真是太感谢你了 解决了我的燃眉之急啊 :razz:

    • W

      回复 @哈: 哈哈,感谢您的反馈,虽然好久不动c了,但能听到这样的评论也是很高兴的。

example
预览