CSP

2013_12_CSP_2

ISBN号码

Posted by clever on December 15, 2020

CSP考试2013.12第二题

ISBN号码

2013_12_2.PNG

解答代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;//读入ISBN
    cin >> s;
    int sum = 0, num = 1;//ISBN识别码总和, ISBN迭代的数字序数
    for(string::iterator it = s.begin();it!=s.end();it++)
    {
        if(*it == '-') continue;//非数字则跳过
        if(num != 10)  //非最后一位求识别码总和
        {
            sum += num * (*it - '0');
            num ++;
        }
        else  //对11取模求识别码,正确输出Right,错误则更正
        {
            if(sum % 11 == ((*it == 'X')? 10 : *it - '0'))
            {
                cout << "Right" << endl;
            }
            else
            {
                for(int i = 0; i< s.size()-1 ;i++)
                {
                    cout << s[i];
                }
                (sum % 11 == 10) ? (cout << 'X') : (cout << (sum % 11)) << endl;
            }
        }
    }
    return 0;
}