##求大神解答

P1055 [NOIP2008 普及组] ISBN 号码

qgmzzn @ 2021-10-04 21:34:47


#include<iostream>
using namespace std;
int main(){
    char a[13];
    cin>>a;
    int b[9];
    int j=0;
    for(int i=0;i<12;i++){
        if(a[i]=='-')continue;  
        b[j]=a[i]-'0';
        ++j;
    }
    int sum=0;
    for(int i=0;i<9;i++){
        sum+=b[i]*(i+1);
    }
    if(sum%11==(a[12]-'0')||sum%11==10&&a[12]=='X')cout<<"Right";
    if((sum%11!=(a[12]-'0')&&sum%11!=10)||(sum%11==10&&a[12]!='X')) {
        if(sum%11==10)
            a[12]='X';
        else 
            a[12]=(sum%11+'0');
        cout<<a;
    }
}//30分,看不出哪里不对劲QAQ

by xutongwei @ 2021-10-04 22:36:05

@qgmzzn

说句闲话,窝用你的代码,把 char a[13] 改成了 string a ,又加上了 string 的头文件,就过了。

然后,我试着把 a[13] 改成 a[14] ,结果也能过……

所以似乎是些玄学的越界问题?(怀疑与直接草率的 cin >> a;cout << a; 有关)


|