Description
现在给出三个参数 n , c1 , c2 分别表示行数和两个符号,希望你打印出一个由 c1 和 c2 组成的图案,即从最内圈开始,交替使用 c1 和 c2 (即c1是中心点),并且最外圈的四个角是空的(需要输出空格)。
Input
输入包含三个参数,分别为 n , c1 , c2 ,分别表示图案的行数和符号c1,c2.(1<=n<=60,且n为奇数)
Output
对应的图案
Sample Input
1 A B
Sample Output
A
注释:我是从最外圈开始排,所以要讨论一下最外层是c1还是c2,画图之后会发现n为1,5,9……时为c1。
代码:
#include<bits/stdc++.h>
using namespace std;
char a,b;
char s[100][100];
int n;
void word(int c,char x){
for(int i=c;i<=n-c+1;i++){
s[c][i]=x;
s[n-c+1][i]=x;
s[i][c]=x;
s[i][n-c+1]=x;
}
}
int main(){
while(~scanf("%d %c %c",&n,&a,&b)){
int t=1;
int m=n;
if((n-1)%4==0){
while(m--){
if(t%2==0){
word(t,b);
}
else word(t,a);
t++;
}
}
else{
while(m--){
if(t%2==1){
word(t,b);
}
else word(t,a);
t++;
}
}
if(n!=1)s[1][1]=' ',s[1][n]=' ',s[n][1]=' ',s[n][n]=' ';
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%c",s[i][j]);
}
printf("\n");
}
}
}