#4和#7不对,大佬们帮我看看

P1055 [NOIP2008 普及组] ISBN 号码

shpp @ 2024-03-13 19:46:41

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

by TPJ_XiaoJing @ 2024-03-13 19:59:17

没有考虑到最后一位可能是字符 'X' 的情况。代码中,如果 t == (a[12]-'0') 则输出 Right,但这里如果识别码应该是 X(a[12]-'0') 这时候不能正确反映这一点,因为 'X' - '0' 并不等于10。

不提供代码。

@shpp


by shpp @ 2024-03-13 20:01:11

@TPJ_XiaoJing 懂了,感谢大佬


|