SPOJ对“我的解决方案”给出了错误答案:http://www.spoj.com/BSCPROG/problems/SMPCPH1/
我刚刚为这个问题编写了C代码: 对于给定的示例,我的程序给出了期望的结果,但spoj说它是错误的。我怎样才能发现错误SPOJ对“我的解决方案”给出了错误答案:http://www.spoj.com/BSCPROG/problems/SMPCPH1/,c,C,我刚刚为这个问题编写了C代码: 对于给定的示例,我的程序给出了期望的结果,但spoj说它是错误的。我怎样才能发现错误 您需要对代码进行3项更改: 在参数验证测试中使用| |而不是&&。 将数字解析为m后,扫描并忽略换行符,否则下一个FGET将读取空行 以下是更正后的代码: #include <stdio.h> #include <string.h> #include <stdlib.h> main() { int n, m, i, j, k;
您需要对代码进行3项更改: 在参数验证测试中使用| |而不是&&。 将数字解析为m后,扫描并忽略换行符,否则下一个FGET将读取空行 以下是更正后的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main() {
int n, m, i, j, k;
char a[100], b[100];
scanf("%d", &n);
if (n > 26 && n <= 1)
exit(0);
scanf("%s", a);
scanf("%d", &m);
if (m > 100 && m <= 1)
exit(0);
for (i = 0; i < m; i++) {
fgets(b, 100, stdin);
for (j = 0; b[j] != '\0'; j++) {
for (k = 0; k < n; k++) {
if (a[k] == b[j]) {
if (k == (n - 1)) {
b[j] = a[0];
break;
} else {
b[j] = a[k+1];
break;
}
}
}
}
printf("%s",b);
}
return 0;
}
将此问题标记为寻求调试帮助的问题来结束此问题为什么此代码不起作用?必须包括所需的行为、特定的问题或错误,以及在问题本身中重现该问题所需的最短代码。如果>26&&N当我运行代码时,它无法解决示例。它正确地输出了两行,但没有第三行输出……或者给你一个线索,示例文本的第一行读错了。混合输入法的危险。
if (n > 26 || n <= 1)
exit(0);
scanf("%s", a);
scanf("%d%*c", &m);
if (m > 100 || m <= 1)
exit(0);