我觉得我输出结果的那个程序应该写的是只输出一次,可它输出了两次相同的结果,为什么呢?
可能是for i 循环的大括号将下面的双层循环包住了
先把相同嵌套的循环里面的变量名都区分一下,这看得很不清楚
“该回答引用ChatGPT”
可参考下面的方法,请测试代码的可行性:
这是因为在代码末尾有两个main函数,一个在main0前面,另一个在main0后面。在代码中,每个main函数的代码都会被执行一次,因此出现了两次输出。只需保留一个main函数,并删除另一个即可解决问题。
#include<stdio.h>
int main()
{
int n, m;
scanf("%d%d", &n, &m);
int a[110][110];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
}
}
for (int i = 1; i < n - 1; i++)
{
for (int j = 1; j < m - 1; j++)
{
a[i][j] = (a[i][j] + a[i - 1][j] + a[i][j - 1] + a[i + 1][j] + a[i][j + 1]) / 5;
if ((a[i][j] + a[i - 1][j] + a[i][j - 1] + a[i + 1][j] + a[i][j + 1]) % 5 > 4)
a[i][j] += 1;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出的循环放错地方了,你放进循环里面了
我怎么感觉是编译器差异导致的呢🤣🤣🤣
我使用Microsoft visual c++ 2010学习版 输出只有一次😅😅😅
而且输出的两个for循环最好不要放在遍历的循环中。