判断字符串是否为手机号格式
- 长度11位;
- 每一位都是数字,且第一位是1,第二位是3,4,5,7,8中的任意一位;
- 用户循环输入,直至输入Ctrl+Z结束。
#include <stdio.h>
#include <string.h>
int main()
{
char c;
printf("输入回车键开始,输入Ctrl+Z终止程序\n");
while ((c = getchar()) != EOF)
{
char s[12]; // 11位数字+1终止符
printf("输入号码:");
scanf("%s", s);
if (strlen(s) != 11)
{
printf("号码长度不合法!\n");
continue;
}
int valid = 1;
for (int i = 0; s[i]; i++)
{
if (s[i] < '0' || s[i] > '9')
{
printf("号码包含非数字字符!\n");
valid = 0;
break;
}
}
if (!valid)
continue;
if (s[0] != '1')
{
printf("号码第1位不合法!\n");
continue;
}
char secondDigit = s[1];
if (secondDigit != '3' && secondDigit != '4' && secondDigit != '5' && secondDigit != '7' && secondDigit != '8')
{
printf("号码第2位不合法!\n");
continue;
}
printf("号码合法!\n");
}
return 0;
}
2023年10月18日更新,看到有人评论程序有问题,抽空看了下,确实有bug,所以更新修复下。