题解 P1055 【ISBN号码】
看了各位大佬的题解,我突然发现没人发string类型的
但是大家可能会问:
string到底怎么做?
string类型有一个函数,叫做:
.at(int)
它的作用是:提取字符串中间int+1个字符,相当于一个小小的数组
同时,大家也可以用char数组来做
代码简洁明了,希望大家喜欢。
#include<cstring>
#include<iostream>
using namespace std;
string s;
int main(){
cin>>s;//string类型只能够用cin读入
int tell=s.at(0)-48+(s.at(2)-48)*2+(s.at(3)-48)*3+(s.at(4)-48)*4+(s.at(6)-48)*5+(s.at(7)-48)*6+(s.at(8)-48)*7+(s.at(9)-48)*8+(s.at(10)-48)*9;//得到应该得到的值:因为at返回的是一个字符,所以说要减去'0'(48),根据题意,得到这个算式
char right=tell%11+48;//正确的最后一位的值
if(right>'9') right='X';//因为module 11 之后可能会有10,根据题意得到'X'
if(right==s.at(12)) cout<<"Right";//如果相等,那就是正确的
else//否则
{
for(int i=0;i<=11;++i) cout<<s.at(i);//从0~10输出前面的字符
cout<<right;//然后输出正确的最后一位
}
return 0;
}
注意!!!
如果要使用at,千万不要超过输入的字符串的位数!
你会发现一大堆一大堆的字符对在你面前,然后停止运行