题目:输入一个n,在屏幕上打印出N*N的矩阵。
例如:输入一个3,则输出:
1 2 3
8 9 4
7 6 5
输入一个4,刚输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
答案:
#include<stdio.h>
#include<conio.h>
#define N 10
void printCube(int a[][N],int n);//数组存放矩阵结点的值
void main()
{
int a[N][N],n;
printf("input n:\n"); //输入矩阵的行、列数
scanf("%d",&n);
printCube(a,n); //执行赋值和打印函数
getch();
}
void printCube(int a[][N],int n)//数组存放矩阵结点的值
{
int i,j,round=1;
int m=1; //初始值为1
for(i=0;i<n;i++)
a[0][i]=m++; //赋值第一行
for(i=n-1;i>=n/2;i--) //几次循环,得到矩阵数组的所有值
{
for(j=round;j<=i;j++)
a[j][i]=m++; //赋值最后一列
for(j=i;j>=round;j--)
a[i][j-1]=m++; //赋值最后一行
for(j=i;j>round;j--)
a[j-1][round-1]=m++;//赋值第一列
for(j=round;j<i;j++)
a[round][j]=m++; //赋值里面的第一行,即第二行
round++; //倒数第二列,重新运算,round+1时,减少一列,因为最后一列已经赋值
} //循环得到矩阵数组的值
for(i=0;i<n;i++) //循环输入矩阵
{ for(j=0;j<n;j++)
printf("%3d",a[i][j]);//打印一行
printf("\n"); //换行
}
}
程序执行结果: