思路很清晰,找到第一个该是什么,然后一次一轮回,走n次即可
还有就是注意输出格式
#include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; char a[8001][8001]; int main() { int n,i,j; char x;int m=1; while(scanf("%d",&n)!=EOF) { getchar(); char ch1,ch2; scanf("%c",&ch1); getchar(); scanf("%c",&ch2); if(m!=1) printf("\n"); m++; if(n==1) printf("%c\n",ch1); else { int t=n,k=1; char x1,y; if((t-1)/2%2==1)// ch1 zhongxin 我是从外往里走,找第一个 { x1=ch2; y=ch1; } else { x1=ch1; y=ch2; } while(t>=0) //每次走一圈 { if(t%2==1) x=x1; else x=y; j=k;i=k; for(i=k;i<=t;i++) { a[i][j]=x; a[i][t]=x; a[t][i]=x; a[j][i]=x; } k++; t--; } a[1][n]=' '; a[n][1]=' '; a[1][1]=' '; a[n][n]=' '; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%c",a[i][j]); printf("\n"); } //printf("\n"); } } return 0; }