P1055WA俩点,求大佬帮帮

P1055 [NOIP2008 普及组] ISBN 号码

无奈之白 @ 2021-08-22 08:56:06

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    int k=1,b=0;
    char a[1001];
    cin>>a;
    for(int i=0;i<12;i++){
        if(a[i]!='-'){
            b+=(a[i]-'0')*k;
            k++;
        }
    }
    if(b%11==10){
        a[12]='X';
        for(int i=0;i<13;i++)cout<<a[i];
        return 0;
    }
    else if(b%11==(a[12]-'0')){
        cout<<"Right"; 
        return 0;
    }
    else {
        a[12]=b%11+'0';
        for(int i=0;i<13;i++)cout<<a[i];
        return 0;
    }
    return 0;
}

by jixiao_龙之舞 @ 2021-08-22 21:19:04

错误点在于判断识别码为“X”时,没有“Right ”的选项

例:

输入"0-500-00000-X"的时候,

输出

0-500-00000-X

然而实际上应该输出“Right”。

建议修改为:

if(b%11==10){
    if(a[12]=='X')
       cout<<"Right";   
    else
    {
         a[12]='X';
         for(int;i=0;i<13;i++)
             cout<<a[i];
    }
    return 0;
}

|