很大码猴 2021-08-23 23:15 采纳率: 92.9%
浏览 26
已结题

pat乙级 1031查验身份证

#include
using namespace std;
#include
int main()
{
int n;
cin >> n;
int quanzhong[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
char xiaoyan[11] = { '1','0','x','9','8','7','6','5','4','3','2' };
int cnt = 0;
for (int i = 1; i <= n; i++)
{
int sum = 0;
int flag = 1;
char id[18];
scanf("%s",id);
for (int i = 0; i < 17; i++)
{
if (!(id[i] >= '0'&&id[i] <= '9'))
{
cout << id << endl;
cnt++;

            flag = 0;
            break;
        }
    }
    if (flag == 1)
    {
        for (int j = 0; j < 17; j++)
        {
            sum = sum + (id[j] - '0')*quanzhong[j];
        }
        if (xiaoyan[sum % 11] != id[17])
        {
            cout << id << endl;
            cnt++;
        }
    }
}
if (cnt == 0)
{
    cout << "All passed" << endl;
}
system("pause");
return 0;

}
img
为什么这样会部分正确,网上有个答案跟我基本一样但是全部正确

  • 写回答

2条回答 默认 最新

  • Pliosauroidea 2021-08-23 23:39
    关注

    img
    行了跑过了
    原文校验码是大写的X,你匹配用的是小写的x,所以有的点通不过
    有帮助望采纳

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月1日
  • 已采纳回答 8月24日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备