第9章、循环语句(理论课)_第1页
第9章、循环语句(理论课)_第2页
第9章、循环语句(理论课)_第3页
第9章、循环语句(理论课)_第4页
第9章、循环语句(理论课)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用C语言开发简单应用 第九章第九章 循环语句循环语句 上一章内容回顾 选择语句 if语句 switch语句 goto语句 语句的嵌套 if语句的书写规则和注意事项 2/44 本章学习目标 掌握while语句的使用 掌握do-while语句的使用 掌握for语句的使用 理解三种循环控制语句的区别 理解三种辅助控制语句 break语句 continue语句 return语句 了解使用循环语句应注意的问题 3/44 内容进度 while语句 do-while语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 4/

2、44 while语句 例:用if 和goto语句构成循环,求1100 所有整数的和。 5/44 #include void main() int i,sum=0; i=1; loop:if(i=100) sum+=i; i+; goto loop; printf(%d,sum); 循环终值循环终值 循环条件循环条件 循环体循环体 循环变量增值循环变量增值 循环初值循环初值 while语句 一般形式: while(表达式) 语句 其中表达式为循环条件,语句为循环体。 6/44 while语句 例:用while语句求1100所有整数的和。 7/44 #include void main() int

3、 i; int sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%dn,sum); 循环终值循环终值 循环条件循环条件 循环体循环体 循环变量增值循环变量增值 循环初值循环初值 while语句 特点: 先判断表达式,后执行循环体语句。 说明: 循环体如包含多条语句,需用括起来;如不加,则while语句 只执行紧跟它后面的一条语句。 循环体中应该有使循环趋于结束的语句,否则,将造成死循环。 循环体有可能一次也不执行。 下列情况,退出while循环: 条件表达式不成立(为零) 循环体内遇break、return、goto语句 无限循环: while(1

4、) 循环体语句 8/44 while语句 应用举例:显示110整数的平方。 9/44 #include void main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 运行结果:运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 内容进度 while语句 do-while语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 10/44 do-whil

5、e语句 一般形式: do 循环体语句 while(表达式); 特点: 先执行循环体,后判断表达式 说明: 至少执行一次循环体 do-while可转化成while结构 11/44 do-while语句 例:用do-while语句求1100所有整数的 和。 12/44 #include void main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%dn,sum); do-while语句 应用举例:将一个整数的各位数字颠倒后 输出。 算法提示:提取最后一位数字,用10取模求得。 13/44 #include void main(

6、) int i,r; printf(Input an integern); scanf(%d, do r=i%10; printf(%d,r); while(i/=10)!=0); printf(n); while与do-while比较 14/44 #include void main() int i=0; int sum=0; scanf(%d, do sum+=i; i+; while(i=100); printf(%dn,sum); #include void main() int i=0; int sum=0; scanf(%d, while(i=100) sum+=i; i+; pr

7、intf(%dn,sum); 内容进度 while语句 do-while语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 15/44 for语句 一般形式: for(表达式1;表达式2;表达式3) 语句 说明: 使用最为灵活、广泛 完全可以取代while语句 16/44 for语句 例:用for语句求1100所有整数的和。 17/44 #include void main() int i=0; int sum=0; for(i=1;i=100;i+) sum=sum+i; printf(%dn,sum);

8、for语句 使用方法: for循环中的“表达式1(循环变量赋初值)”、 “表达式2(循环条件)”和“表达式3(循 环变量增量)”都是可选项,即可以缺省,但 “;”不能缺省。例如: for(;) while(1) 语句 语句 省略了“表达式1(循环变量赋初值)”, 表 示不对循环控制变量赋初值。 省略了“表达式2(循环条件)”, 则不做其 它处理时便成为死循环。例如: 18/44 for(i=1; ; i+) sum=sum+i; i=1; while(1) sum=sum+i; i+; for语句 使用方法: 省略了“表达式3(循环变量增量)”, 则不 对循环控制变量进行操作,这时可在语句体中

9、 加入修改循环控制变量的语句。例如: 省略了“表达式1(循环变量赋初值)”和 “表达式3(循环变量增量)”。例如: 表达式1可以是设置循环变量的初值的赋值表 达式,也可以是其他表达式。例如: 表达式1、2、3可以是一个简单表达式也可以 是逗号表达式。例如: 表达式2一般是关系表达式或逻辑表达式,但 也可是数值表达式或字符表达式,只要其值非 零,就执行循环体。例如: 19/44 for(;i=100;) sum=sum+i; i+; while(i=100) sum=sum+i; i+; for(i=1; i=100; ) sum=sum+i; i+; for(sum=0; i=100; i+)

10、 sum=sum+i; for(sum=0,i=1; i=100; i+) sum=sum+i; for(i=0, j=100; i=100; i+, j-) k=i+j; for(i=0; j=1; i+=5) for语句应用举例 实现如下功能:输入10个字符,输出最大 的ASCII值。 20/44 #include void main() int i; char c=0; int max=0; for(i=1;imax) max=c; printf(The largest ASCII value is %dn,max); 内容进度 while语句 do-while语句 for语句 三种循环

