这怎么写呀 求帮助,半天搞不明白

img


我自己写的不知道哪里错了,一直都是输出error

题目描述
手机号是一个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

img

题目说了是字符串,你非要用数字
用数字也没什么,也能做,问题是手机号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定义?