这个题不是很难,但是格式容易出错。正确的格式是:第一个输出前面不空行,后面的每个前空一行。
Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A 5 @ W
Sample Output
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@@@@
#include<iostream> #include<cstdio> int main() { int t,x,flag,i,j; char s[100][100],s1,s2,ss; int m=0; while(scanf("%d %c %c",&t,&s1,&s2)!=EOF) { if(m!=0) printf("\n"); if(t==1) { printf("%c\n",s1); } else{ x=t/2; s[x][x]=s1; ss=s2; i=1; while(i!=x+1) { for(j=-i;j<=i;j++) { s[x-i][x+j]=ss; } for(j=-i;j<=i;j++) { s[x+i][x+j]=ss; } for(j=-i+1;j<i;j++) { s[x+j][x+i]=ss; } for(j=-i+1;j<i;j++) { s[x+j][x-i]=ss; } i++; if(ss==s1) { ss=s2; } else{ ss=s1; } } for(i=0;i<t;i++) { for(j=0;j<t;j++) { if((i==0&&j==0)||(i==t-1&&j==t-1)||(i==0&&j==t-1)||(i==t-1&&j==0)) { printf(" "); } else{ printf("%c",s[i][j]); } } printf("\n"); } } m=1; } return 0; }