【教学课件】第四章程序的控制结构

上传人:xian****812 文档编号:324060634 上传时间:2022-07-12 格式:PPT 页数:109 大小:1.16MB
返回 下载 相关 举报
【教学课件】第四章程序的控制结构_第1页
第1页 / 共109页
【教学课件】第四章程序的控制结构_第2页
第2页 / 共109页
【教学课件】第四章程序的控制结构_第3页
第3页 / 共109页
【教学课件】第四章程序的控制结构_第4页
第4页 / 共109页
【教学课件】第四章程序的控制结构_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《【教学课件】第四章程序的控制结构》由会员分享,可在线阅读,更多相关《【教学课件】第四章程序的控制结构(109页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 程序的控制结构程序的控制结构4.1 顺序结构顺序结构4.2 选择结构选择结构4.3 循环结构循环结构4.4 结构化程序设计结构化程序设计算法算法算法算法计算方法计算方法计算方法计算方法 解决问题的方法和步骤解决问题的方法和步骤解决问题的方法和步骤解决问题的方法和步骤例:用辗转相除法求两个正整数的最大公因子例:用辗转相除法求两个正整数的最大公因子1 1输入输入m m和和n n2 2若若mn,mn,则交换则交换m m和和n n3 3m m除以除以n n,余数为,余数为r r4 4若若r=0r=0,则,则n n为最大公因子,输出为最大公因子,输出n n,否则执行,否则执行5 55 5m

2、=nm=n,n=rn=r,转,转3 3算法特征:算法特征:有穷性、确定性、有效性有穷性、确定性、有效性、输入、输出、输入、输出 算法的描述方法:算法的描述方法:自然语言自然语言流程图流程图NS图图伪代码伪代码用辗转相除法求两个正整数的最大公因子用辗转相除法求两个正整数的最大公因子input m,n;input m,n;if mif mn20&x20&x=(3)c=0 0&c=&c=(4)c=a a&c=&c=|c=A A&c&c 99&t99&tb)printf(Its right);if(表达式)语句(表达式)语句if(a+bc&b+ca&c+ab)printf(能构成一个三角形能构成一个三

3、角形n);if(表达式)语句(表达式)语句1 else 语句语句2表达式表达式Y YN语句语句1流程图流程图语句语句2if(ab)max=a;else max=b;YN表达式表达式语句语句1语句语句2N-SN-S图图if(ab)printf(a比比b大大);else printf(a比比b小小);if(a+bc&b+ca&c+ab)printf(it is an triangle);else printf(it is not an triangle);编程示例int main()char ch;ch=getchar();if(ch=A&ch=A&ch=a&chb)t=a;a=b;b=t;讨论:

