杭电ACM-2629

2017-01-22  本文已影响0人  1QzUPm_09F

题目:

2629题

代码:

#include<stdio.h>
#include<string.h>
int main()
{
    int i,k,n,y,m,d,adress;
    char a[18],s[20];
    scanf("%d",&n);
    for(k=0;k<n;k++)
    {
        getchar();
        for(i=0;i<18;i++)
        {
            scanf("%c",&a[i]);
        }
        adress=(a[0]-'0')*10+(a[1]-'0');
        if(adress==33) strcpy(s,"Zhejiang");
        if(adress==11) strcpy(s,"Beijing");
        if(adress==71) strcpy(s,"Taiwan");
        if(adress==81) strcpy(s,"Hong Kong");
        if(adress==82) strcpy(s,"Macao");
        if(adress==54) strcpy(s,"Tibet");
        if(adress==21) strcpy(s,"Liaoning");
        if(adress==31) strcpy(s,"Shanghai");
        printf("He/She is from %s,and his/her birthday is on %c%c,%c%c,%c%c%c%c based on the table.\n",s,a[10],a[11],a[12],a[13],a[6],a[7],a[8],a[9]);
    }
    return 0;
}

注意:
只要遇到字符就要想到getchar 这个字符有时候会吃掉‘\n’导致字符串不完整 很可怕的
其次这道题只能用字符变量 因为身份证号码是连续的 所以整形没法分离出来
最后要注意字符串不能赋值 字符串不能赋值 字符串不能赋值!!!
要赋值就用strcpy(a,b);!!!

上一篇 下一篇

猜你喜欢

热点阅读