题解 | #圣诞树#
圣诞树
https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2
#include <iostream>
using namespace std;
//图形分块打印
void showpart1() {
cout << " * ";
}
void showpart2() {
cout << " * * " ;
}
void showpart3() {
cout << "* * * " ;
}
int main() {
int n, index;
while (cin >> n) {
for (int i = 0; i < 3 * n; i++) { //按行进行打印
index = i;
for (int j = 0; j < 3 * (n - 1 - i / 3); j++) cout << ' '; //对于每一行,可以计算出其 前面空格与圣诞树n之间的关系,先打印前面的空格
//进行打印图形的判断,当行数的尾数为0,打印第一个图案,以此类推
if (i % 3 == 0) {
for (int k = 0; k < i / 3 + 1; k++) //进行打印次数的判断,随着行数每增加3,打印的图案就多 一个
showpart1();
}
if (i % 3 == 1) {
for (int k = 0; k < i / 3 + 1; k++) {
showpart2();
}
}
if (i % 3 == 2) {
for (int k = 0; k < i / 3 + 1; k++) {
showpart3();
}
}
cout << endl;
}
//树柄
for(int i = 0; i < n;i++)
{
for(int j = 0; j < 3*n-1;j++)
{
cout <<' ';
}
cout << '*'<< endl;
}
return 0;
}
}

查看23道真题和解析
科大讯飞公司氛围 423人发布