1031 查验身份证(15 分)

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int w[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
char z[11] = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
int n;
int main()
{
    scanf("%d", &n);
    getchar();
    int cnt = 0;
    while (n--)
    {
        string s;
        getline(cin, s);
        int sum = 0;
        bool flag = true;
        for (int i = 0; i < 17; i++)
        {
            if (s[i] >= '0'&&s[i] <= '9')
            {
                sum += (s[i] - '0')*w[i];
            }
            else
            {
                flag = false;
                break;
            }
        }
        if (flag == false)cout << s << endl, cnt++;
        else
        {
            if (s[s.length() - 1] != z[sum % 11])cout << s << endl, cnt++;
        }
    }
    if (cnt == 0)printf("All passed");
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目信息 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17...
    沙_狸阅读 3,405评论 0 0
  • 人啊! 越懂事,越没人心疼, 因为他们知道即使忽视了你, 你也不会生气,更不会无理取闹!! 越坚强,越没人心疼, ...
    人生本是一场旅行阅读 942评论 0 0
  • 比昨天更进一步。人生可以很短暂,不知不觉就会在迷茫、徘徊、懒散中度过,人生也可以很漫长,不断地享受那份美好...
    5ea73bbf40f7阅读 1,748评论 0 0