for重复结构

for重复结构处理计数器控制循环的所有细节。要演示for的功能,可以改写图2.16的程序,结果如图2.17。

执行for重复结构时,声明控制变量counter并将其初始化为1。然后检查循环条件counter <=10。由于counter的初始值为1,因此条件满足,打印Counter的值(1)。然后在表达式Counter++中递增控制变量counter,再次进行循环和测试循环条件。由于这时控制变量等于2,没有超过最后值,因此程序再次执行语句体。这个过程一直继续,直到控制变量counter递增到11,使循环条件的测试失败,重复终止。程序继续执行for结构后面的第一条语句(这里是程序末尾的return浯句)。

// Fig. 2.17:fig02 17.cpp
// Counter-controlled repetition with the for structure
#include < iostream.h>
int main()
{
	// Initialization, repetition condition, and incrementing
	// are all included in the for structure header.
	for ( iht counter = 1; counter <= 10; counter++ )
	cout << counter << endl;
	return O;
}
图 2.17 用for结构的计数器控制重复

图2.18更进一步研究了图2.17中的for结构。注意for结构指定计数器控制重复所需的每个项目。如果for结构体中有多条语句,则应把语句体放在花括号中。

注意图2.17用循环条件counter <=10。如果循环条件变为counter<lO,则循环只执行9次,这种常见的逻辑错误称为差1错误。

              for
               关键字   控制变量名           控制变量终值
                 ↓         ↓                     ↓
                for ( int counter = 1; counter <= 10; counter++)
                                       -------------
                                    ↑          ↑           ↑
                            控制变量初始化   循环条件     控制变量递增

                                   图 2.18 典型for首部的组件
常见编程错误2.13

while或for条件中使用不正确的关系运算符和不正确的循环计数器终值会导致差1的错误。

编程技巧2.20

在while或for条件中使用终值和用关系运算符 <=可以避免差1的错误。例如,对打印1到10的循环,循环条件应为counter<=10而不是counter<10(导致差1错误)或counter(虽然正确)。许多程序员喜欢基于O的计数,在循环中重复10次.courter初姑化为O,循环条件测试为counter<10。

for结构的一般格式如下:

for(expression1;expression2;expression3)
        statement  

其中expression1初始化循环控制变量的值,expression2是循环条件,expression3递增控制变量。大

多数情况下,for结构可以表示为等价的while结构:

  expression1
    while(expression2){
        statement
        expression3;
    }

惟一的例外将在2.18节介绍。

如果for结构首部中的expression1(初始化部分)定义控制变量(即控制变量类型在变量名前 面指定).则该控制变量只能在for结构体中使用,即控制变量值是for结构之外所未知的。这种限制控制变量名的用法称为变量的作用域(scope)。变量的作用域定义其在程序中的使用范围。作用域将在第3章“函数”中介绍。

常见编程错误2.14

如果for结构首部中的初始化部分定义控制变量,则在该结构体之后使用这个控制变量是个语法错误。

可移植性提示2.1

在新的C++草案标准中,for结构初始化部分声明的控制变量范围与旧式的C++编译器中不同。旧式的c++编译器产生的C++代码在支持新的C++草案标准妁编译器中编译时可能遭到破坏。可以用两个编工程策略防止这个问题:在每个for结构中定义不同名称的控制变量或者在多个for结构中定义相同名称的控制变量,并在第一个for循环之外和之前定义控制变量。

有时,exprossion1和expression3是由逗号分开的表达式列表。这里用逗号作为逗号运算符(comma operator),保证从左向右求值表达式列表。逗号运算符在所有C++运算符中的优先级量低。逗号分隔表达式列表的值和类型是列表中最右边表达式的值和类型。逗号运算符最常用于for结构,其主要用途是让程序员使用多个初始化表达式或多个递增表达式。例如,一个for结构中可能有多个控制变量需要初始化和递增。

编程技巧2.21

