第十一课  for循环(3)---循环变量的变化

【for循环流程】

前面介绍的for循环语句,学习了简单控制循环次数的格式,一般形式为:

              for( int i=0;  i< N ; i++ )

           语句/复合语句;

在学习了if语句中的逻辑表达式概念后,再来分析for语句能更加明白它的工作原理。for语句的控制结构由2个分号“;”分为三部分:

for (第1部分 ;第2部分 ;第3部分 )

语句/复合语句;

通常:

l 第1部分是循环变量定义和赋初始值(也叫初始化)的位置。

l 第2部分是逻辑表达式,是循环执行的条件部分。一旦表达式为假,循环结束。

l 第3部分一般是循环变量修改语句。

 
 

for语句的流程示意图:

如果循环3次,执行的次序为:

第一部分---                         (只执行1次)

第2部分---语句---第3部分---         (第1个循环)

第2部分---语句---第3部分---              (第2个循环)

第2部分---语句---第3部分---         (第3个循环)

第2部分---                         (表达式为假,结束循环)

例如语句“for (int i=0; i < 3;i++ ) cout << i<<endl;”的执行过程为:

i初始化为0,

“0<3”为真 --- 输出0 --- i增加1 --- i=1。

“1<3”为真 --- 输出1 --- i增加1 --- i=2。

“2<3”为真 --- 输出2 --- i增加1 --- i=3。

“3<3”为假 --- 结束循环

参见演示程序:for演示程序11A.exe

【for循环变化】

C++语言中for语句的3个部分可以灵活变化,功能强大。下面简单介绍2种变化方法。

(1)for语句的第1部分变化。

循环变量初始化的值不一定是0,可以是任意值。

例题11.1:输出所有是7的倍数的2位数:14,21, … ,98,每个数一行

分析:

题目描述中有两个关键点:

1.        所有2位数 --- 10,11,12,…,99

2.        7的倍数    ---除以7的余数为0

解题方法:用for语句的循环变量列举所有的2位数,再用if语句把7的倍数的数挑选出来。

样例程序11.1

图形

//prog:样例程序11.1

//author: teacher

//2015.10.28

int main()

{

for(int i=10; i<100; i++)

if( i%7==0) cout<<i<<endl;

return0;

}

====运行中... ====

14

21

28

35

42

49

56

63

70

77

84

91

98

====运行结束  ====

【拓展知识】

“把所有可能的数都列举出来,再一一判断,挑选出符合要求的数值。”这种方法在程序设计中经常使用,称为:枚举算法

(2)for语句的第3部分变化。

循环变量的改变不一定是增加1,也可以是其它修改。常见的修改形式有:

形式

功能

举列

i++

i增加1

i=5;

i++;   //i变为6

i--

i减少1

i=5;

i--;   //i变为4

i += a

i增加a

i=5;

i+=3;  //i变为8

i -=a

i减少a

i=5;

i -= 3;   //i变为2

i *=a

i乘a

i=5;

i *= 3;   //i变为15

i /=a

i除a

i=5;

i/=2;   //i变为2

i =运算表达式

i取表达式的值

i=5

i=3+2*i; //i变为13

例题11.2:画下面图形。图中最小边长是10,最大边长是200,边长每次增加10。

样例程序11.2

图形

//prog:样例程序11.2

//author: teacher

//2015.10.28

int main()

{

for(int i=10; i<=200; i+=10)

pen.fd(i).rt(90);

return0;

}

例题11.3:找出下面数列“3 7  15  31 …”的规律,打印前面不超过10000的所有项。

分析:

后一项是前一项乘2加1,所以i的变化表达式为:i = 2*i + 1。

样例程序11.3

图形

//prog:样例程序11.3

//author: teacher

//2015.10.28

int main()

{

for(int i=3; i<=10000; i=1+2*i)

cout<< i<<"  ";

return0;

}

====运行中... ====

3  7  15  31  63  127  255  511  1023  2047  4095  8191

====结束运行  ====

【练习】

一、填空题。根据题目的任务,填空完善程序。

题目

程序

练习11.1

输出数列:3  4  5  6 … 88。相邻两个数之间用一个空格隔开。

//prog:练习11.1

//author: teacher

//2015.10.29

int main()

{

for(int i= ; i<=88;  i++)

cout<< i<<" ";

return0;

}

练习11.2

输出数列:100  95  90  85 …   10 5。相邻两个数之间用一个空格隔开。

//prog:练习11.2

//author: teacher

//2015.10.29

int main()

{

for(int i=100; i>=5;  )

cout<< i<<" ";

return0;

}

练习11.3

输出数列:2  4  8  16 …  1024。相邻两个数之间用一个空格隔开。

//prog:练习11.3

//author: teacher

//2015.10.29

int main()

{

for(int i=2; i<=1024;  )

cout<< i<<" ";

return0;

}

练习11.4

输出数列:4, 5, 7, 11, 19, … , 8195。相邻两个数之间用一个空格隔开。