11、语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 21/44 三种循环语句的比较 三种循环都可以用来处理同一问题,一般情况 下可以互相取代。 while和dowhile循环,只在while后面指定循 环条件,在循环体中应包含使循环趋于结束的 语句;for循环可以在表达式3中包含趋于结束 的操作,甚至可以把循环体中的操作全部放到 表达式3中。 while和dowhile语句控制循环的变量应该在 进入循环语句之前初始化。而for语句一般在 表达式1中进行初始化,当然也可以在进入循 环语句之前初始化。 22/44 内容进度 while语句

12、 do-while语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 23/44 break语句 break 语句的两个用途: 跳出switch语句 跳出本层循环 24/44 switch 表达式 语句组1 break; 语句组2 break; 语句组n break; 语句组n+1 break; . 常量 1常量 2常量 ndefault case 表达式 break; 0 非非0 0 while do break; . 表达式 0 非非0 0 while 表达式2 break; . 0 非非0 0 for

13、表达式1 表达式3 break语句应用举例 例1:考虑下列程序的运行结果。 25/44 #include void main() int i; for(i=1;i9) break; printf(n); break语句应用举例 例2:求调和级数中从第多少项和的开 始值大于10,调和级数的第n项形式为: 1+1/2+1/3+1/n。 26/44 #include void main() int n=1; double sum=0.0; for(;) sum=sum+1.0/n; if(sum10) break; n+; printf(n=%dn,n); 内容进度 while语句 do-while

14、语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 27/44 continue语句 continue语句的作用: 立即结束本次循环 28/44 表达式 continue; 0 非非0 0 while 非非0 0 do continue; . 表达式 0 0 while 表达式2 continue; . 0 0 非非0 0 for 表达式1 表达式3 continue语句应用举例 例:求输入的十个整数中正数的个数及 其平均值。 29/44 #include void main() int i,a,num=0;

15、 float sum=0; for(i=0;i10;i+) scanf(%d, if(a=0) continue; num+; sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num); 内容进度 while语句 do-while语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 30/44 return语句 return语句的作用: 返回函数被调用的位置,可以带有返回值。 其一般形式为:re

16、turn 表达式; 应用举例: 见教材中的例4、例5、例6 31/44 内容进度 while语句 do-while语句 for语句 三种循环语句的比较 三种辅助控制语句 break语句 continue语句 return语句 使用循环语句应注意的问题 32/44 使用循环语句应注意的问题 循环的嵌套: 三种循环可互相嵌套 外层循环可包含两个以上内循环, 但不能相互 交叉 33/44 while() while() . do do while( ); . while( ); while() do while( ); . for(;) do while(); while() . 使用循环语句应注意

17、的问题 在循环体内除了修改控制次数外,不要 把循环变量修改成其它无关的值,防止 循环失去控制。 在多重循环中,如果有可能,应当将最 长的循环放在最内层,最短的循环放在 最外层,以减少CPU 跨切循环层的次数。 34/44 低效率:长循环在最外层低效率:长循环在最外层 for (row=0; row100; row+) for ( col=0; col5; col+ ) sum = sum + arowcol; 高效率:长循环在最内层高效率:长循环在最内层 for (col=0; col5; col+ ) for (row=0; row100; row+) sum = sum + arowcol

18、; 使用循环语句应注意的问题 如果循环体内存在逻辑判断,并且循环 次数很大,宜将逻辑判断移到循环体的 外面。左边的程序比右边的多执行了N-1 次逻辑判断。 35/44 效率低但程序简洁效率低但程序简洁 for (i=0; iN; i+) if (condition) DoSomething(); else DoOtherthing(); 效率高但程序不简洁效率高但程序不简洁 if (condition) for (i=0; iN; i+) DoSomething(); else for (i=0; iN; i+) DoOtherthing(); 使用循环语句应注意的问题 建议for 语句的循环

19、控制变量的取值采用 “半开半闭区间”写法。 36/44 循环变量属于半开半闭区间循环变量属于半开半闭区间 for ( x=0; xN; x+) . 循环变量属于闭区间循环变量属于闭区间 for ( x=0; x=N-1; x+) . 课后作业 用公式 求的近似值, 直到最后一项的绝对值小于10-6为止。 7 1 5 1 3 1 1 4 37/44 t=1,pi=0,n=1.0,s=1 当当|t| 1e-6 pi=pi+t n=n+2 s=-s t=s/n pi=pi*4 输出输出pi 课后作业 求Fibonacci数列:1,1,2,3,5, 8,的前40个数。 ) 3( )2(12 ) 1(11 21 nFFF nF nF nnn 38/44 f1=1,f2=1 for i=1 to 20 输出输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论