如何生成一个旋转矩阵数组 发表于 2018-01-23 | 分类于 算法 | | 阅读次数 要求就是输入一个整数N,输出一个N*N的矩阵,该矩阵是一个顺时针螺旋矩阵。废话不多说直接码代码(C语言)。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include <stdio.h>#define N 100// 输入一个介于1到100之间的一个整数int scanNum(){ int num; do{ printf("Please enter a number: "); scanf("%d",&num); if (num<=0||num>N){ printf("please enter a true number.Just between 0 to 100.\n"); } }while(num<=0||num>N); return num;}// 递归,核心void funArray(int a[N][N],int num){ int i=0; int j=0; // static这个非常重要,如果没有就不能做到m,n的增加 static int n=0; static int m=1; // 输出最上面的行 for(i=n;i<num-n;i++) { a[n][i]=m++; } // 输出最右侧的列 for(j=n+1;j<num-n;j++) { a[j][num-n-1]=m++; } // 输出最底部的行 for(i=num-n-2;i>=n;i--) { a[num-n-1][i]=m++; } // 输出最左侧的列 for(j=num-n-2;j>=n+1;j--) { a[j][n]=m++; } n++; if(n<=num/2) { funArray(a,num); }}void printArray(int a[N][N],int num){ int i,j; for(i=0;i<num;i++){ for(j=0;j<num;j++){ printf("%4d",a[i][j]); } printf("\n"); }}int main(int argc, const char * argv[]) {{ int a[N][N]={0}; int num=scanNum(); funArray(a,num); printArray(a,num); return 0;} 当输入6时的运行结果: 扩展阅读 如何顺时针螺旋输出矩阵数组 欢迎您扫一扫上面的微信公众号,订阅我的博客! 如果你觉得我的文章还不错,欢迎打赏~ 赏 微信打赏 支付宝打赏