马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 ☆﹎尐の潴猪 于 2014-3-11 21:24 编辑
小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int array[100][100];
int i,j,q,k=2,result=0;
scanf("%d",&n);
if(n%2==0||n<1) exit(0);
array[n/2+1][n/2+1]=1;
for(i=1,q=0;i<=n/2;i++,q++)
{
//1
for(j=0;j<2*i;j++,k++)
{
array[n/2+1-j+q][n/2+1+i]=k;
}
//2
for(j=0;j<2*i;j++,k++)
{
array[n/2+1-i][n/2+1-j+q]=k;
}
//3
for(j=0;j<2*i;j++,k++)
{
array[n/2+1+j-q][n/2+1-i]=k;
}
//4
for(j=0;j<2*i;j++,k++)
{
array[n/2+1+i][n/2+1+j-q]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%3d ",array[i][j]);
printf("\n");
}
return 0;
}
|