输入
测试样例有多组
输入的第一行包括了一个整数T(1 <= T <= 10),代表测试样例组数
每组测试样例输入一个整数n(1 <= n <= 10),代表发出的图案'x'的规模
输出
3
1
2
3
x x\n
x\n
x x\n
END\n
x x\n
x x\n
x\n
x x\n
x x\n
END\n
x x\n
x x\n
x x\n
x\n
x x\n
x x\n
x x\n
END\n
对于每组测试样例,根据整数n输出规模为n的图案'x'(小写x),其后输出一行"END"(不带引号)
规模n与图案'x'的对应规律请在样例输入输出中找出
#include<stdio.h>
int main(void)
{
int n,m,i,j,k,t,b;
scanf("%d",&m);
//测试样本数
for(b=1;b<=m;b++)
{
scanf("%d",&n);
t=n+1;
//测试行数
for(i=1;i<=n+t;i++)
{
//采取分两步考虑的策略,正向循环1~n
if(i>=1&&i<=n)
{
//第一个空格0 1 0,01 2 10,012 3 210
for(j=1;j<=i-1;j++)//容易发现,从0开始每次加一,而i从1开始
{
printf(" ");
}
//输出x
printf("x");
//第二个空格1 0 1,31 0 13,531 0 135
for(k=1;k<=((t-i)*2)-1;k++)//规律:与中间数的距离为y,则为2*y-1
{
printf(" ");
}
//换行
printf("x\n");
}
else if(i==n+1)//中间数
{
for(j=1;j<=n;j++)
{
printf(" ");
}
printf("x\n");
}
else//逆向观察
{
//第一次空格0 1 0,01 2 10,012 3 210
for(j=i;j<n+t;j++)//空格数即与中间数的距离y-1(i已经为t+1)(中间不带等号)
{
printf(" ");
}
printf("x");
//第二次空格1 0 1,31 0 13,531 0 135,7531 0 1357
for(k=1;k<(i-t)*2;k++)//空格数即与中间数的距离2*y-1(所以k<而不是<=)
{
printf(" ");
}
printf("x\n");
}
}
printf("END\n");
}
return 0;
}