解题思路:从中心点开始,定出每圈的左上角坐标,根据左上角坐标定位出一圈的点
代码:
#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; }