只差一个检查点了,不知道错在哪

P1055 [NOIP2008 普及组] ISBN 号码

mrHCT @ 2022-11-21 17:39:22

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    char a[20];
    int b[20];
    int sum;
    int j=0;
    gets(a);
    for(int i=0;i<strlen(a);i++)
    {
        if(a[i]!='-'&&a[i]!='X')
        {
            b[j]=a[i]-48;
            j++;
        }
    }
    sum=b[0]+b[1]*2+b[2]*3+b[3]*4+b[4]*5+b[5]*6+b[6]*7+b[7]*8+b[8]*9;
    sum=sum%11;
    if(b[9]==sum||(sum==10&&a[12]=='X'))
    {
        cout<<"Right"<<endl;
    }
    else
    {
        for(int i=0;i<strlen(a)-1;i++)
        {
            cout<<a[i];
        }

        if(sum==10)
        {
            cout<<"X";
        }
        else
        {
            cout<<sum;
        }
    }

    return 0;
}

by Elairin176 @ 2022-11-21 17:56:24

《gets》


by Elairin176 @ 2022-11-21 17:57:24

考场上不要写 gets,不然爆零等着你


by Elairin176 @ 2022-11-21 17:58:06

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    char a[20];
    int b[20];
    int sum;
    int j=0;
    cin>>a;
    for(int i=0;i<strlen(a);i++)
    {
        if(a[i]!='-'&&a[i]!='X')
        {
            b[j]=a[i]-48;
            j++;
        }
    }
    sum=b[0]+b[1]*2+b[2]*3+b[3]*4+b[4]*5+b[5]*6+b[6]*7+b[7]*8+b[8]*9;
    sum=sum%11;
    if(b[9]==sum||(sum==10&&a[12]=='X'))
    {
        cout<<"Right"<<endl;
    }
    else
    {
        for(int i=0;i<strlen(a)-1;i++)
        {
            cout<<a[i];
        }

        if(sum==10)
        {
            cout<<"X";
        }
        else
        {
            cout<<sum;
        }
    }

    return 0;
}

把gets改成cin就A了 @mrHCT


by mrHCT @ 2022-11-22 15:17:32

@destructor 为什么不能用gets啊,这道题不是不用空格符吗


by Elairin176 @ 2022-11-22 17:38:25

@mrHCT gets 有溢出风险,C++11之后就没了


by Liujiayuan3 @ 2022-11-22 21:45:02

可以的,只要头文件写了就行。


|