L1-016. 查验身份证

思路:

设置一个二维字符数组用储存N个身份证号码,设置一个标识用来判断N个身份证号码中是否全部正确,然后逐个对每个身份证号码进行判断。

(1)判断前17位是否全部是数字,不是直接输出,跳到下一个。

(1)满足要求:(2)先加权求和,结果再对11求余,然后用switch语句判断最后一个数值是否满足要求;满足跳到下一个,否则输出。

(3)若全部判断完,若全部正确,输出All passed。

注意点:

1.定义求和sum为整形,直接加权求和,不用除以100,不是加权平均。

2.可以直接以不满足要求的个数为标识;

  1 #include<stdio.h>
  2 int main()
  3 {
  4     int N;
  5     char id[100][20];
  6     scanf("%d",&N);
  7     int i;
  8     for(i=0;i<N;i++)scanf("%s",id[i]);
  9     int er;
 10     er=0;
 11     for(i=0;i<N;i++)
 12     {
 13         int sum,j;
 14         sum=0;
 15         for(j=0;j<17;j++)
 16         {
 17             if(id[i][j]<48||id[i][j]>57)
 18             {
 19                 er++;
 20                 printf("%s\n",id[i]);
 21                 goto next;
 22             }
 23         }
 24         sum=(id[i][0]-48)*7+(id[i][1]-48)*9+(id[i][2]-48)*10+(id[i][3]-48)*5+(id[i][4]-48)*8+(id[i][5]-48)*4+(id[i][6]-48)*2+(id[i][7]-48)*1+(id[i][8]-48)*6+(id[i][9]-48)*3+(id[i][10]-48)*7+(id[i][11]-48)*9+(id[i][12]-48)*10+(id[i][13]-48)*5+(id[i][14]-48)*8+(id[i][15]-48)*4+(id[i][16]-48)*2;
 25         //sum=sum/100;
 26         switch((sum%11))
 27         {
 28             case 0:
 29                 if(id[i][17]!='1')
 30                 {
 31                     printf("%s\n",id[i]);
 32                     er++;
 33                 }
 34                 break;
 35             case 1:
 36                 if(id[i][17]!='0')
 37                 {
 38                     printf("%s\n",id[i]);
 39                     er++;
 40                 }
 41                 break;
 42             case 2:
 43                 if(id[i][17]!='X')
 44                 {
 45                     printf("%s\n",id[i]);
 46                     er++;
 47                 }
 48                 break;
 49             case 3:
 50                 if(id[i][17]!='9')
 51                 {
 52                     printf("%s\n",id[i]);
 53                     er++;
 54                 }
 55                 break;
 56             case 4:
 57                 if(id[i][17]!='8')
 58                 {
 59                     printf("%s\n",id[i]);
 60                     er++;
 61                 }
 62                 break;
 63             case 5:
 64                 if(id[i][17]!='7')
 65                 {
 66                     printf("%s\n",id[i]);
 67                     er++;
 68                 }
 69                 break;
 70             case 6:
 71                 if(id[i][17]!='6')
 72                 {
 73                     printf("%s\n",id[i]);
 74                     er++;
 75                 }
 76                 break;
 77             case 7:
 78                 if(id[i][17]!='5')
 79                 {
 80                     printf("%s\n",id[i]);
 81                     er++;
 82                 }
 83                 break;
 84             case 8:
 85                 if(id[i][17]!='4')
 86                 {
 87                     printf("%s\n",id[i]);
 88                     er++;
 89                 }
 90                 break;
 91             case 9:
 92                 if(id[i][17]!='3')
 93                 {
 94                     printf("%s\n",id[i]);
 95                     er++;
 96                 }
 97                 break;
 98             case 10:
 99                 if(id[i][17]!='2')
100                 {
101                     printf("%s\n",id[i]);
102                     er++;
103                 }
104                 break;
105         }
106         next:;
107     }
108     if(er==0)printf("All passed\n");
109     return 0;
110 }

 

posted @ 2018-01-17 23:11  爱你的笑  阅读(269)  评论(0编辑  收藏  举报