2024年4月22日发(作者:)
打印n行星号沙漏
题目描述
陈老师需要打印输出一个沙漏符号,请你用c++编一个程序帮陈老师打印
一个沙漏符号。。
n=3的图形如下所示:
***
*
***
n=5的图形如下所示:
*****
***
*
***
*****
输入
一个整数n,符号的行数(保证n是大于1的奇数)。
输出
沙漏符号,使用“*”打印
分析
1.把打印结果看成由上,下两部分组成
(1)上面部分3行,可以理解为n/2+1
(2)下面部分2行,可以理解为n/2
2.上面的图形看成由1号、2号等2个三角形组成;1号、2号三角形看成
是独立的三角形,每行输出每种三角形每行字符的个数即可。
2
1
n=5 x=n/2+1=3
行数i
1
2
3
1~x
1号空白三角形
无
1
2
i-1
2号星形三角形
5
3
1
n-2*i+2
3.下面的图形看成由1号、2号等2个图形组成;1号、2号图形看成是独
立的图形,每行输出每种图形每行字符的个数即可。
1
2
n=5 x=n/2+1=3
行数i
1
2
1~x-1
1号空白三角形
1
0
x-1-i
2号图形
3
5
2*i+1
代码
#include
using namespace std;
int main(){
int n,i,j,k,x;//k表示空格的数量
cin>>n;
x=n/2+1;//上面部分图形的行数(比下面部分图形多一行)
for(i=1;i<=x;i++){//输出上面x行的图形
for(k=1;k<=i-1;k++){//首先输出每一行空格的数量
cout<<" ";
}
for(j=1;j<=n-2*i+2;j++){//然后输出每一行*号的数量
cout<<"*";
}
cout< } for(i=1;i<=x-1;i++){//输出下面x-1行的图形 for(k=1;k<=x-1-i;k++){//首先输出每一行空格的数量 cout<<" "; } for(j=1;j<=2*i+1;j++){//然后输出每一行*的数量 cout<<"*"; } cout< } }


发布评论