>须要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作如今要让计算机来完毕,得看你的了。输入是一个个的三元组,各自是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Output
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
#include <stdio.h>
#include <stdlib.h>
int array[81][81];//数组存图
void deal(int n,char inside,char out)
{
if(n==1){
printf("%c\n",inside);
return;
}
char a[2];
a[0]=inside;
a[1]=out;
char now=a[n/2%2];//初始值为最外圈的字符
for(int i=1;i<=n/2;i++){//由外到内填图
int j;
for(j=i;j<=n-i+1;j++)//四个for循环,填一圈,可以简化
array[i][j]=now;
for(j=i;j<=n-i+1;j++)
array[n-i+1][j]=now;
for(j=i;j<=n-i+1;j++)
array[j][i]=now;
for(j=i;j<=n-i+1;j++)
array[j][n-i+1]=now;
if(now==inside)
now=out;
else
now=inside;
}
array[n/2+1][n/2+1]=inside;//正中间字符
array[1][1]=' ';//去角
array[n][1]=' ';
array[1][n]=' ';
array[n][n]=' ';
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%c",array[i][j]);
printf("\n");
}
return;
}
int main()
{
int n;
char inside,out;
int flag=0;
while(scanf("%d %c %c",&n,&inside,&out)!=EOF){
if(flag==1)
printf("\n");
else
flag=1;
deal(n,inside,out);
}
return 0;
}