Problem 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
ABBBBBBBBBAAAAAAAAAA @@@
@WWW@
@W@W@
@WWW@@@@
代碼如下:
#include < iostream>
#include <cstdio>
using namespace std;
char s [100][100] ; //首先定義一個字符數組;
int main()
{char a,b;int n;int f=0;while(~scanf("%d %c %c",&n,&a,&b))//多組數據輸入n,a,b;{if(f) cout<< endl;//注意格式的輸入,首先,f=0,換行;/*cout<<endl 表示輸出換行的意思。endl=end of line換句話說就是讓屏幕上輸出的內容換行到下一行。 使用前需要使用#include<iostream>的頭文件,以及在對應的函數中寫入using namespace std或者std::endl;*/if(n==1)//如果只有一個,就輸出第一個字符a;{cout<< a<< endl;continue;//然后結束;}int x=n/2+1;//這里的x,為了確定字符數組`中間的`字符是什么;s[x][x]=a;//字符a,即為中間的字符;for(int i=1;i<=n/2;i++)//這里第一個for循環為了控制圈數,從里到外有幾圈;{for(int j=x-i;j<=x+i;j++)//第二個for循環控制每一圈;{if(i%2)s[x-i][j]=s[x+i][j]=s[j][x-i]=s[j][x+i]=b;elses[x-i][j]=s[x+i][j]=s[j][x-i]=s[j][x+i]=a;}}s[1][n]=s[1][1]=s[n][1]=s[n][n]=' ';//整個數組的四個角都為空格;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout << s[i][j];//以次輸出字符數組;}cout << endl;}f=1;//第二次不用換行;}return 0;
}