第5讲 多分支和循环.ppt_第1页
第5讲 多分支和循环.ppt_第2页
第5讲 多分支和循环.ppt_第3页
第5讲 多分支和循环.ppt_第4页
第5讲 多分支和循环.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、第5讲 程序的控制结构,多分支(选择)结构程序设计 循环结构程序设计,请大家及时到我的个人主页,2,习题4.1:求分段函数 编程题: #include void main() int m; scanf(%d, /*是奇数*/ ,作业答案,多分支结构 if-else中又有if-else称为“嵌套” 写程序时,一般在else中嵌套。 if( ) else if( ) else 读程序时按默认配对原则:从最内层开始,else总与离它上面最近且未曾配对的if配对,与书写的缩进无关,3,P95例4-12:求一元二次方程的根,怎么求?,求解,输出“不是一元二次方程”,4,#include #include

2、 main() float a, b, c, delta, x1, x2, p, q; printf(Please enter the coefficients a,b,c:); scanf(“%f,%f,%f”, /*输出x1和x2*/ ,忠告:为避免出错,尽量将每个分支中的语句用括起来。,若不括会怎样呢?,5,P99 例4-15,根据输入的百分制成绩score,分段转换成相应的等级并打印输出。 分析: 输入score 转换并输出(五个分支),6,#include main() int score; printf(Please enter score:); scanf(%d, ,方法一程序,

3、在else分支嵌套 没有else会怎样?,7,方法二,switch(score/10) case 10: case 9: printf(“%d-excellentn”,score);break; case 8: printf(“%d-goodn”,score);break; case 7: printf(“%d-fit exactlyn”,score);break; case 6: printf(“%d-passn”,score);break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“%d-failn”,score);br

4、eak; ,default: printf(“%d-failn”,score);break;,用于判断分支的表达式 表达式的所有可能结果列举在case后,当上面的情况与下边的情况相同,后边的分支语句可省略,default表示除上述情况以外的所有情况。,当遇到break时,程序转到switch语句的的后边,8,#include void main() int score; printf(Please enter score:); scanf(%d, ,方法二程序,default: printf(“%d-failn”,score);break;,执行过程?,9,涉及到的语法知识-switch语句,

5、一般用于菜单等多分支的情况,switch (表达式) case 常数1:语句序列1;case 常数2:语句序列2;default:语句序列n;,一般结果为多个离散值的情况,更详细的语法知识请查阅P96-97。,10,练习,main() int a=1,b=0; switch(a) case 1:switch(b) case 0:putchar(0); break; case 1: putchar(1); break; break; case 2:printf(“a=2”);break; ,!读程序时一定注意有没有break, 并正确分析break后转到了哪儿?,11,问题,if-else嵌套和

6、switch都可以解决多分支的情况,在遇到多分支的时候使用哪个呢? 当多个可能的情况是离散值时可以选用switch,其他情况下用if-else嵌套。,12,新的问题,P107例4-23,=1+2+100 粗略算法: 输入n 计算过程 输出结果p,分析:从1开始加,每次加i,加完后i加1 ,共加100次 即i=1,sum=0, sum=sum+i, i+, i=100? 从哪开始?哪些语句循环100次呢?什么时候结束呢?,+(自加1运算符) -(自减1运算符),13,方法一程序,#include main() int i, sum = 0; for (i=1; i=100; i+)/*先判断后执

7、行,循环100次*/ sum = sum + i; /*作累加运算*/ printf( sum = %dn, sum); ,循环,循环控制变量i起到控制循环次数的作用。,14,方法二程序,#include main() int i = 1, sum=0; while (i = 100) /*先判断后执行,循环n次*/ sum = sum+i; /*作累加运算*/ i+; /*累加次数计数器加1*/ printf( sum = %dn, sum); ,15,方法三程序,#include main() int i = 1, sum=0; do sum = sum+i; /*作累加运算*/ i+;

8、/*累加次数计数器加1*/ while (i = 100); /*先执行后判断,循环n次*/ printf(%d! = %ldn, n, p); ,16,涉及的语法知识-循环语句1:while,while (表达式) 循环体语句 ,17,涉及的语法知识-循环语句2:do-while,do 循环体语句 while (表达式);,18,涉及的语法知识-循环语句3: for 语句,for(表达式1 ; 表达式2 ; 表达式3) 循环体语句 ,19,总结-循环语句,三条语句几乎等价,编程时可用任意一条语句 刚才例题中的重点语句是 i=1;sum=0 (循环开始之前的初始值) sum=sum+i;i+

9、(循环内容,即循环体) i=100 (循环条件) 因此,写循环时上述三点万不可缺。只是对应不同的循环语句,所放的位置不同,20,下边两个程序的区别?,int sum=0; int i=1; do sum=sum+i; i+; while (i=100);,定义变量sum时不赋初值会怎样?,21,例4-23又可写成,#include main() int i,j, sum = 0; for(i=1,j=100; i=50; i+,j-) sum=sum+i+j; printf(“sum = %dn, sum); ,两个循环控制变量i,j 用逗号分开 逗号运算符,22,课堂练习 P107例4-24,n=0,n+; 输出k%10; k=k/10;,23,#include void main( ) int k,n=0; printf(k=?); scanf(%d, ,例4-24程序,

温馨提示

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

评论

0/150

提交评论