3樣例輸出7 8 16 9 25 4 3#include <stdio.h>int main(){ int n,i,j,y,z,m,a,b,x=1; scanf("%d",&n); int Sz[n][n]; if(n%2!=0)//如果是奇數方陣,就率先賦值中心下標數組值 Sz[n/2][n/2]=n*n; a=0;b=n-1;y=n-1,z=n-1; m=n/2; while(m--){ //0~m-1,m表示遍歷的圈數 i=a;j=b; for(;i<y;i++,x++){ //z表示遍歷每圈需要遍歷的行or列數;i,j表示每圈最右上角數組下標 Sz[i][j] = x; Sz[j][n-1-i] = x+z; Sz[n-1-i][j-z] = x+2*z; Sz[j-z][i] = x+3*z; } a++; b--; x+=3*z; //x表示每圈最右上角的真值 y--; //y--因為有i++,相當于范圍-=2; z-=2; } for(i=0;i<n;i++){ for(j=0;j<n;j++) PRintf("%d ",Sz[i][j]);//printf("%-4d",Sz[i][j]); printf("/n"); } return 0;}
新聞熱點
疑難解答