题目描述
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
*****
***
*
***
*****
20分,梦开始的地方,特此留念
现在写不觉得什么,但确确实实充满着回忆
C++
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
char ch;
cin >> n >> ch;
int s = 1, idx = 3, cnt = 0;
while (n > s) {
s += idx * 2;
idx += 2;
cnt++;
}
if (cnt) {
idx -= 2;
s -= idx * 2;
}
int left = n - s;
for (int i = cnt; i > 0; i--) {
for (int j = 0; j < cnt - i; j++) cout << ' ';
for (int j = 0; j < (2*i-1); j++) cout << ch;
cout << endl;
}
for (int i = 1; i < cnt; i++) {
for (int j = 0; j < cnt - i - 1; j++) cout << ' ';
for (int j = 0; j < 2*i+1; j++) cout << ch;
cout << endl;
}
if (left == 0) cout << ch << endl;
cout << left << endl;
return 0;
}