只把涉及控制变量的表达式放在for结构的初始化和递增部分。其他变量的操作应放在循环之前(如果像初初化语句一样只执行一次)或循环体中(如果对每个循环环执行一次,如递增和递减语句)。

for结构中的三个表达式是可选的。如果省略expression2,则C++假设循环条件为真,从而生成无限循环。如果程序其他地方初始化控制变量,则可以省略expression1。如果for语句体中的语句计算增量或不需要增量,则可以省略expression3。for结构中的增量表达式就像是for语句体末尾的独立语句。因此,下列表达式:

在for结构的递增部分都是等价的。许多程序员喜欢counter++,因为递增在执行循环体之后发生,因此,后置自增形式似乎更自然。由于这里递增的变量没有出现在表达式中,因此前置自增与后置自增的效果相同。for结构首部中的两个分号是必需的。

常见编程错误2.15

for结构首部中的两个分号改成逗号会造成语法错误。

常见编程错误2.16

将分号放在for结构首部的右括号后面令使该for结构体变为空语句.通常是个逻辑错误。

软件工程视点2.9

将分号放在紧接着for结构首部的后面有时可以生成所谓的延迟循环。这种for的循环体是空语句,表示计算空循环的次数。例如,可以用空循环减慢程序速度,以避免其在屏幕上输出太快,无法阅读。

for结构的初始化、循环条件和递增部分可以用算术表达式。例如,假设x=2和y=10,如果x和y的值在循环体中不被修改,则下列语句:

for   (int j= x; j   <= 4* x* y; j += y/ x )

等于下列语句:

for(int   j=2;j  <=80;j+=5)

for结构的增量也可能是负数(实际上是递减,循环向下计数)。

如果循环条件最初为false,则for结构体不执行,执行for后面的语句。for结构中经常打印控制变量或用控制变量进行计算,控制变量常用于控制重复而不在for结构体中提及这些控制变量。

编程技巧2.22

尽管控制变量值可以在for循环体中改变,但最好不要这样做,固为这样可能造成一定的逻辑错误。

for结构的流程图与while结构相似。例如,图2.19显示了下列for语句的流程图:

for(int counter=l;counter >=10;counter++)
cout << counter<< endl;

从这个流程图可以看出初始化发生一次,井在每次执行结构体语句之后递增。注意,流程图(除了小圆框和流程之外)也只能包含表示操作的矩形框和表示判断的菱形框。这是我们强调的操作/判断编程模型。程序员的任务就是根据算法使用堆栈和嵌套两种方法组合其他几种控制结构,然后在这些框中填入算法所要的操作和判断,从而生成程序。

2016考研复试技巧http://www.kyjxy.com/fushi/zhinan/
考研专硕备考资料http://www.kyjxy.com/zhuanshuo/
考研院校政策http://www.kyjxy.com/yuanxiao/zhengce/

时间: 2024-10-09 04:20:14

for重复结构的相关文章

? do/while重复结构

do/while重复结构与while结构相似.在while结构中,先在循环开头测试循环条件之后再执行循环体.do/while重复结构执行循环体之后再测试循环条件,因此,do/while结构至少执行循环体一次.do/while结构终止时,继续执行while语句后面的话句.注意,如果结构体中只有一条浯句,则不必在do/while结构中使用花括号.但通常还是加上花括号,避免棍淆while与do/while重复结构. 例如: while (condition) 通常当作while结构的首部.结构体中只有

考研计算机基础while重复结构

while重复结构 重复结构(repetition strucure)使程序 员可以指定一定条件下可以重复的操作.下列伪代码语句: While there are more items on my shopping list Purchase next item and cross it off my list 描述购物过程中发生的重复.条件"there are more ltems on my shopping list"(购物清单中还有更多项目)可真可假.如果条件为true.则执行

个人永久性免费-Excel催化剂功能第36波-新增序列函数用于生成规律性的循环重复或间隔序列

