CSP考试2013.12第二题
ISBN号码
解答代码如下:
#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;
}