输出填充后的矩阵,每个数字占4位。
AC代码如下:
#include<stdio.h> int fillmatrix(int mat[10][10],int size,int num,int offset,int a) { int i; if(size==1) mat[a/2][a/2]=a*a; else { for(i=0;i<size-1;i++) { mat[offset+i][offset]=num+i; mat[offset+size-1][offset+i]=num+size-1+i; mat[offset+size-1-i][offset+size-1]=num+2*(size-1)+i; mat[offset][offset+size-1-i]=num+3*(size-1)+i; fillmatrix(mat,size-2,num+4*(size-1),offset+1,a); }//递归填充内核;(小了一圈的矩阵) } return mat[offset][offset]; } int main() { int size,i,j,a; int mat[10][10]; while(scanf("%d",&size)!=EOF) { a=size; int offset=0; int num=1; fillmatrix(mat,size,num,offset,a); for(i=0;i<size;i++) { for(j=0;j<size;j++) printf("M",mat[i][j]); printf("\n"); } } return 0; }