Description
现在给出三个参数 n , c1 , c2 分别表示行数和两个符号,希望你打印出一个由 c1 和 c2 组成的图案,即从最内圈开始,交替使用 c1 和 c2 (即c1是中心点),并且最外圈的四个角是空的(需要输出空格)。
如图:即为n = 5 ,c1 = ‘A’ ,c2 = 'B’时的图案。
Input
输入包含三个参数,分别为 n , c1 , c2 ,分别表示图案的行数和符号c1,c2.(1<=n<=60,且n为奇数)
Output
对应的图案
Sample Input
1 A B
Sample Output
A
HINT
这题是从中间向外扩散,开始思维有点难想,一旦看懂了 就很简单了。
Code:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
char c1,c2;
scanf("%d %c %c",&n,&c1,&c2);
if(n==1)
{
printf("%c\n",c1);
return 0;
}
char x[65][65];
memset(x,c2,sizeof(x));
int m=n/2+1;
x[m][m]=c1;
for(int k=0;k<m;k+=2)
{
for(int i=m-k;i<=m+k;i++)
x[i][m-k]=x[i][m+k]=c1;
for(int j=m-k+1;j<m+k;j++)
x[m-k][j]=x[m+k][j]=c1;
}
for(int i=1;i<=n;i++)
{
if(i==1||i==n)
{
printf(" ");
for(int j=1;j<n-1;j++) printf("%c",x[i][j]);
printf(" ");
}
else
{
for(int j=1;j<=n;j++) printf("%c",x[i][j]);
}
printf("\n");
}
return 0;
}