Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPOJ对“我的解决方案”给出了错误答案:http://www.spoj.com/BSCPROG/problems/SMPCPH1/_C - Fatal编程技术网

SPOJ对“我的解决方案”给出了错误答案:http://www.spoj.com/BSCPROG/problems/SMPCPH1/

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;

我刚刚为这个问题编写了C代码: 对于给定的示例,我的程序给出了期望的结果,但spoj说它是错误的。我怎样才能发现错误


您需要对代码进行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);