4、讨论:if(ab)t=a;a=b;b=t;if(bc)max=b;min=c;else max=c;min=b;if(a=0)printf(a equal to zero);else printf(a is not equal to zero);嵌套的嵌套的if语句语句输入输入x的值,利用函数计算的值,利用函数计算y的值的值 -1 (x0)int main()int x,y;scanf(%d,&x);if(x0)y=1;else if(x=0)y=0;else y=1;printf(x=%d,y=%dn,x,y);return 0;x0y=-1x=0y=0y=1NNYY -1 (x0)if(x

5、=0)if(x0)y=1;else y=0;else y=-1;y=-1;if(x=0)if(x0)y=1;else y=0;y=0;if(x!=0)if(x0)y=1;else y=-1;if(num500)cost=0.15;else if(num300)cost=0.10;else if(num100)cost=0.075;else if(num50)cost=0.05;else cost=0;num500cost=0.15YNnum300num100cost=0.05cost=0.075cost=0.1YYNcost=0num50NNYif if(表达式(表达式(表达式(表达式1 1)

6、语句语句语句语句1 1 else ifelse if(表达式(表达式(表达式(表达式2 2)语句语句语句语句2 2 else ifelse if(表达式(表达式(表达式(表达式3 3)语句语句语句语句3 3 .else ifelse if(表达式(表达式(表达式(表达式n n)语句语句语句语句n n else else 语句语句语句语句n+1n+1 e1s1YNe2e3sn+1s3s2YYN if(e1)if(e2)s1 else s2else s3if(e1)if(e2)s1 else s2else if(e3)s3 else s4e1e2s1s2s3Y YY YNNe1e2s1s2s3s4

7、e3YY YNNNY if(e1)if(e2)s1 else if(e3)s2 else s3没有没有if 就没有就没有elseelse总是与最近的尚未配对的总是与最近的尚未配对的if结合结合e1e2s1s2s3e3YYYNNNe1e2s1s2s3e3YYYNNN 找找a、b、c的最大值的最大值if(ab)if(ac)max=a;else max=c;else if(bc)max=b;else max=c;max=a;if(maxb)max=b;if(maxb&ac)max=a;if(bc&ba)max=b;else max=c;1格式:格式:表达式表达式1?表达式?表达式2:表达式:表达式3

8、2语义:语义:if(表达式(表达式1)表达式表达式2 else 表达式表达式3 条件表达式条件表达式max=(ab)?a:b;x=x=表达式表达式1 1?表达式?表达式2 2:表达式:表达式3 3表达式表达式表达式表达式1 1 1 1x=x=x=x=表达式表达式表达式表达式2 2 2 2x=x=x=x=表达式表达式表达式表达式3 3 3 3NYmain()char ch;scanf(%c,&ch);ch=(ch=A&chb?a:ab?a:cd?c:dcd?c:d;5 5结果类型:与表达式结果类型:与表达式2 2或表达式或表达式3 3相同相同三、三、switch语句语句switch(ch)cas

9、e A:printf(Good!n);break;case B:printf(Good!n);break;case C:printf(Passn);break;case D:printf(Fail!n);break;chGoodPassFailch=Ach=Bch=Dcasech=Cswitch(ch)csae A:case B:printf(Good!n);break;case C:printf(Passn);break;case D:printf(Fail!n);break;chGoodPassFailch=Ach=Bch=Dcasech=C格式:格式:switch(表达式表达式)case

10、 常量表达式常量表达式1:语句串:语句串1 case 常量表达式常量表达式2:语句串:语句串2 case 常量表达式常量表达式n:语句串:语句串n default:语句串:语句串n+1 表达式只能是整型、字符型、枚举类型表达式只能是整型、字符型、枚举类型各常量表达式中不能有相同的值各常量表达式中不能有相同的值执行完某个分支后,执行完某个分支后,要用要用break语句终止语句终止switch语句的执行语句的执行不同的常量表达式可以执行相同的语句串不同的常量表达式可以执行相同的语句串switch(ch)csae A:case B:printf(Good!n);case C:printf(Pass!

11、n);case D:printf(Fail!n);switch(ch)csae A|B:printf(Good!n);case C:printf(Pass!n);case D:printf(Fail!n);switch(ch)csae A=ch0?-4ac0?N N N N计算并输出两个虚根计算并输出两个虚根计算并输出两个虚根计算并输出两个虚根N N N N输入系数输入系数a a、b b、c c开始开始结束结束int main()float a,b,c,p,q,disc;printf(Please enter a,b,c:);scanf(%f,%f,%f,&a,&b,&c);printf(Th

12、e Equation:);if(fabs(a)=1e-6)printf(has one roots:%6.2fn,-c/b);else disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(fabs(disc)/(2*a);if(fabs(disc)1e-6)printf(has two unequal real roots:%6.2f and%6.2fn,p+q,p-q);else printf(has complex roots:n);printf(%6.2f+%6.2f in,p,q);printf(%6.2f-%6.2f in,p,q);公里公里 折扣折扣 =250=500

13、=1000=2000=3000 15%运费计算运费计算每公里每吨货物的每公里每吨货物的 基本运费为基本运费为p货物重量为货物重量为w距离为距离为s 折扣为折扣为d总运费为:总运费为:f=p*w*s*(1-d)输入输入p p、w w、s s输出输出f fs/250s/250d=0d=2d=5d=8d=10d=15f=p*w*s*(1-d/100.0);公里公里 折扣折扣 =250=500=1000=2000=3000 15%0 01 14 42 23 35 56 67 78 89 910101111=12 12int main()int c,s;float p,w,d,f;printf(Inpu

14、t p,w,s:);scanf(%f,%f,%d,&p,&w,&s);if(s=3000)c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);printf(freight=%15.4fn,f);return 0;intmain()charchoi

15、ce;printf(n-欢迎点菜-n);/显示菜单printf(1.西红柿炒鸡蛋n);printf(2.宫爆鸡丁n);printf(3.鱼香肉丝n);printf(0.退出n);printf(请选择(0-3):);choice=getchar();/选择switch(choice)case1:printf(西红柿炒鸡蛋1份,请稍后);break;case2:printf(宫爆鸡丁1份,请稍后);break;case3:printf(鱼香肉丝1份,请稍后);break;printf(n欢迎光临!n);4.3循环结构程序设计循环结构程序设计往前走,往前走,直到直到到达目标为止到达目标为止没到?没到

16、?往前走往前走YN只要只要.计算计算1+2+3+.+1001+2+3+.+100sum=1+2;/sum存放和值sum=sum+3;sum=sum+4;.sum=sum+100;sum=0;/sum存放和值sum=sum+1;sum=sum+2;sum=sum+3;sum=sum+4;.sum=sum+100;sum=0;/sum存放和值i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;.sum=sum+i;计算计算1+2+3+.+1001+2+3+.+100int i,sum;sum=0;i=1;while(i=100)sum+=i;i+;printf(%d,sum);sum=sum+i;i+;sum=0;i=1;i=100NY输出输出sum计算计算1+2+3+.+1001+2+3+.+100int i,sum;sum=0;for(i=1;i=100;i+)sum+=i;printf(%d,sum);sum=sum+i;sum=0;i=1;i=100NY输出输出sum i+;sum=sum+i;i+

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号