题目描述
赵老师最近在编一个操作系统,正好编到鼠标的繁忙状态,需要一个沙漏符号,正好大家都在学 C++ ,你的任务就是帮赵老师编一个程序打印一个沙漏符号。
输入
一个整数 n ,符号的行数(保证 n 是大于 1 的奇数)。
输出
沙漏符号,使用 * 打印。
样例
输入
5
输出
*****
***
*
***
*****
解题思路
1)先明确输入输出有几个,这里输入只有1个,是int类型,每行输出是由空格和星号组成
2)分析沙漏图案,发现是一个对称图形,打印这种图案我们需要先分为上下两部分,这里可以把第3行划分到上面部分也可以划分到下面部分
3)理清楚上半部分的行数:n/2+1,下半部分的行数:n/2
4)找到这个图案的规律,规律如下:
代码实现
#include <bits/stdc++.h>
using namespace std;
/*
思路:
第1行:0个空格 5个星
第2行:1个空格 3个星
第3行:2个空格 1个星
*/
int main(){
int n;
cin>>n;
//打印前一半图案
for(int i = 1;i<=n/2+1;i++){
//打印空格
for(int j = 1;j <= i-1;j++){
cout<<" ";
}
//打印星号
for(int j = 1;j <= ((n/2+1)-i)*2+1;j++){
cout<<"*";
}
cout<<endl;
}
//打印后一半图案
for(int i = 1;i <= n/2;i++){
for(int j = 1;j <= n/2-i;j++){
cout<<" ";
}
for(int j = 1;j <= 2*i+1;j++){
cout<<"*";
}
cout<<endl;
}
return 0;
}
标签:个星,cout,沙漏,int,打印,1073,空格
From: https://blog.csdn.net/qq_41611106/article/details/142496984