PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)

该博客介绍了一个简单的C++程序,用于验证输入的身份证号码的最后一位校验码是否正确。程序通过定义两个数组,分别对应身份证号码的权重和校验字符,然后计算前17位数字与权重的乘积之和,再取模求得校验码。如果计算得到的校验码与输入的最后一位不一致,程序会输出错误的身份证号码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每日第二题,刷题第一天
题目:

在做本体时,没有太大难度,下面是完整的代码:

#include<iostream>
#include<string>
int qz[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char m[11]={'1','0','X','9','8','7','6','5','4','3','2'};
using namespace std;
int main() {
 int n,sum,flag = 0;
 cin >> n;
 string s;
 for (int i = 0; i < n; i++) {
  sum = 0;
  cin >> s;
  for (int j = 0;j < 17; j++) {
   sum = (s[j]-'0') * qz[j] + sum;
  }
  sum = sum % 11;
  if (m[sum] != s[17]) {
   cout << s << endl;
   flag++;
  }
 }
 if (flag == 0) {
  cout << "All passed" << endl;
 }
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值