安徽理工大学计算机科学技术系内容摘要:

二 .while循环语句执行过程:先计算表达式的值并判断,若表达式为真 (非 0),则执行循环体语句;然后再重复这种先计算后执行的过程,直到某次表达式的值 (等于 0)时结束循环 ,程序控制转向 while语句之后的第一条语句。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 42 循环结构中的表达式一般是关系表达式或逻辑表达式,也可是赋值表达式,表达式的作用是确定是继续循环还是结束循环。 在循环体中应该控制循环的条件即表达式的值,使循环进行若干次后表达式的值为 0,从而退出循环;否则将造成“死循环”。 如不修改循环控制条件,也可在循环体中插入“ break”语句,强行退出循环。 如: while (1) { 语句序列。 if (条件表达式 ) break。 语句序列。 } Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 43 如果循环结构中的表达式仅用来表示等于 0或不等于0,则表达式可简化。 如 while(a!=0)可写成 while(a),while(x==0)可写成 while(!x)。 使用 while语句应注意以下几点: ① while语句中的表达式一般是关系表达式或逻辑表达式, 只要表达式值为真 (非零 )即可继续执行循环体。 其特点是先判断崐表达式,后执行语句。 ②循环体如包括有一个以上语句,则必须用 {}括起来,组成复合语句。 如果不加花括号则 while语句的范围只到后面第一个分号处。 ③应注意选择适当的循环条件以避免死循环,即在循环体中应有使循环趋向于结束的语句。 ④允许 while语句的循环体仍是 while语句,从而形成双重循环或多重循环。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 44 例:求 sum= 1+ 2+ … + 100 main() { int i,sum=0。 i=1。 while (i=100) { sum=sum+i。 i++。 } printf(%d,sum)。 } 注:循环中,语句的先后位置必须符合逻辑,否则会影响运算结果。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 45 for语句 for语句是功能更强、使用更广泛的一种循环语句,不仅能用于循环次数已知的情况,还用于循环次数事先不能确定,只给出结束条件的情况,它完全可以代替while语句。 一 . for语句的一般形式为: for (表达式 1。 表达式 2。 表达式 3) 语句。 其中:表达式 1为循环变量初值;表达式 2为循环执行的条件;表达式 3为循环变量增值。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 46 可以理解为: for(循环变量赋初值;循环条件;循环变量增值 ) 语句; 二 .for语句的执行过程: for循环是直到型循环,它的控制流程是:①先计算表达式 1的值;②接着计算表达式 2的值并判断,若表达式 2的值为真 (非 0)则执行循环体,然后执行第③步,若为假 (0)则结束循环,转到第⑤步;③再计算表达式 3的值,至此完成一次循环;④然后转回第②步继续执行;⑤执行 for语句下面的语句。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 47 求表达式 1 表达式 2 循环体 求表达式 3 真 假 for语句的下一个语句 for语句的下一个语句 计算表达式 1 表达式 2的值为真 执行循环体 计算表达式 3 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 48 for循环结构中的表达式一般都包含一个能够控制循环次数的变量 ,称循环控制变量。 for语句中的三个表达式必须用分号隔开,作用分别为:表达式 1用于循环控制变量赋初值 ,通常为赋值语句;表达式 2是循环的控制条件,作用与 while语句中的表达式完全一样;表达式 3是循环控制变量的修改部分 ,通常也是语句,用于表示循环变量的增量或减量,常用自增或自减运算。 for语句中表达式 1和表达式 3一般为简单表达式,也可以是逗号表达式,当用逗号表达式时可一次完成对多个变量赋初值和修改多个变量值的功能。 在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 49 如: for(i=1。 i=100。 i++,i++)相当于 for(i=1。 i=100。 i=i+2) 表达式 2一般是关系表达式或逻辑表达式 ,但也可以是数值表达式或字符表达式,只要其值非零,就执行循环体。 如: for(i=0。 (c=getchar())!=“\n”。 i+=c)表示表达式 2从终端接收一个字符给 c,然后判断此赋值表达式的值是否不等于换行符,如不等于‘ \n’则执行循环体。 说明: for语句中的三个表达式均允许省略或部分省略,但两个分号不能省略,有以下几种活力表达式的情况: 1. for(。 表达式 2。 表达式 3) 语句。 省略表达式 1,常用于无需给循环变量赋初值的情况,此时应在 for语句前给循环变量赋初值。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 50 2. for(表达式 1。 表达式 3) 语句。 省略表达式 2(即表达式 2的值始终为真 ),即不判断循环条件,这种格式将导致无限循环。 3. for(表达式 1。 表达式 2。 ) 语句。 省略表达式 3,这种格式要求在循环体内必须修改循环变量的值,否则将导致死循环。 4. for(。 表达式 2。 ) 语句。 省略表达式 1和表达式 3,此时完全等价于 while语句 ,需要事先赋初值,在循环体内修改循环变量的值,可见for语句比 while语句功能强,除给出循环条件外,还可赋初值,使循环变量自动增值等。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 51 5. for(。 ) 语句。 相当于 while(1)语句,将导致无限循环。 for语句也可改写成 while语句,格式如下: 表达式 1。 while (表达式 2) { 语句 1。 … 语句 n。 表达式 3。 } 在实际应用 while还是 for循环,应视情况而定。 如不需赋初值或重赋初值,用 while比较方便;否则用 for较好。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 52 注: 1. for循环语句可嵌套,嵌套层数不同的版本不同。 的操作也都作为表达式 1和表达式 3出现,使程序短小简洁,但可读性降低。 即表达式 1和表达式 3可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式。 如: for (sum=0。 i=100。 i++) sum=sum+i。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 53 例 1:在国际象棋第一格放一粒麦子,第二格放二粒,第三放四粒,一直放到 64格,求需要多少体积麦子,设1m3约有 108粒。 include void main() {float s=0,n=1,i。 for(i=2。 i=64。 i++) {n=n*2。 s=s+n。 } couts /()。 } Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 54 dowhile语句 一 . dowhile循环语句的一般形式为: do 或: do 语句 { while (表达式 )。 语句 1。 语句 2。 … 语句 n。 } while (表达式 )。 其中语句 1… 语句 n是循环体,表达式是循环条件。 用大括号括起来的语句序列是循环体,它是一个复合语句,也可是单个语句,但即使循环体是单个语句,大括号不能省略,以避免与循环体为空的 while语句混淆。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 55 二 .dowhile循环语句的执行过程:先执行循环体语句一次,再差别表达式的值,若为真 (非零 )则继续执行循环体,否则终止循环。 是用来实现“直到型”循环结构。 判断表达式 循环体 满足 不满足 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 56 dowhile语句中表达式的作用与 while语句表达式完全一样,是用于控制循环的。 dowhile与 while不同之处: dowhile是先执行后判断,因此循环体至少执行一次;而 while语句是先判断后执行,所以循环体有可能一次也不执行 (当第一次判断表达式的值就为零时 )。 注:当 while后面的表达式第一次为“真”时,则while与 dowhile循环得到的结果相同,否则结果不相同(指二者具有相同的循环体的情况 )。 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 57 例:求 Fibonacci数列: 1,1,2,3,5,8,…… 的前 40个数, 即: F1= 1 (n= 1) F2= 1 (n= 2) Fn=Fn1+Fn2 (n≥3) 算法见下图 Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 58 程序如下: include void main() {long f1=1,f2=1,f3,i。 coutf1\tf2\n。 for(i=3。 i=30。 i++) {f3=f1+f2。 coutf3\t。 f1=f2。 f2=f3。 if(i%2==0) cout\n。 } } Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 59 例:女儿今年 12岁,父亲比她大 20岁,计算几年后父亲比她年龄大一位,那时他们年龄各为多少。 include void main() {int i=12,j=32,k=0。 do {i=i+1。 j=j+1。 k=k+1。 }while(2*ij)。 coutyear=k,f=j,d=iendl。 } Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 60 【 例 】 用上述三种循环语句求 while语句 : 1001nsn  n = 1。 s = 0。 while (n=100) { s=s+n。 n=n+1。 } n = 1。 s = 0。 do {s = s+n。 n = n+1。 } while(n=100)。 dowhile语句 : for (n = 1,s = 0。 n=100。 n++) s=s+n。 for语句 : Chapter 3 2020年 11月 17日星期二 安徽理工大学计算机软件教研室 61 【 例 】 求下列级数的前 m项和 ,要求其误差小于。 分析 : 级数的通项为 xm/m!, 第 i项 ti与第 i。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。