题目描述:
创建一个m行n列的数组,将1—m*n的数字螺旋填入
方向为右下左上
输入说明:
输入正整数m和n,以空格分隔
输出说明:
输出填好的数组,数组元素之间用空格分隔,数组每行之间以换行分隔
输入示例:
4 5
输出示例:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
话不多说上代码:(小白刚学了一学期的C语言,可能有不足之处,请大佬多多指教~)
#includeint main(){ int m,n,t; int a2,b2,a1=0,b1=0;//a1,b1:正着的行 ,a2,b2:倒着的行 int c1,c2,d1,d2;//c1,d1:右边的列 c2,d2:左边的列 scanf("%d %d",&m,&n); a2=m-1; b2=n-2; c1=1; c2=m-2; d1=n-1; d2=0; int i,j,count=1,num[100][100]; for(i=1;count<=m*n;i++){ //行: if(i%2==1){ //正着的行: if((i-1)%4==0){ t=b1; for(j=1;j<=n-i/2;j++){ num[a1][t++]=count++; } a1++; b1++; } //倒着的行: else { t=b2; for(j=1;j<=n-i/2;j++){ num[a2][t--]=count++; } a2--; b2--; } } //列: else{ //右边的列: if(i%4!=0){ t=c1; for(j=1;j<=m-i/2;j++){ num[t++][d1]=count++; } c1++; d1--; } //左边的列: else{ t=c2; for(j=1;j<=m-i/2;j++){ num[t--][d2]=count++; } c2--; d2++; } } } for(i=0;i



