/*从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2 4 3 输入数字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> void main() { int n,i,j ,t, k=1; // k,k=1时,k指向右, k=2时,k指向下,k=3时,k指向左,k=4时,k指向上, int nn ; int str[22][22] = {0}; printf("输入矩阵的大小: "); scanf("%d",&n); for(i=1;i<=n;i++) { for(j =1;j<=n;j++) { str[i][j] = -1; } } i=1; j=1; nn = n*n; for(t= 1;t<=nn;t++) { if(k==1) { if(str[i][j]==-1) { str[i][j++] = t; } else { k=2; ++i; --j; } } if(k==2) { if(str[i][j]==-1) { str[i++][j] = t; } else { k=3; --i; --j; } } if(k==3) { if(str[i][j]==-1) { str[i][j--]=t; } else { k=4; --i; ++j; } } if(k==4) { if(str[i][j]==-1) { str[i--][j]=t; } else { k=1; ++i; ++j; --t; } } } for(i = 1;i<=n;i++) { for(j =1;j<=n;j++) { printf("%-6d",str[i][j]); } printf("\n"); } getch(); }