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

  例如打印

                 

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

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

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

    

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

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

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

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

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

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

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

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

  整个程序代码为:

 #include <iostream>

 using namespace std;

 int main()
{
for (int i=; i<; i++)
{
for (int j=; j<; j++)
{
i < j ? cout<<" " : cout<<"*";
}
cout<<"\t"; for (int j=; j<; j++)
{
i + j > ? cout<<" " : cout<<"*";
}
cout<<"\t"; for (int j=; j<; j++)
{
i > j ? cout<<" " : cout<<"*";
}
cout<<"\t"; for (int j=; j<; j++)
{
i + j < ? cout<<" " : cout<<"*";
}
cout<<endl;
}
return ;
}

  运行效果:

并排打印多个图案(C++实现)的更多相关文章

  1. 题目:python 打印出如下图案(菱形):

    # 题目:打印出如下图案(菱形): # # * # *** # ***** # ******* # ***** # *** # * nu = 1 # 开始值 k = 2 # 变量值 while nu ...

  2. C语言控制台打印3D爱心图案

    非常多程序猿都认为自己的编程工作十分的鼓噪乏味.一整天面对的都是一些写不完的代码和改不完的Bug.今天我们要给大家分享一些有趣的C语言代码,也许能够为你无聊的工作带来一丝乐趣. 这些代码能够完毕几个不 ...

  3. 给工作添点乐趣--- 为Idea编译时打印图案

    控制台输出图案--banner 之前用vs开发时,也可以自己设置编译时控制台打印出的图案,我们管它叫banner. 给idea设置banner 先见一下效果图 还有重磅的 好了.其实设置这个很简单.分 ...

  4. Java50道经典习题-程序19 输入行数打印菱形图案

    题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案   *  *** ************ *****  ***   *分析:先把图形分 ...

  5. JAVA 基础编程练习题19 【程序 19 打印菱形图案】

    19 [程序 19 打印菱形图案] 题目:打印出如下图案(菱形) *    ***  ************  *****    ***      * 程序分析:先把图形分成两部分来看待,前四行一个 ...

  6. Java例题_19 打印菱形图案

    1 /*19 [程序 19 打印菱形图案] 2 题目:打印出如下图案(菱形) 3 * 4 *** 5 ***** 6 ******* 7 ***** 8 *** 9 * 10 */ 11 12 /*分 ...

  7. java中如何打印规定图案? 举例说明

    9.4 print out the following pattern(打印图案). * *** ***** ******* ***** *** * 提示: 1)本题上面的图案和下面的图案是一样的.所 ...

  8. Springboot 系列(八)动态Banner与图片转字符图案的手动实现

    使用过 Springboot 的对上面这个图案肯定不会陌生,Springboot 启动的同时会打印上面的图案,并带有版本号.查看官方文档可以找到关于 banner 的描述 The banner tha ...

  9. 32. Springboot 系列(八)动态Banner与图片转字符图案的手动实现

    使用过 Springboot 的对上面这个图案肯定不会陌生,Springboot 启动的同时会打印上面的图案,并带有版本号.查看官方文档可以找到关于 banner 的描述 The banner tha ...

随机推荐

  1. 如何结合后台数据库 启动vue项目

    一:连接数据库 1. 点击打开后输入密码 2.查看数据库 show databases; 3.创建数据库 create database jd; 删除数据库 drop database jd; 4.使 ...

  2. asp实现网页浏览总数

    <% AlldayView=0 Set Rs=Server.CreateObject("Adodb.RecordSet") Sql="select * from v ...

  3. maven课程 项目管理利器-maven 3-2 maven自动建立目录骨架

    使用cmd创建maven目录的两种方式: 使用archetype插件 1 按照提示进行选择  步骤: a 进入指定目录 b mvn archetype:generate --创建项目目录 c ente ...

  4. SublimeText插件 : sass语法高亮

    安装 :sublime中安装sass插件和sass build插件  就可以高亮显示sass 步骤:安装 sass插件和sass build (安装过程不细说) 步骤2:打开.sass文件,进行以下设 ...

  5. css float布局--右侧上部固定下部自适应大小

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. HTML头部元素实例

    HTML head 元素 标签 描述 <head> 定义了文档的信息 <title> 定义了文档的标题 <base> 定义了页面链接标签的默认链接地址 <li ...

  7. Android AS升级3.1 编译报错:The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin.

    AndroidStudio升级到3.1后编译报错:The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plug ...

  8. python3线程介绍01(如何启动和调用线程)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import osimport time,randomimport threading # 1-进程说明# 进程 ...

  9. linux上传、下载文件rz、sz命令

    1.介绍 sz命令是利用ZModem协议来从linux服务器传送文件到本地,一次可以传送一个或多个文件.相对应的从本地上传文件到Linux服务器,可以使用rz命令. 2.参数说明 -a,以文本方式传输 ...

  10. kinectV2平面检测

    最近做一个关于kinect的东西,主要是在RGB图上提取指定的平面.对于kinect也是刚刚接触不是很熟悉,捣鼓了两天做了很粗糙的东西,但是也学到了一些东西,所以记录一下. 思路大概就是: 在RGB中 ...