您好,欢迎访问三七文档
螺旋矩阵问题(C语言实现)问题:输入矩阵的行列数,生成螺旋矩阵,比如输入56,生产矩阵:#includestdio.h#defineM100voidRataterArray(intarray[M][M],introws,intcols){intregcount=rows%2==0?rows/2:(rows+1)/2;//regcount为矩形个数intseedNum=1;//seedNum初值for(inti=0;iregcount;i++)//为每层矩形赋值{for(introw=0;rowrows;row++){for(intcol=0;colcols;col++){//矩形的上边横线if(row==i&&array[row][col]==-1){array[row][col]=seedNum-i+col;}//矩形的右边横线if(col==(cols-i-1)&&array[row][col]==-1){array[row][col]=seedNum+(rows-2*i)+(cols-2*i)-2-(rows-i-1-row);}//矩形的下边横线if(row==(rows-1-i)&&array[row][col]==-1){array[row][col]=seedNum+(rows-2*i)+(cols-2*i)-2+(cols-i-1-col);}//矩形左边竖线if(col==i&&array[row][col]==-1){array[row][col]=seedNum+(rows-2*i)+(cols-2*i)-2+(cols-i*2)-1+(rows-i-1-row);}}}seedNum=(rows-2*i+cols-2*i)*2-4+seedNum;//矩形的尾值作为内含矩形的seedNum初始值}}voidmain(){intarray[M][M];//分别为数组的行和列introws,cols;printf(请输入螺旋数组的行数和列数:);scanf(%d%d,&rows,&cols);//初始化数组为-1for(inti=0;irows;i++){for(intj=0;jcols;j++){array[i][j]=-1;}}//螺旋数组赋值函数RataterArray(array,rows,cols);printf(打印螺旋数值如下:\n);for(i=0;irows;i++){for(intj=0;jcols;j++){printf(%4d,array[i][j]);}printf(\n);}}运行效果:
本文标题:螺旋矩阵(C语言)
链接地址:https://www.777doc.com/doc-4905106 .html