放大的X
时间限制: 1S类别: 循环结构->中等
晚于: 2022-12-08 23:55:00后提交分数乘系数50%
问题描述 :
请你编程画一个放大的’X’。
如2*2的’X’应如下所示:
XX
XX
5*5的’X’如下所示:
X X
X X
X
X X
X X
输入说明 :
输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正数n(2 <= n <= 80),表示放大的规格。
输出说明 :
对于每一个n打印一个规格为n * n放大的’X’;每组输出后面空一行。
注意:每一行输出的字符X为大写的'X',第一行的最前与最后都无空格,每行的最后都无空格。
输入范例 :
3
2
5
8
输出范例 :
XX
XX
X X
X X
X
X X
X X
X X
X X
X X
XX
XX
X X
X X
X X
#include<iostream>
using namespace std;
int main() {
int n;
while (cin >> n) {
for (int i = 1; i <= n; i++) {
int m;
cin >> m;
if (m % 2 == 1) {
for (int i = 1; i <= m; i++) {
if (i <= m / 2 + 1) {
for (int j = 2; (j <= i); j++) {
cout << " ";
}
if (i != m / 2 + 1) {
cout << "X";
}
for (int k = m - i * 2; k >= 1; k--) {
cout << " ";
}
cout << "X" << endl;
}
else {
for (int j = m - i; j >= 1; j--) {
cout << " ";
}
cout << "X";
for (int j = 1; j <= 2 * (i - (m / 2 + 1) - 1) + 1; j++) {
cout << " ";
}
cout << "X" << endl;
}
}
}
else {
for (int i = 1; i <= m; i++) {
if (i < m / 2 ) {
for (int j = 2; j <= i; j++) {
cout << " ";
}
cout << "X";
for (int k = m - i * 2; k >= 1; k--) {
cout << " ";
}
cout << "X" << endl;
}
else if (i==m/2 ||i==m/2+1) {
for (int j = 1; j < m / 2; j++) {
cout << " ";
}
cout << "XX" << endl;
}
else {
for (int j = m - i; j >= 1; j--) {
cout << " ";
}
cout << "X";
for (int j = 1; j <= 2 * (i -m/2-1); j++) {
cout << " ";
}
cout << "X" << endl;
}
}
}
cout << endl;
}
}
return 0;
}