关于c语言问题3

来源:百度知道 编辑:UC知道 时间:2024/06/16 11:51:25
写一个程序,打印从1到n的平方数,要求打印格式如下,例如当你打5时,则显示
13 13 15 16 01
12 23 24 17 02
11 22 25 18 03
10 21 20 19 04
09 08 07 06 05

编这一个程序用一个二维数组,通过输入的n值控制所用到数组的长度,由外向内一圈一圈地赋值:(程序虽然用了100*100的组数,但一行打印的长度有限,验证时n小于15时比较直观)

程序如下:
main()
{int a[100][100];
int x,y,i,j,k,n,num;
printf("please input n value : ");
scanf("%d",&n);
num=1;
x=0;
y=n-1;
k=n-1;
for(i=0;i<n/2;i++)
{
for(j=0;j<k;j++)
{a[x][y]=num;
num++;
x++;
}
for(j=0;j<k;j++)
{a[x][y]=num;
num++;
y--;
}
for(j=0;j<k;j++)
{a[x][y]=num;
num++;
x--;
}
for(j=0;j<k;j++)
{a[x][y]=num;
num++;
y++;
}
x=x+1;
y=y-1;
k=k-2;
}
if(n%2)a[x][y]=n*n;
printf("\n\n\nthe result:\n\n");
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\