手机版
你好,游客 登录 注册
背景:
阅读新闻

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

[日期:2018-03-17] 来源:Linux社区  作者:henuzyx [字体: ]

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

运行效果:

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-03/151409.htm

linux
相关资讯       C++ 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款