50分求助!!!!!!!!!!!

P1055 [NOIP2008 普及组] ISBN 号码

_Hu_Tao @ 2022-07-31 20:34:34

#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,f,g,h,i,ans,zans,sum;
int main(){
    scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%1d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&ans);
//  cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<" "<<h<<" "<<i<<" "<<endl;
    sum+=a*1;
    sum+=b*2;
    sum+=c*3;
    sum+=d*4;
    sum+=e*5;
    sum+=f*6;
    sum+=g*7;
    sum+=h*8;
    sum+=i*9;
    if(ans==sum%11){
        cout<<"Right";
        return 0;
    }else if(sum%11>10){
        cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<'X';
        return 0;
    }else{
        cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<sum%11;
        return 0;
    }

}

by 654179_qwq @ 2022-07-31 20:45:06

@Qszd2022 您的 scanf 有问题。

scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%1d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&ans);

您的程序无法应对 ans 是 X 的情况。

可以试试把 ans 定义成 char,然后特判 X,求得 ans,存在另一个变量里。


by 654179_qwq @ 2022-07-31 20:46:49

能无偿帮别人调代码,我觉得这样的人可以当佛祖供起来。

我是佛祖


by _Hu_Tao @ 2022-07-31 20:47:21

@czx2009 我去试一试,谢谢你,我会加油的。(关注你了)


by 654179_qwq @ 2022-07-31 20:47:32

以上纯属玩笑,不代表我是佛祖。


by _Hu_Tao @ 2022-07-31 20:58:05

@czx2009

#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,f,g,h,i,zans,sum;
char ans;
int main(){
    scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&ans);
//  cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<" "<<h<<" "<<i<<" "<<endl;
    sum+=a*1;
    sum+=b*2;
    sum+=c*3;
    sum+=d*4;
    sum+=e*5;
    sum+=f*6;
    sum+=g*7;
    sum+=h*8;
    sum+=i*9;
    if(int(ans)-48==sum%11){
        cout<<"Right";
        return 0;
    }else if(sum%11>10){
        if((sum%11>10)&&ans=='X'){
            cout<<"Right";
            return 0;
        }else{
            cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<'X';
            return 0;   
        }
    }else{
        cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<sum%11;
        return 0;
    }

}

还是不行。。。


by qxs_ck @ 2022-08-01 09:11:14

    if(int(ans)-48==sum%11){
        cout<<"Right";
        return 0;
    }else if(sum%11>10){
        if((sum%11>10)&&ans=='X'){
            cout<<"Right";
            return 0;

改成

    if(int(ans)-48==sum%11){
        cout<<"Right";
        return 0;
    }else if(sum%11==10){
        if((sum%11==10)&&ans=='X'){
            cout<<"Right";
            return 0;

就是

sum%11>10 改成sum%11==10

|