并排打印多个图案(C++实现)

在练习循环控制语句时,经常会遇到一类问题:使用循环控制打印星号()来形成各种各样的图案,并强调所有的星号()都要用单条的输出语句cout<<"*";来打印。

例如打印

并排打印多个图案(C++实现)并排打印多个图案(C++实现) 并排打印多个图案(C++实现)

通常使用两个嵌套的for循环可以有效的解决此类问题。

不过,我们一般每次只打印一个图案,如何将不同图案的代码整合到一起,并排的打印多个图案呢?

例如:如何并排打印以下4个图案呢?

并排打印多个图案(C++实现)

首先,我们知道外层循环规定了行数,内层循环规定了列数。从上图中不难发现,整个图案的行数相同,通过在每一列打印星号(*)/ 空格来形成不同的图案,这就要求在操作每一行时,同时打印四个图案,所以程序应该有一个统一的外循环,内部依次有四个不同的内循环。

而且,为了控制小图案之前的距离,要把每一个小图案想象成一个整体。

比如打印(a)图案我们通常会使用如下方法

1     for (int i=0; i<10; i++)
2     {
3         for (int j=0; j<i; j++)
4         {
5             cout<<"*";
6         }
7         cout<<endl;
8     }

这样只打印星号(),图案实际上只是一个直角三角形,它每行与后面图案的间隔都不相同,所以我们在空白处补充空格,把图案变成一个1010的矩形(空白的部分有空格占位),代码如下:

1     for (int i=0; i<10; i++)
 2     {
 3         for (int j=0; j<10; j++)
 4         {
 5             if (i < j)
 6                 cout<<" ";
 7             else
 8                 cout<<"*";
 9         }
10         cout<<endl;
11     }

循环的条件完全相同,通过条件语句来控制每行星号和空格的数量,而且可以用三目运算符简化

i < j ? cout<<" " : cout<<"*";

整个程序代码为:

1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     for (int i=0; i<10; i++)
 8     {
 9         for (int j=0; j<10; j++)
10         {
11             i < j ? cout<<" " : cout<<"*";
12         }
13         cout<<"t";
14 
15         for (int j=0; j<10; j++)
16         {
17             i + j > 9 ? cout<<" " : cout<<"*";
18         }
19         cout<<"t";
20 
21         for (int j=0; j<10; j++)
22         {
23             i > j ? cout<<" " : cout<<"*";
24         }
25         cout<<"t";
26 
27         for (int j=0; j<10; j++)
28         {
29             i + j < 9 ? cout<<" " : cout<<"*";
30         }
31         cout<<endl;
32     }
33     return 0;
34 }

运行效果:

并排打印多个图案(C++实现)

原文链接: https://www.cnblogs.com/henuzyx/p/8497147.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/269775

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午8:42
下一篇 2023年2月14日 下午8:42

相关推荐