题目要求
将螺旋方阵存放到N×N的二维数组中并把它打印 输出。
要求程序自动生成下图所示螺旋方阵。
用 #define定义常量N。
要求对N进行更改也能达到 相同的效果。
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
打印矩阵
1 4
2 3
/*********打印螺旋矩阵**********/
#define N 2
void demo5(void){
int a[N][N]={0};
int i,j;
int num=1;
for(i=0;i<N-1;i++){
a[i][0]=num++;
}
for(j=0;j<N-1;j++){
a[N-1][j]=num++;
}
for(i=N-1;i>0;i--){
a[i][N-1]=num++;
}
for(j=N-1;j>0;j--){
a[0][j]=num++;
}
//打印显示螺旋矩阵
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
打印矩阵
1 8 7
2 9 6
3 4 5
/*********打印螺旋矩阵**********/
#define N 3
void demo5(void){
int a[N][N]={0};
int i,j;
int num=1;
for(i=0;i<N-1;i++){
a[i][0]=num++;
}
for(j=0;j<N-1;j++){
a[N-1][j]=num++;
}
for(i=N-1;i>0;i--){
a[i][N-1]=num++;
}
for(j=N-1;j>0;j--){
a[0][j]=num++;
}
//判断N是否为奇数
if(1==N%2){
a[N/2][N/2]=num;
}
//打印显示螺旋矩阵
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
打印题目要求的矩阵(当N=6时)
/*********打印螺旋矩阵**********/
#define N 6
void demo5(void){
int a[N][N]={0};
int i;//行数
int j;//列数
int k;//层数
int num=1;
for(k=0;k<N/2;k++){
for(i=k;i<N-k-1;i++){
a[i][k]=num++;
}
for(j=k;j<N-k-1;j++){
a[N-k-1][j]=num++;
}
for(i=N-k-1;i>k;i--){
a[i][N-k-1]=num++;
}
for(j=N-k-1;j>k;j--){
a[k][j]=num++;
}
}
//判断N是否为基数
if(1==N%2){
a[N/2][N/2]=num;
}
//打印显示螺旋矩阵
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%3d ",a[i][j]);
}
printf("\n");
}
}
运行结果---->
运行结果.jpg
网友评论