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

  运行效果:

最新文章

  1. Java程序员的日常 —— 《编程思想》持有对象
  2. 使用J2SE API读取Properties文件的六种方法
  3. Java GUI 画点
  4. bootstrap布局两列或者多列表单
  5. SDL实现按钮
  6. Android手机适配——UI图片适配
  7. Caffe : Layer Catalogue(2)
  8. js 倒计时 已过去时间
  9. Myeclipse 2014配置SVN详细图解
  10. 嵌入jetty到Java代码
  11. Linux命令语句秘籍
  12. Spring Security 集成 CAS(基于HTTP协议版本)
  13. http 缓存学习.
  14. 记一次nmap扫描信息收集过程
  15. javascript捕获页面窗口关闭事件
  16. [CF1060F]Shrinking Tree[树dp+组合计数]
  17. bzoj千题计划192:bzoj1569: [JSOI2008]Blue Mary的职员分配
  18. 【leetcode 简单】 第一百一十一题 可怜的小猪
  19. C#.NET常见问题(FAQ)-找不到类型或命名空间名称“ManagementBaseObject”怎么办
  20. java基础第7天

热门文章

  1. Qmake 配置自定义编译过程
  2. MySQL如何查询当月数据
  3. js获取省市
  4. 链表例题2:链表的倒数第k个节点是多少
  5. xmlDemo4j解析
  6. 构建web应用
  7. 正则表达式 \w \d 的相关解读
  8. centos6.5_64bit_tomcat7开机自启
  9. 使用nodejs创建加入用户验证的websocket服务
  10. 332. Reconstruct Itinerary (leetcode)