作业帮 > 综合 > 作业

下面程序的功能是输出以下n*n阶(最大为9阶)方阵.能帮我分析下思路啊!

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/16 11:05:05
下面程序的功能是输出以下n*n阶(最大为9阶)方阵.能帮我分析下思路啊!
下面程序的功能是输出以下n*n阶(最大为9阶)方阵.请分析程序填空.(以下例子是6阶方阵)
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
main()
{int a[9][9],n,i,j,m;
scanf("%d",&n);
m=(n+1)/2;
for(i=0;i
下面程序的功能是输出以下n*n阶(最大为9阶)方阵.能帮我分析下思路啊!
#include <stdio.h>
int main()
{
int a[9][9] = { 0 }, n, i, j, m;
scanf("%d", &n);
m = (n + 1) / 2;
for (i = 0; i < m; i++)
for (j = i; j < n - i; j++)    // 此语句你写的是错误的, 按照你的是不可能的到那样的输出的
{
a[i][j] = i + 1;
a[n - i - 1][j] = i + 1;    // (1)
a[j][i] = i + 1;
a[j][n - i - 1] = i + 1;    // (2)
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
再问: 这是习题里面的题目,如果这是错误的,那应该怎么写代码啊??思路是什么样的啊??
再答: 上面给出的就是正确代码, 具体的思路就是先只看上三角部分, 同时对应赋值给下三角部分. 上三角的部分就是统一行的值相同且值是: 行标 + 1, 列的值是值相同且值是: 行标 + 1