gpt4 book ai didi

c - UVa 判断运行时错误

转载 作者:行者123 更新时间:2023-11-30 20:36:55 28 4
gpt4 key购买 nike

我在 UVa 判断问题 10189 时收到运行时错误。我已经非常努力,但一直无法找到错误原因。在这个问题中,我们应该找到扫雷场的提示矩阵。这是我的代码:

#include <stdio.h>

int main() {
char ch;
int row, col, i, j, ans[101][101];
int tot = 0;

scanf("%d %d", &row, &col);

while (row != 0) {
tot++;

for (i = 1; i <= row; i++) {
scanf("\n");
for (j = 1; j <= col; j++) {
ch = getchar();
if (ch == '*') {
ans[i][j] = 1;
} else {
ans[i][j] = 0;
}
}
}
for (i = 0; i <= row + 1; i++) {
ans[i][0] = 0;
ans[i][col+1] = 0;
}
for (j = 0; j <= col + 1; j++) {
ans[0][j] = 0;
ans[row+1][j] = 0;
}

printf("Field #%d\n", tot);
for (i = 1; i <= row; i++) {
for (j = 1; j <= col; j++) {
if (ans[i][j] == 1)
printf("*");
else {
printf("%d", ans[i-1][j-1] + ans[i-1][j] + ans[i-1][j+1] +
ans[i][j-1] + ans[i][j+1] +
ans[i+1][j-1] + ans[i+1][j] + ans[i+1][j+1]);
}
}
printf("\n");
}
printf("\n");

scanf("\n%d %d", &row, &col);
}
return 0;
}

最佳答案

如果雷区可能是100x100,则应将数组增大一列、加长一行:ans[102][102]

请注意,您可以通过在读取雷区之前将此数组初始化为 0 来简化代码:

memset(ans, 0, sizeof ans);

您绝对还应该检查 scanf 的返回值,以检测无效输入和/或过早的 EOF,并避免未定义的行为和无限循环。

关于c - UVa 判断运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518849/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com