Coder

舒心、快乐,比什么都重要

1031 查验身份证 (15 分)

#include <iostream>
#include <string>
using namespace std;
int main() {
    int n, i, sum = 0, cnt = 0;  // 这是为零很重要
    string s;
    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' };
    cin >> n;
    getchar();
    for (int j = 0; j < n; j++) {  // 用for,  while过不去
        sum = 0;
        getline(cin, s);
        for (i = 0; i < 17 && s[i] >= '0' && s[i] <= '9'; i++) {
            sum += (s[i] - '0') * w[i];
        }
        if (i == 17 && z[sum % 11] == s[17])
            cnt++;
        else
            cout << s << endl;
    }
    if (cnt == n)
        cout << "All passed" << endl;
    return 0;
}

 

posted @ 2019-04-26 12:57  H123K  阅读(443)  评论(0编辑  收藏  举报