1.编程,打印如下所示的图形
【解析】
对于这个图形首先我们通过观察可以发现这是一个对称的图形,以中间为对称轴,从上面看图形是依次递增,然后对称轴下面的图形是依次递减,所以我们可以分2部分来实现这个功能。
>打印上半部分,首先我们不管格式先把前四行的图形输出如下所示
这显然是通过循环来控制的,第一次循环输出一个*,然后是三个*......
这样我们可以写出下面的代码
#include<iostream>
using namespace std;
int main() {
for(int i=1; i<=4; i++) {
for(int k=1; k<=2*i-1; k++) {
cout<<"*";
}
cout<<endl;
}
}
>其次我们就要来输出它的格式了下面我们通过一张图来分析这个格式
可以看到第一行距离黑色的墙壁有3个空格,第二行2个,第三行1个,第四行0个。那么我们可以通过循环来控制这些空格的输入,比如有四行第一行就是4-i,i从1开始,代码如下
for(int i=1; i<=4; i++) {
for(int j=1; j<=4-i; j++) {
cout<<" ";
}
for(int k=1; k<=2*i-1; k++) {
cout<<"*";
}
cout<<endl;
}
>接下来我们就要处理下半部分的图形,可以看到,下半部分的图形从5个*逐渐变为3个*一个*,显然要输出这个图形就是要输出3行,所以我们可以这样写
for(int i=1; i<=3; i++) {
for(int k=1; k<=i; k++) {
cout<<" ";
}
for(int j=1; j<=7-2*i; j++) {
cout<<"*";
}
cout<<endl;
}
当然这里的空格输出与上面的相反了,所以我们按照上面的写法就可以了。
【完整代码】
#include<iostream>
using namespace std;
int main() {
for(int i=1; i<=4; i++) {
for(int j=1; j<=4-i; j++) {
cout<<" ";
}
for(int k=1; k<=2*i-1; k++) {
cout<<"*";
}
cout<<endl;
}
for(int i=1; i<=3; i++) {
for(int k=1; k<=i; k++) {
cout<<" ";
}
for(int j=1; j<=7-2*i; j++) {
cout<<"*";
}
cout<<endl;
}
}
【运行结果】