怎么全是RE啊啊啊啊啊啊

P1055 [NOIP2008 普及组] ISBN 号码

~~很简单~~如下: ``` #include<bits/stdc++.h> using namespace std; char s[20]; int main() { int ans; scanf("%s",s); ans=(s[0]-'0')*1+(s[2]-'0')*2+(s[3]-'0')*3+(s[4]-'0')*4+(s[6]-'0')*5+(s[7]-'0')*6+(s[8]-'0')*7+(s[9]-'0')*8+(s[10]-'0')*9; ans=ans%11; if(ans==10) { if(s[12]=='X') { printf("Right\n"); } else { s[12]='X'; printf("%s\n",s); } } else if(ans==s[12]-'0') { printf("Right\n"); } else { s[12]=ans+'0'; printf("%s\n",s); } return 0; } ```
by lizhengfei0824 @ 2024-01-09 13:41:18


`main` 函数第一行:`int i=1,n=0,x;` `x` 需要赋值,改为:`int i=1,n=0,x=0;` 因为 `x` 没有赋值,直接进行运算,是 UB。
by RainPPR @ 2024-01-09 14:44:43


@[RainPPR](/user/371511) 谢谢大佬,已修改,但问题还是没有解决。 调试的过程中没有出现任何问题,查了一下也并没有什么数组越界的情况,就一直报错,折腾很长时间了 ![](C:\Users\Administrator\Pictures)
by Chinami_Nagisa @ 2024-01-10 13:04:39


@[Chinami_Nagisa](/user/1152154) 即答:输入方式不对。 根本原因是本题输入格式中,最后一行不是换行。 因此你写的 `getchar()` 什么什么的 `!='\n'` 就不对了。 可以加一个 `!=EOF`,或者建议使用 `scanf` 或者 `cin` 输入。 我实测仅将第 8 行替换为 `scanf("%s",s);` 就可以 AC。 <https://www.luogu.com.cn/record/142416205>。
by RainPPR @ 2024-01-10 14:01:08


@[Chinami_Nagisa](/user/1152154) 有一个方法。 善用 Codeforces 的 Custom test 的 Clang 语言() 特别好用。在找 RE 的时候() <https://codeforces.com/problemset/customtest>
by RainPPR @ 2024-01-10 14:02:01


|