美文网首页
PAT 1031 查验身份证 (15 分)

PAT 1031 查验身份证 (15 分)

作者: 昭明ZMing | 来源:发表于2018-12-15 17:38 被阅读0次
    #include <stdio.h>
    int main()
    {
        int N;
        int weight[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        char ZtoM[] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
        char ID[19];
        
        scanf("%d", &N);
        int d=0,sum=0,count = 0;     /* index, weighted sum and count for legal IDs */
        for(int i = 0; i < N; i++)
        {
            scanf("%s", ID);
            for(d=0,sum=0; d < 17 && ID[d] >= '0' && ID[d] <= '9'; d++)
                sum += (ID[d] - '0') * weight[d];
            if(d == 17 && ID[17] == ZtoM[sum % 11])     /* legal ID */
                count++;
            else                                       
                puts(ID); /* illegal ID */
        }
        if(count == N)
            puts("All passed");
        
        return 0;
    }
    

    GitHub

    相关文章

      网友评论

          本文标题:PAT 1031 查验身份证 (15 分)

          本文链接:https://www.haomeiwen.com/subject/tebahqtx.html