展开全部
#include<stdio.h>
int main()
{ int i,j,n,x=0,y=0,k=0,l,a[10][10];
scanf("%d",&n);
l=n-1;
for(i=0; i<n/2; i++)
{ for(j=0; j<l; j++)
a[x][y++]=++k;
for(j=0; j<l; j++)
a[x++][y]=++k;
for(j=0; j<l; j++)
a[x][y--]=++k;
for(j=0; j<l; j++)
a[x--][y]=++k;
l-=2;
x++,y++;
}
if(n%2)a[n/2][n/2]=++k;
for(i=0; i<n; i++)
{ for(j=0; j<n; j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
展开全部
有思路就很好写出来了:四个循环为一个二维数组赋值最后输出即可,循环分别是从左上到右上,从右上到右下,从右下到左下,从左下到左上。
int n,i,j,count=1;
for(n=0;n<=N/2;n++) /* N为输入的矩阵阶次 */
{
for(j=n;j<=N-n-1;j++)
a[n][j]=count++;
for(i=n+1;i<N-n-1;i++)
a[i][N-n-1]=count++;
for(j=N-n-1;j>n;j--)
a[N-n-1][j]=count++;
for(i=N-n-1;i>n;i--)
a[i][n]=count++;
}
int n,i,j,count=1;
for(n=0;n<=N/2;n++) /* N为输入的矩阵阶次 */
{
for(j=n;j<=N-n-1;j++)
a[n][j]=count++;
for(i=n+1;i<N-n-1;i++)
a[i][N-n-1]=count++;
for(j=N-n-1;j>n;j--)
a[N-n-1][j]=count++;
for(i=N-n-1;i>n;i--)
a[i][n]=count++;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询