C++ 1031 查验身份证(15 分)

注意点

1 int 数组的初始化赋值方法

2 char 数组的初始化赋值方法

3 输入char 类型的方法  scanf("%s",id);

4 cin和c语言的gets或者fgets类似,都会在获取字符串输入后自动在字符串末尾加\0截断。有效输入之后的数据为随机的脏数据。在字符数组使用前可以使用memset进行初始化

#include<iostream>
using namespace std;

int main()
{
  int n;
  cin>>n;
  int quan[18] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
  char jiaoyan[11] = {'1','0','X','9','8','7','6','5','4','3','2'};
  bool flag = true;
  char id[20];
  for(int i=0;i<n;i++){
    int j,sum=0;
    scanf("%s",id);
    for(j=0;j<17;j++){
      if(!(id[j] >= '0'&&id[j] <= '9')) break;
      sum += (id[j]-'0')*quan[j];
    }
    
    if(j<17) {
      flag = false;
      printf("%s\n",id);
    }
    else {
      if(jiaoyan[sum%11]!=id[17]){
        flag = false;
        printf("%s\n",id);
      }
    }
    
  }
  
  if(flag){
    printf("All passed\n");
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36122764/article/details/82291048