求c语言大神指教 螺旋输出矩阵问题
答案:1 悬赏:20 手机版
解决时间 2021-04-17 02:10
- 提问者网友:鼻尖触碰
- 2021-04-16 11:14
求c语言大神指教 螺旋输出矩阵问题
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-04-16 12:38
#include "stdio.h"
int b=1,c=0;
int a[3][3];
void fill(int m,int n)
{ int i,j;
for(i=0;i<=m-1;i++)
{ if(a[i][c]==0)
a[i][c]=b++;}
for(j=c;j { if(a[m-1][j+1]==0)
a[m-1][j+1]=b++;}
for(i=m;i>1;i--)
{if(a[i-2][n-1]==0)
a[i-2][n-1]=b++;}
for(j=n;j>=2;j--)
{ if(a[c][j-2]==0)
a[c][j-2]=b++;}
c++;
}
void main()
{ int g,h;
for(g=0;g<3;g++)
for(h=0;h<3;h++)
a[g][h]=0;
for(g=3,h=3;g>=0&&h>=0;g--,h--)
fill(g,h);
for(g=0;g<3;g++)
{ for(h=0;h<3;h++)
printf("%d ",a[g][h]);
printf("
");
}
}输出:
1 8 7
2 9 6
3 4 5
原代码for循环有两个错了
改过的代码m和n换别的值也可以正常运行
不过这种算法有点别扭,可以考虑精简下
int b=1,c=0;
int a[3][3];
void fill(int m,int n)
{ int i,j;
for(i=0;i<=m-1;i++)
{ if(a[i][c]==0)
a[i][c]=b++;}
for(j=c;j
a[m-1][j+1]=b++;}
for(i=m;i>1;i--)
{if(a[i-2][n-1]==0)
a[i-2][n-1]=b++;}
for(j=n;j>=2;j--)
{ if(a[c][j-2]==0)
a[c][j-2]=b++;}
c++;
}
void main()
{ int g,h;
for(g=0;g<3;g++)
for(h=0;h<3;h++)
a[g][h]=0;
for(g=3,h=3;g>=0&&h>=0;g--,h--)
fill(g,h);
for(g=0;g<3;g++)
{ for(h=0;h<3;h++)
printf("%d ",a[g][h]);
printf("
");
}
}输出:
1 8 7
2 9 6
3 4 5
原代码for循环有两个错了
改过的代码m和n换别的值也可以正常运行
不过这种算法有点别扭,可以考虑精简下
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