zoukankan      html  css  js  c++  java
  • 并排打印多个图案(C++实现)

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

      例如打印 

                            

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

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

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

           

        

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

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

      比如打印(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     }

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

     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<<"	";
    14 
    15         for (int j=0; j<10; j++)
    16         {
    17             i + j > 9 ? cout<<" " : cout<<"*";
    18         }
    19         cout<<"	";
    20 
    21         for (int j=0; j<10; j++)
    22         {
    23             i > j ? cout<<" " : cout<<"*";
    24         }
    25         cout<<"	";
    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 }

      运行效果:

  • 相关阅读:
    省市区选择器
    查找算法 分享1:顺序查找
    查找算法 分享2:折半(二分)查找
    编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。
    查找算法 分享3:分块查找
    NSMutableDicitionary 的setValue和setObject的区别
    查找算法 分享4:哈希查找
    玩转博客园的5个小技巧
    WCF读书笔记安全:基础知识(身份验证、授权、传输安全)
    北京的房价
  • 原文地址:https://www.cnblogs.com/henuzyx/p/8497147.html
Copyright © 2011-2022 走看看