发布网友 发布时间:2022-04-27 11:30
共3个回答
热心网友 时间:2023-09-15 05:46
又仔细看了一遍你的代码 DEBUG了一下 发现你是先输出左上半的元素然后计算右半部的 直接顺序输出数组 乍一看是没问题的 但是你忽略的是 输出的前提是必须先计算好值 你遍历输出到第2行第一个右半部分的元素的时候 这个元素还没有开始计算呢 而在你的程序里并没有察觉到这点而是直接输出了 所以那里就是0了 其他0元素也是这样 在被计算之前就输出了
避免你说的问题 你可以把输出挪出刚开始用来赋值的两个FOR循环即可
直接修改你的代码
#include <stdio.h>
#define SIZE 80
int a[SIZE][SIZE];
void main()
{int p,q;int n;
printf("输入蛇形数组的维数:");
scanf("%d",&n);
for(p = 0; p < n; p++)
{
for(q = 0; q < n; q++)
{
if((p + q) < n)
{
a[p][q] = (p + q) * (p + q + 1) / 2 + 1;
if((p + q) % 2)
a[p][q] += q;
else
a[p][q] += p;
a[n-1-p][n-1-q]=n*n+1-a[p][q];
}
}
}
for(p = 0; p < n; p++)
{
for(q = 0; q < n; q++)printf(" %4d ", a[p][q]);
printf("\n\n");
}
getchar();getchar();
}
经过编译完全OK
热心网友 时间:2023-09-15 05:47
我先把程序给你写上,注释我一会再给你加上不懂的也可以直接hi我,我没有用递归,直接循环做的。刚刚修改答案的时候IE突然出问题了,没办法,我得赶着去上课了,没时间帮你写了。热心网友 时间:2023-09-15 05:47
最简短的代码如下: