#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;
}
我刚刚为此问题编写了C代码:http://www.spoj.com/BSCPROG/problems/SMPCPH1/ 在给定的例子中,我的程序给出了期望的结果,但是spoj说它是错误的。我怎么能找到错误?
答案 0 :(得分:0)
您的代码需要进行3次更改:
||
代替&&
。m
的号码后扫描并忽略换行,否则下一个fgets()
将读取空行以下是更正后的代码:
if (n > 26 || n <= 1)
exit(0);
scanf("%s", a);
scanf("%d%*c", &m);
if (m > 100 || m <= 1)
exit(0);