C++ code:for loop designs
1 用for循环编出系列图形

该图形一共10行,每一行增加一个字符,所以应循环10次,每次输出一行。其循环模式为:
for(int i=;i<=;++i)
{
输出第i行
换行
}
我们注意到,每一行长度的变化正好与循环变量i同步,故可以依赖于i。我们注意到第i行的M字符数与i的关系:

所以可以得到“输出第i行”的循环为:
for (int j = ; j <= i; ++j)
cout << "M";
将内、外循环嵌套起来,得到完整代码如下:
#include<iostream>
using namespace std;
int main()
{
for (int i = ; i <= ; ++i)
{
for (int j = ; j <= i; ++j)
cout << "M";
cout << endl;
}
cin.get();
return ;
}
对于这种字符图形,一般用两重循环,外循环遍历所有行,内循环遍历行中每个字符。
输出结果如我们所料:

2 画出下列图案

按照上面的分析方法,一共10行,这次要考虑没行中,先输出若干个空格,所以其外循环为:
for(int i=;i<=;++i)
{
输出若干空格
输出若干M
换行
}
略加思考,列出在第i行,其空格数,M数与i的关系为:

即第i行的空格数为i-1个,M数为21-2i。即在第i行输出空格和输出M字符的内循环分别为:
for (int j = ; j <= i; ++j)
cout << " ";
for (int k = ; k <= - * i; ++k)
cout << "M";
合起来构成一个完整的程序如下:
#include<iostream>
using namespace std;
int main()
{
for (int i = ; i <= ; ++i)//控制行数
{
for (int j = ; j <= i; ++j)//输出每行空格数
cout << " ";
for (int k = ; k <= - * i; ++k)//输出每行M字符数
cout << "M";
cout << endl;
}
cin.get();
return ;
}
运行结果:

3 画出下列图形

按照上面的例子,得到相似的外循环形式:
for(int i=;i<=;++i)
{
输出若干空格
输出若干M
换行
}
若要输出A起头依序的n(n<27)个字母,我们可以:
for (int i = ; i <= n; ++i)
cout << 'A' + i - ;
或者
for (char ch = 'A'; ch < 'A' + n; ++ch)
cout << ch;
'A' + i - 1的值为整数,因为'A'是char(字符)类型,而i-1是整数类型,整数的表示范围大于字符,所以,结果的类型为整形。为了输出该整数所对应的字符,需要整数表达式做一下转换,转换的形式是将整数表达式括起来,前边加上要转成的类型名char。
知道了行中要输出的字符个数,就可以实现上面的图形了。现在我们还是从分析每一行中的空格数和字符数与第i行之间的关系着手:

即第i行的空格数为10-i个,字符数为2*i-1。因此,输出空格数和字符数的内循环分别为:
for (int j = ; j <= - i; ++j)
cout << " ";
for (char ch = 'A'; ch < 'A' + *i-; ++ch)
cout << ch;
合起来的完整代码为:
#include<iostream>
using namespace std;
int main()
{
for (int i = ; i <= ; ++i)
{
for (int j = ; j <= - i; ++j)
cout << " ";
for (char ch = 'A'; ch < 'A' + * i - ; ++ch)
cout << ch;
cout << endl;
}
cin.get();
return ;
}
运行结果:

C++ code:for loop designs的更多相关文章
- C++ code:More Loop Designs
1 逻辑判断 对于逻辑判断问题,一般都要考虑全部的可能性,然后从这些可能性中按条件逐一排查,直到最后获得某个结论. [百钱买百鸡问题] 问题描述: 雄鸡(cock)7元一只,母鸡(hen)5元一只, ...
- VS Code:让你工作效率翻倍的23个插件和23个编辑技巧
VS Code:让你工作效率翻倍的23个插件和23个编辑技巧 总结了一些平时常用且好用的 VS Code 的插件和编辑技巧分享出来. 文章详情可查阅我的博客:lishaoy.net ,欢迎大家访问. ...
- Windows could not set the offline local information.Error code:0X80000001解决方法
我的笔记本是联想Y460(白色) 昨天在重装系统的时候遇到如下错误:Windows could not set the offline local information.Error code:0X8 ...
- Code:Blocks 中文乱码问题原因分析和解决方法
下面说说修改的地方. 1.修改源文件保存编码在:settings->Editor->gernal settings 看到右边的Encoding group Box了吗?如下图所示: Use ...
- Libevent:4event loop
一:运行loop 一旦一些events在event_base注册之后(下一节会讨论如何创建和注册events),就可以使Libevent等待events,并且在events准备好时能够通知 ...
- HTML Standard系列:Event loop、requestIdleCallback 和 requestAnimationFrame
HTML Standard系列:Event loop.requestIdleCallback 和 requestAnimationFrame - 掘金 https://juejin.im/post/5 ...
- JavaScript 运行机制详解:Event Loop
参考地址:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 一.为什么JavaScript是单线程? JavaScript语言的一大特点就是 ...
- JavaScript:event loop详解
之前已经有两篇随笔提到了event loop,一篇是事件机制,一篇是tasks和microtasks,但是里面的event loop都是文字描述,很难说细,逻辑也只是简单的提了一遍.其实之前也是通过阮 ...
- VS Code:快捷方式
转于:vscode: Visual Studio Code 常用快捷键 博主:魚魚 更多操作参见官网:https://code.visualstudio.com/docs/getstarted/key ...
随机推荐
- HTML中的相对路径与绝对路径(转)
原文地址:http://www.cnblogs.com/heyonggang/archive/2013/03/01/2938984.html 在HTML里只要涉及文件的地方(如超级链接.图片等)就会涉 ...
- 决策树--信息增益,信息增益比,Geni指数的理解
决策树 是表示基于特征对实例进行分类的树形结构 从给定的训练数据集中,依据特征选择的准则,递归的选择最优划分特征,并根据此特征将训练数据进行分割,使得各子数据集有一个最好的分类的过程. ...
- 事件对象——event
一.介绍 把一个click时间log出来是这样的: { altKey:false, bubbles:true, button:0, buttons:0, cancelBubble:false, can ...
- 网络编程基础【day09】:解决socket粘包之大数据(七)
本节内容 概述 linux下运行效果 sleep解决粘包 服务端插入交互解决粘包问题 一.概述 刚刚我们在window的操作系统上,很完美的解决了,大数据量的数据传输出现的问题,但是在Linux环境下 ...
- sql server复制数据到excel格式变成字符串
sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...
- JAVA-大白话探索JVM-运行时内存(三)
前面章节 JAVA-大白话探索JVM-类加载器(一) JAVA-大白话探索JVM-类加载过程(二) JVM运行时内存 通过之前的章节,我们知道.class类如何加载到内存中,如图红框 开始讲讲内存空间 ...
- dragula 一个 JavaScript 库,实现了网页上的拖放位置
如图,把上面红蓝色拖放到下面 使用方法比较简单,如下代码: <link href='dist/dragula.css' rel='stylesheet' type='text/css' /> ...
- 百度编辑器 Ueditor 如何增加模板 ?
模板文件在这里: dialogs/template/config.js 参见:http://t.mreald.com/191 .
- spring注解第07课 @Valid和@Validated的总结区分
@Valid: @Valid注解用于校验,所属包为:javax.validation.Valid. ① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age属于Gir ...
- bzoj4802 欧拉函数(附Millar-Rabin和Pollard-Rho讲解)
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4802 [题解] 参考:http://www.matrix67.com/blog/archiv ...