【发布时间】:2026-01-12 03:40:01
【问题描述】:
我有一个任务要求我创建一个 N*N 数组,然后用从 1 到 N^2 的数字填充数组。之后我必须检查数组是否是魔方,但这不是我的问题。我已经尝试了所有方法,但无法填充数组; scanf 会一直运行下去。
正如你在截图中看到的,在第一个scanf中,假设我按2回车,变量n变成了2,所以必须创建一个名为msquare[2][2]的数组。但是当涉及到第二个 scanf 时,有些东西不能正常工作,它让我永远打字。我真的很感激一些帮助。另外,如果问题与指针有关,请尽量解释清楚,因为我仍然不熟悉它们并且不能完全理解它们。
这是一个例子:
int n;
int i;
int j;
scanf("%d", &n);
int msquare[n][n];
for (i=0; i<=n; i++)
{
for (j=0; j<=n; j++){
scanf("%d",msquare[i][j]);
}
}
【问题讨论】:
-
请在此处复制代码并发布一个最小的可执行示例。谢谢。
-
请不要显示文字图片。改为显示文本。
-
欢迎来到 *!请在问题本身中将代码作为文本发布。阅读tour 和How do I ask a good question? 可能会让您受益
-
至少
scanf("%d", msquare[i][j])->scanf("%d", &msquare[i][j])。但是你没有显示的代码可能还有更多问题。 -
请注意,C 中惯用的
for循环的形式为for (int i = 0; i < maximum; i++)。 (如果您需要循环外的变量并预先定义变量,则可以省略int。)如果您修复了scanf()问题,则使用for (i = 0; i <= n; i++)的循环将写入数组边界之外,从而造成严重破坏你的程序。