题解 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,千万不要超过输入的字符串的位数!

你会发现一大堆一大堆的字符对在你面前,然后停止运行