hxd们帮帮我康康为什么我RE

P1055 [NOIP2008 普及组] ISBN 号码

Wwgan_ @ 2022-07-23 10:05:58

#include<bits/stdc++.h>
using namespace std;
char c,a[9999];
int n=1,cnt,k;
int main()
{
    while((a[n]=getchar())!='\n')
        n++;
    for(int i=1;i<n-1;i++)
    {
        if(a[i]=='-') continue;
        else if(a[i]>='0'&&a[i]<='9') 
        {
            cnt+=(a[i]-'0')*k;
            k++;
        }
    }
    if(cnt%11==10) c='X';
    else c=(cnt%11)+'0'-1;
    if(c==a[n-1]) 
    {
        cout<<"Right\n";
        return 0;
    }
    else a[n-1]=c;
    for(int i=1;i<=n;i++)
        cout<<a[i];
    return 0;
}

但样例都是过的


by iiiiiyang @ 2022-07-23 10:12:07

读入问题

确定了长度为啥不一次性读完啊


by Kedit2007 @ 2022-07-23 10:23:45

因为实际的测试数据里并没有换行符,导致读到文件尾之后依旧在 getchar() ,引发运行时错误。 可以用 scanf("%s", a) 再结合 strlen 获取长度。


by AAA404 @ 2022-07-23 10:27:28

直接while(scanf("%c",&a[i])!=EOF)i++;不就行了还省一个strlen


by Pass1on_W @ 2022-07-23 10:32:38

while(cin>>a)

这样不行吗


|