题目介绍:
·出处:信友队 3576
·题目:
解决思路:
这种输出图像的题,都先分析行数以及行间关系(大框架),再分析每行的特点(细节)。
1)分析大框架
特点:一共有n行"人",每行有n个"人"。(先以O为"人")
#include <iostream>
int main() {
int n;
std::cin >> n;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
std::cout << "O";
}
std::cout << std::endl;
}
return 0;
}
2)分析细节
·每行第一个O前隔4*(n-i)+1个空格,而/|\和/ \前隔4*(n-i)个空格
·同行两个O(/|\、/ \)相隔的空格相同
#include <iostream>
int main() {
int n;
std::cin >> n;
for(int i = 1; i <= n; i++) {
//输出第一个O前空格;
for(int j = 1; j <= 4 * (n - i) + 1; j++) std::cout << " ";
//输出O;
for(int j = 1; j <= i; j++) {
if(j != 1) std::cout << " ";
std::cout << "O";
}
std::cout << std::endl;
//输出第一个/|\前空格;
for(int j = 1; j <= 4 * (n - i); j++) std::cout << " ";
//输出/|\;
for(int j = 1; j <= i; j++) {
if(j != 1) std::cout << " ";
std::cout << "/|\\";//注意'\'的输出
}
std::cout << std::endl;
//输出第一个/ \前空格;
for(int j = 1; j <= 4 * (n - i); j++) std::cout << " ";
//输出/ \;
for(int j = 1; j <= i; j++) {
if(j != 1) std::cout << " ";
std::cout << "/ \\";
}
std::cout << std::endl;
}
return 0;
}
最终也是成功“撒花”啦!