RE是什么原因呀,样例可以过

P1055 [NOIP2008 普及组] ISBN 号码

l1634496141 @ 2022-11-27 10:47:06

不知道为什么会re


#include<stdio.h>
int main()
{
    char ch[15],n;
    int i=0,sum=0,num=1;
    while(1)
    {
        scanf("%c",&n);
        if(n=='\n') break;
        ch[i]=n;
        i++;
    }
    for(i=0;i<12;i++)
    {
        if(ch[i]!='-')
        {
            sum=sum+(ch[i]-'0')*num;
            num++;
        }
    }
    if(sum%11==ch[12]-'0'||(sum%11==10&&ch[12]=='X'))
    printf("Right");
    else if(sum%11!=ch[12]-'0')
    {
        for(i=0;i<13;i++)
        {
            if(i!=12)
            printf("%c",ch[i]);
            else
            {
                if(sum%11==10)
                printf("X");
                else
                printf("%d",sum%11);    
            }
        }
    }
    return 0;

by jnyz2021109122116 @ 2022-11-27 12:18:37

@l1634496141

if(n=='\n') break;

数据里没有回车,因此不能用回车作为判断结束的标志

因为长度已知所以可以使用for循环

至于为什么本地正确,因为你在输入数据的时候是以回车结束的


by l1634496141 @ 2022-11-27 17:09:14

@jnyz2021109122116 感谢大佬,ac了


|