//prog:练习11.4

//author: teacher

//2015.10.29

int main()

{

for(int i=4; i<=8195; )

cout<< i<<" ";

return0;

}

二、编程题

练习11.5:编程画出下面图形,三角形边长每次减少一半。

练习11.6:编程画出下面图形,正方形边长每次减少20。

【学习目标】

(1)      理解for语句各个部分的作用和执行先后次序的流程图,。

(2)      掌握for语句的循环变量初始化。

(3)      学会用用各种逻辑表达式(有==,<,<=,>,>=等)作为循环结束条件。

(4)      掌握for语句的循环变量的多种修改方式。

第十一课 for循环(3)---循环变量的变化相关推荐

  1. c语言 for循环说课,《程序的循环结构-For循环语句》教学设计

    一.教学对象 本教案适用于新课程标准下高中一年级学生,教材选用广东版信息技术选修模块一<算法与程序设计>2.4.1节,1课时.在学习本课之前,学生应掌握VB程序的编程环境与运行方法,了解顺 ...

  2. Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量

    bool是int的子类 a = True print isinstance(a, int) print True == 1 print False == 0 运行结果: True True True ...

  3. 一个循环、一个变量打印乘法口诀

    前几天面试的时候遇到了一个问题,当时也没啥思路,而且时间比较紧,所以就空下了.回来后一直耿耿于怀,于是研究了一下. 问题是这样的:只用一个循环和一个变量打印出乘法口诀. 想了一段时间感觉还是没啥思路, ...

  4. linux shell for 循环变量,shell for循环、循环变量值付给其他shell脚本的方法

    本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数. shell for 循环: #!第一种写法 类似c.java for ((i=1; i<=100; i + ...

  5. python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...

    在之前的编程语言里,学到for循环里面是可以重置变量i的值的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢? 在python中,for循环相当于一个迭代器(Iterator ...

  6. c语言循环嵌套说课,C语言FOR循环说课稿.doc

    C语言FOR循环说课稿.doc C 语言 FOR 循环说课稿 各位评委老师上午好,我今天说课的内容是"FOR 循环" (板书) ,下面我将从教材的 地位及作用.学生学情.教学目标. ...

  7. 在循环之前或循环中声明变量之间的区别?

    本文翻译自:Difference between declaring variables before or in loop? I have always wondered if, in genera ...

  8. matlab循环调用不同变量名变量(不同矩阵名)

    问题描述:用循环时常用到调用不同的文件名变量 用字符串作为变量名:   eval() 变量名转化为字符串:   inputname() 数字变换成字符: num2str() %小例子:使用for循环调 ...

  9. java for循环定义变量,在java语言里for循环里的变量如何声明在外面进行使用。

    在java语言里for循环里的变量如何声明在外面进行使用. 关注:142  答案:2  手机版 解决时间 2021-02-01 21:59 提问者懷念那年夏天 2021-01-31 21:11 pub ...

最新文章

  1. matlab 绘制三维图并标注每个点的坐标
  2. C++二进制数字相加用字符串返回的算法实现(附完整源码)
  3. 递推算法之滚动数组思维方式
  4. Android自定义控件ImageViwe(四)——多点触控实现图片的自由移动
  5. 米斯特白帽培训讲义(v2)漏洞篇 SSRF
  6. java 访问手机存储卡,android实现文件下载并存储进SD卡
  7. python列表的加法_Python列表加法理解
  8. 使用NPM和Nodejs编写编译工具
  9. TCGA三个在线可视化网站
  10. 敏捷开发免费管理工具——火星人预览之二:编辑故事,产品管理,组织结构...
  11. [渝粤教育] 西南科技大学 旅客运输组织 在线考试复习资料
  12. C# 中关闭当前线程的四种方式 .
  13. KEIL4烧写下载程序到STM32最小系统板
  14. 音乐推荐系统协同过滤算法解释
  15. debian查询端口进程_Linux 查看端口占用情况
  16. linux 怎么进终端,进入Linux终端界面的方法汇总
  17. 如何在最短的时间内完成立春主题的公众号图文排版?
  18. 软件产品选型测试/POC测试
  19. PADA: Example-based Prompt Learning for on-the-fly Adaptation to Unseen Domains
  20. 腾讯副总裁邱岳鹏:云的发展要迈过三道关

热门文章

  1. 从爆款单品到全屋智能 Aqara如何引领行业变革
  2. 希尔伯特:无穷小是理想元素
  3. vue3中keep-alive路由缓存
  4. k8s-污点和容忍度
  5. 彩色图像增强opencv
  6. RGB彩色图像、灰度图像
  7. 各大邮箱网址用哪个好?企业内部邮箱哪个比较好用?
  8. 办公一般用什么邮箱?办公邮箱价格哪个好?办公邮箱怎么登陆?
  9. RX 6600XT vs RTX 2060Super 显卡对比
  10. Oracle database TSPITR(TableSpace Point-In-Time Recovery) 表空间基于时间点的恢复