排版题2

排版题2

排版题2

解题思路:从中心点开始,定出每圈的左上角坐标,根据左上角坐标定位出一圈的点

代码:

#include <stdio.h>

 int main(){
     char outBuf[80][80];//存放字符 
     char a,b;
     int n;
     while (scanf("%d %c %c",&n,&a,&b)==3){
         for(int i=0;i<=n/2;i++){
            int x = n/2+1, y = x;//中心坐标 
             x = x-i; y=x; //左上角坐标
             char c=a;
             if(i%2!=0) c=b; 
             for(int j=0;j<=2*i;j++){
                 outBuf[x+j][y]=c;//左边
                outBuf[x][y+j]=c;//上边
                outBuf[x+j][y+2*i]=c;//右边
                outBuf[x+2*i][y+j]=c;//下边 
             } 
         }
         if(n!=1){
             outBuf[1][1]=' ';
             outBuf[1][n]=' ';
             outBuf[n][1]=' ';
             outBuf[n][n]=' ';
         } 
         for(int i=1;i<=n;i++){
             for(int j=1;j<=n;j++){
                 printf("%c",outBuf[i][j]);
             }
             printf("
");
         }
     }
     return 0;
 }