分析:在遇到这样的题时,应该细心,应该分成三部分去考虑。找出各行规律。
在看其他人代码时,有直接在一个int a[][] 数组中赋值为" ",然后直接规律位置赋值X。这也是个不错的方法。
#include <iostream>
#include <algorithm>
#include <map>
#include <string> #没有这行会报错
using namespace std;
int main() {
int n;
int a;
cin >> n;
while (n--){
cin >> a;
for(int i=1;i<=a/2;i++){ //上半部分
for(int j=1;j<i;j++){
cout << " ";
}
cout << "X";
for(int k=1;k<=a-i*2;k++){
cout << " ";
}
cout << "X";
cout <<endl;
}
for(int j=1;j<=a/2;j++){ //中间部分
cout <<" ";
}
cout << "X";
cout <<endl;
for(int i=1;i<=a/2;i++){ //下半部分
for(int j=1;j<=a/2-i;j++){
cout << " ";
}
cout << "X";
for(int j=1;j<=2*i-1;j++){
cout << " ";
}
cout << "X";
cout <<endl;
}
cout << endl;
}
return 0;
}