又是图形输出题。
找规律代码如下。
int main()
{
int T;
cin>>T;
while(T--)
{
int a,b;
cin>>a>>b;
for(int k=0;k<b;k++)
{
for(int i=0;i<a/2;i++)
{
for(int j=0;j<i;j++) cout<<' ';
cout<<'X';
for(int j=0;j<a-2*(i+1);j++) cout<<' ';
cout<<'X';
cout<<endl;
}
for(int i=0;i<a/2;i++) cout<<' ';
cout<<'X';
cout<<endl;
for(int i=0;i<a/2-1;i++)
{
for(int j=0;j<a-2*(i+2);j++) cout<<' ';
cout<<'X';
for(int j=0;j<i*2+1;j++) cout<<' ';
cout<<'X';
cout<<endl;
}
}
cout<<'X';
for(int i=0;i<a-2;i++) cout<<' ';
cout<<'X';
cout<<endl<<endl;
}
//system("pause");
return 0;
}
观察到字符全在对角线上的特殊性质,简化代码如下。
const int N=40;
char s[N];
int main()
{
for(int i=0;i<N;i++) s[i]=' ';
int T;
cin>>T;
while(T--)
{
int n,m;
cin>>n>>m;
for(int k=0;k<m;k++)
{
for(int i=0;i<n-1;i++)
{
s[i]=s[n-1-i]='X';
s[n]=' ';
puts(s);
s[i]=s[n-1-i]=' ';
s[n]=' ';
}
}
s[0]=s[n-1]='X';
s[n]=' ';
puts(s);
s[0]=s[n-1]=' ';
s[n]=' ';
puts("");
}
//system("pause");
return 0;
}