啃过Excel函数的表哥表姐们,一定对函数的嵌套.数组公式等高级的应用有很深的体会,威力是大,但也烧死不少脑细胞,不少人就在这样的绕函数中光荣地牺牲了,走向从入门到放弃.Excel催化剂的创立,初衷就是为了让普通用户,借助类似化学催化剂的作用,让平常难以有反应的常规使用,能够瞬间被点燃,借力完成过去很难完成的事情.此篇给大家介绍一些过往用函数潜逃较为复杂完成的事情,如今仅通过简单的一个自定义函数即可完成. 文章出处说明 原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有

c++高质量编程手册

怡化主管强烈要求我读这本书.... 笔记尚未完成,持续更新呗.. 第1章 高质量软件开发之道 1.1 软件质量基本概念 1.1.1 如何理解软件的质量:功能性和非公能性 1.1.2 提高软件质量的基本方法: 一次性编出高质量的程序 1.1.3 "零缺陷"理念 1.2 细说软件质量属性 1.2.1 正确性: 需求范围内的需求 1.2.2 健壮性  需求外的扩展需求 1容错  2恢复 1.2.3 可靠性  你平均无故障时间衡量 1.2.4 性能  时间-空间效率 优化数据结构,算法,代码来

程序设计语言基本概念语 与经典真题

一.基本概念 在计算机中,程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低.与程序设计相关的基本概念如下. (1)低级语言:又称面向机器语言,它是特定的计算机系统所固有的语言. (2)汇编语言:是机器语言的一种提升,它使用了一些助记符来表示机器指令中的操作码和操作数.但它仍然是一种和计算机机器语言十分接近的语言,使用起来仍然不太方便. (3)高级语言:与人们的自然语言比较接近,使用起来很方便,也极大的提高了程序设计效率. (4)编译程

pascal语言中学版整理

P1:主菜单File中的Command shell选项,可以暂时退出Pascal,进入DOS提示符状态,但Pascal仍然驻留在内存中.输入命令exit即可返回Pascal. P3:Edit菜单中Undo是撤销最近的一次操作,Redo是撤销Undo操作:        F8——单步执行程序,遇到函数.过程时不跟踪其内部:         F7——单步执行程序,遇到函数和过程调用,跟踪到内部: P4:Goto cursor-F4——运行程序到光标所在行:        Program reset-

4、概率图模型:Template Modles

本章总结几个模板模型:动态贝叶斯.隐马尔科夫和Plate模型 1 OverView of Template Models 为了达到不用每一都对问题建立模型,而是每次都对某一类问题有一个统一的模型进行处理,而提出了模板模型.模板模型(template model)编码了具有重复结构和共享参数的模型.从而使图模型的描述方式更加的紧凑,可以应用于无限大的贝叶斯网络.主要包括模板变量(Template variables)和语言(language). 模板变量(Template variables)是图

C语言程序设计-第2章 算法-程序的灵魂

一个程序主要包括以下两个方面的信息: 1)对数据的描述.在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构(data structure). 2)对操作的描述.即要求计算机进行操作的步骤,也就是算法(algorithm). 算法+数据结构=程序 算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法. 为解决一个问题而采取的方法和步骤,就称为"算法". 例题1.判定2000-2500年中每一年是否为闰年,并将结果输出. 设year为被检测的年份.算

Emmet常用语法

Emmet常用语法1.输入!和html:5(不能大写),按下TAB 键,快速生成一个 HTML5 的标准文档初始结构. html:xt 生成 HTML4 过渡型 html:4s 生成 HTML4 严格型2.生成带有 id .class 的 HTML 标签 (1)Emmet 的语法有点类似 CSS 的语法,生成 id 为 aaa 的 div 标签,我们只需要编写下面指令:#aaaEmmet 默认的标签为 div ,如果我们不给出标签名称的话,默认就生成 div 标签. (2)如果编写一个 clas