题目描述
手机号是一个11位长的数字串。同时,大家可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。
自定义函数,参数为手机号(字符串),该手机号为合法手机号,则计算该手机号的短号,并用数组传回。返回1;否则返回0。主函数定义两个串,手机号串和短号串,调用该函数,输出error或得到的短号。
合法手机号判断:11位数字,前三位为:
中国电信:133,153 180 181 189
中国联通:130 131 132 155 156
中国移动:134 135 136 137 138 182 183 184
题目说了是字符串,你非要用数字
用数字也没什么,也能做,问题是手机号11位,你用int存,int最多存10位,都溢出了
题目说了用字符串,你还非用数字
题目都说了手机号是字符串.....
#include <string.h>
#include <stdio.h>
char head[18][4] = {"133","153","180","181","189","130","131","132","155","156","134","135","136","137","138","182","183","184"};
int func(char *tel,char *call)
{
int len = strlen(tel);
int i=0;
for(int i=0;i<18;i++)
{
if(memcmp(head[i],tel,3) == 0)
break;
}
if(i==18)
return 0;
call[0] = '6';
call++;
for(i=len-5;i<len;i++)
*call++ = *(tel+i);
return 1;
}
int main()
{
int n;
char tel[12],call[7] = {0};
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",tel);
if(func(tel,call) == 1)
printf("%s",call);
else
printf("error");
}
}
题目中说了使用数字串,即字符串,你还用int定义?