C 语言中输入N,按顺时针方向打印N*N矩阵

来源:百度知道 编辑:UC知道 时间:2024/05/04 01:55:02
4.输入N,按顺时针方向打印N*N矩阵
比如 N=3,打印 比如 N=4,打印
1 2 3 1 2 3 4
8 9 4 12 13 14 5
7 6 5 11 16 15 6
10 9 8 7

#include<stdio.h>
#define N 100

void draw_circle(int m, int n,int * start, int p[N][N]){
int i,j;
int data=*start;
for(i=0,j=0;j<n;j++,data++)
p[i+m][j+m]=data;
for(--j,++i;i<n;i++,data++)
p[i+m][j+m]=data;
for(--j,--i;j>=0;j--,data++)
p[i+m][j+m]=data;
for(--i,++j;i>0;i--,data++)
p[i+m][j+m]=data;
*start=data;
}

int main(){
int n;
int array[N][N];
int k,m=0;
int start=1;
int i,j;
printf("input n=\n");
scanf("%d",&n);
for(k=n;k>0;k=k-2,m++){
draw_circle(m,k,&start,array);
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
return 0;
}

楼上可以但是,只能在100之内,而且,太占用空间,若用动态分配就好些了。