11 B A 5 @ W
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
题意明确,就是打印图案,最中间的字母是第一个字母,但是该题目很坑,坑一:每组数据之间多有一个换行;坑儿:右上角和右下角必须是空格;
代码是一圈一圈控制的,简单明了!
#include <stdio.h> #include <string.h> char a[80][80]; char c,d,e; int n; void f(int v) { int i,j; char t; if(v%2==1) t=c; else t=d; for(i=v;i<=n+1-v;i++) { a[i][v]=t; a[i][n+1-v]=t; } for(j=v;j<=n+1-v;j++) { a[v][j]=t; a[n+1-v][j]=t; } } int main() { int i,j,t,k=1; while(scanf("%d %c %c",&n,&c,&d)!=EOF) { if(k!=1) printf("\n"); if(n==1) { printf("%c\n",c); continue; } t=n/2+1; if(t%2==0) { e=c;c=d;d=e; } for(i=1;i<=t;i++) f(i); a[1][n]=a[1][1]=a[n][1]=a[n][n]=' '; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%c",a[i][j]); printf("\n"); } k++; } }