题目:
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);!!!
网友评论