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

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

  例如打印 

                        

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

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

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

       

    

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

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

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

     for (int i=0; i<10; i++)
     {
         for (int j=0; j<i; j++)
         {
             cout<<"*";
         }
         cout<<endl;
     }


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

     for (int i=0; i<10; i++)
     {
         for (int j=0; j<10; j++)
         {
             if (i < j)
                 cout<<" ";
             else
                 cout<<"*";
         }
         cout<<endl;
     }

 

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

 

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

  整个程序代码为:

  #include <iostream>
  
  using namespace std;
  
  int main()
  {
      for (int i=0; i<10; i++)
      {
          for (int j=0; j<10; j++)
         {
             i < j ? cout<<" " : cout<<"*";
         }
         cout<<"\t";
 
         for (int j=0; j<10; j++)
         {
             i + j > 9 ? cout<<" " : cout<<"*";
         }
         cout<<"\t";
 
         for (int j=0; j<10; j++)
         {
             i > j ? cout<<" " : cout<<"*";
         }
         cout<<"\t";
 
         for (int j=0; j<10; j++)
         {
             i + j < 9 ? cout<<" " : cout<<"*";
         }
         cout<<endl;
     }
     return 0;
 }

  运行效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐秀_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值