P1055 ISBN号码解析
题目分析
本题大意:将识别码中是数字的部分取出来再计算,需要累加器。以下简称
旁边是
本题因含有分隔符“-”而有些难度,不过只需要加上几个判断也能解决。
代码分析
#include<iostream>
//#include<bits/stdc++.h>
using namespace std;
char a[20];
使用char数组存储标识符。
int main()
{
int q = 0,sum = 0;//乘数,累加器
cin >> a;
for(int i = 0;i <= 10;i++)
{
if(a[i] != '-')
{
q++;
sum += int(a[i] - '0') * q;//因为使用的是char数组,因此还原数字时需要减掉0的ASCLL码。
}
}
sum %= 11;
如果输入的
char c;
if(sum == 10) c = 'X';
else c = sum + '0';//识别码处理
if(c == a[12]) cout<< "Right" <<endl;//因为从0开始输入,所以第十三位实际上是a[12]。
else
{
a[12] = c;
cout<< a <<endl;//更改为正确的并输出。
}
return 0;
}
代码全貌
#include<iostream>
//#include<bits/stdc++.h>
using namespace std;
char a[20];
int main()
{
int q = 0,sum = 0;
cin >> a;
for(int i = 0;i <= 10;i++)
{
if(a[i] != '-')
{
q++;
sum += int(a[i] - '0') * q;
}
}
sum %= 11;
char c;
if(sum == 10) c = 'X';
else c = sum + '0';
if(c == a[12]) cout<< "Right" <<endl;
else
{
a[12] = c;
cout<< a <<endl;
}
return 0;
}