下面程序的功能是输出以下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<m;i++)
for(j=0;j<n-i;j++)
{a[i][j]=i+1;
a[【1】][j]=i+1;
a[j][i]=i+1;
a[j][【2】]=i+1;
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
下面程序的功能是输出以下n*n阶(最大为9阶)方阵。能帮我分析下思路啊!!!
答案:3 悬赏:10 手机版
解决时间 2021-03-04 18:31
- 提问者网友:凉末
- 2021-03-03 19:35
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-03-03 20:20
这个题有问题,他的j的循环很明显不对,我尝试自己写了一下,思路是一样的,从1 开始慢慢写就明白这个函数什么意思了
#include<stdio.h>
#define M 50
main()
{int a[9][9],n,i,j,m;
scanf("%d",&n);
m=(n+1)/2;
for(i=1;i<=m;i++)
for(j=i;j<=n-i+1;j++)
{a[i][j]=i;
a[n-i+1][j]=i;
a[j][i]=i;
a[j][n-i+1]=i;
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
#include<stdio.h>
#define M 50
main()
{int a[9][9],n,i,j,m;
scanf("%d",&n);
m=(n+1)/2;
for(i=1;i<=m;i++)
for(j=i;j<=n-i+1;j++)
{a[i][j]=i;
a[n-i+1][j]=i;
a[j][i]=i;
a[j][n-i+1]=i;
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
全部回答
- 1楼网友:拾荒鲤
- 2021-03-03 23:37
#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;
}
- 2楼网友:归鹤鸣
- 2021-03-03 22:00
思路:
考虑走第一圈,分4段
记录第一段 开始的i0,j0 和 到达 的 i1
另3段走法 用 i0,j0,i1 描述
第二圈和后来圈的变化是i0 = i0+1;i1=i1-1;j0=j.
一共转 n/2 圈 就成功了。
每走一格,填入数值 v=v+1, v 初值1。
#include
void main()
{
int x[25][25];
int ii,jj,n = 6;
int v=1;
int i0,i1,j0,j;
printf("please enter n, n=3 to 25\n");
scanf("%d",&n);
i0=0; i1 = n -1;
for (j=0;j<=n/2;j++)
{
j0 = j;
for (ii=i0;ii<=i1;ii++) {x[j0][ii]=v; v++;};
for (jj=j0+1;jj<=i1;jj++) {x[jj][i1]=v; v++;};
for (ii=i1-1;ii >=i0;ii--) {x[i1][ii]=v; v++;};
for (jj=i1-1;jj >=i0+1;jj--) {x[jj][i0]=v; v++;};
i0 = i0+1;i1=i1-1;
}
for (jj=0;jj array[i]=x;i++;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