1031 查验身份证 (15 分)

水题~。

int w[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char mp[15];
int n;

void init()
{
    mp[0]='1';
    mp[1]='0';
    mp[2]='X';
    for(int i=3;i<=10;i++)
        mp[i]=12-i+'0';
}

int main()
{
    init();

    cin>>n;

    bool ok=true;
    for(int i=0;i<n;i++)
    {
        string s;
        cin>>s;

        int res=0;
        for(int i=0;i<17;i++)
            res+=w[i]*(s[i]-'0');

        res%=11;

        if(mp[res] != s[17])
        {
            ok=false;
            cout<<s<<endl;
        }
    }

    if(ok) puts("All passed");
   //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14399854.html