0pts求助

P1055 [NOIP2008 普及组] ISBN 号码

juruo_wzq_129 @ 2024-07-12 22:11:54


#include<bits/stdc++.h>
using namespace std;
const int  N = 15; 
int sum;
int main(){
    char a[N + 5];
    for(int i=1;i<=13;i++){
        cin>>a[i];
        if(a[i]!='-' && i!=13){
            sum = sum + i * (a[i] - '0');
        }
    }
    if(sum%11 == (a[13] - '0')&&(sum%11 == 10 && a[13] == 'X')){
        cout<<"Right"<<endl;
    }
    else {
        if(sum%11 == 10){
            a[13] = 'X';
        }
        else a[13] = char(sum%11);
        for(int i=1;i<=13;i++){
            cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}

by Sky_Aurora @ 2024-07-15 18:37:28

这里帮您看了下,错误还是不少的,经过我亲手调试后总结2个错误:

  1. 13行中,这2个条件您可以自己算下,用&&连接的话,这个条件是永远无法成立的,这里应改为||

  2. ASCII码出了问题,注意数字与字符格式之间的ASCII转换。

再加一个提醒:用char数组没问题,但如果您使用了string,请记住:string自动读入的下标是从0开始的,下标为n - 1,需要留意一下。\ 最后,求一个关注,谢谢!


|