第二讲选择程序设计和循环程序设计.ppt

上传人:sccc 文档编号:4981662 上传时间:2023-05-27 格式:PPT 页数:103 大小:1.11MB
返回 下载 相关 举报
第二讲选择程序设计和循环程序设计.ppt_第1页
第1页 / 共103页
第二讲选择程序设计和循环程序设计.ppt_第2页
第2页 / 共103页
第二讲选择程序设计和循环程序设计.ppt_第3页
第3页 / 共103页
第二讲选择程序设计和循环程序设计.ppt_第4页
第4页 / 共103页
第二讲选择程序设计和循环程序设计.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《第二讲选择程序设计和循环程序设计.ppt》由会员分享,可在线阅读,更多相关《第二讲选择程序设计和循环程序设计.ppt(103页珍藏版)》请在三一办公上搜索。

1、第二讲 选择与循环程序设计(C语言的精髓),2.1 选择程序设计(分支),重要的两句话:1、选择是需要有条件的;2、选择是残酷的,根据条件的不同,有的被选择,有的不被选择。,构成条件的基础,1、关系运算符与关系表达式,2、逻辑运算符和逻辑表达式,1、关系运算符与关系表达式,关系运算符有:、=、=(优先级高)=、!=(优先级低),关系表达式,由关系运算符组成的有一定比较关系的表达式称为关系表达式。例如:salary=1500 age=60,关系表达式的结果:成立或不成立 逻辑成立:true 逻辑不成立:false 例如:53 成立,true 35 不成立,false,2、逻辑运算符和逻辑表达式,

2、当条件比较复杂,一个关系表达式无法满足实际需求时,要用到多个条件的组合,此时需要用到逻辑运算符和逻辑表达式。例如,构成三角形的条件,满足结婚的条件,逻辑运算符,逻辑与:&逻辑或:|逻辑非:!,逻辑与&,逻辑或|,由关系表达式和逻辑运算符组成的表达式为逻辑表达式。例如:能构成三角形的条件:a+bc&b+ca&c+ab 可以结婚法定年龄的条件:boy_age=22&girl_age=20,逻辑表达式,在C语言中,在给出逻辑表达式的结果时,以数值1代表“真”,以数值0代表“假”。,举例:(1)5+24&3=2 其结果是0(2)5+24|3=2 其结果是1,优先级:算术运算符的优先级要高于关系运算符,

3、关系运算符的优先级要高于逻辑运算符。,二级考试题,已知a是一具体数值,则表达式a=3|a!=3的结果是()A、0 B、1 C、2 D、a的值不知道,无法确定,注意:,在判断一个具体的数值量是否为“真”时,以0代表“假”,以非0代表“真”。,#include main()while(1)printf(同志们好!n);printf(首长好!n);printf(同志们辛苦了!n);printf(为人民服务!n);,#include#include main()while(1)printf(同志们好!n);printf(首长好!n);Sleep(1000);printf(同志们辛苦了!n);print

4、f(为人民服务!n);,不断输出:同志们好首长好结论:死循环按Ctrl+break终止死循环,#include main()while(0)printf(同志们好n);printf(首长好n);printf(同志们辛苦了n);printf(为人民服务n);,选择程序在C语言中的具体实施,if语句switch.case 结构(略),if 语句,if语句用来判定所给定的条件是否成立,根据判定的结果(真或假)决定执行不同的分支。,重要规则:满足条件,执行相应的分支;不满足条件,顺序执行。,if语句的几种形式,纯if语句(枚举法)ifelse结构 ifelse ifelse结构 if语句的嵌套,将所有

5、的条件全部罗列出来,为每个条件给出相应的执行语句。功能最强大的语句之一。,纯if语句(枚举法),举例:输入一个学生的成绩,如果大于等于60,则输出“恭喜,你通过了!”,否则输出“未通过,好好准备补考”。,#include main()int score;scanf(%d,举例:输入一个成绩score若score=80,输出“优秀”用ifelse ifelse 完成。,#include main()int score;printf(请输入一个分数:);scanf(%d,错误写法,if(90=score=100)printf(优n);,石头、剪刀、布游戏,#include#include#incl

6、ude main()int i;int j;srand(time(NULL);i=rand()%3;printf(输入0、1或2,分别代表石头剪刀布);scanf(%d,if(i=0,ifelse结构,当条件只有两种可能时,可以采用ifelse结构。,语法形式为:if(条件)语句1;else 语句2;,举例:,#include main()int score;scanf(%d,#include main()int boy_age,girl_age;scanf(%d,%d,举例:,ifelse ifelse结构,当条件的区间划分比较复杂时,ifelse结构将不能满足要求,此时要采用ifelse

7、ifelse结构。,if(条件1)语句1;else if(条件2)语句2;else if(条件3)else 语句n;,格式:,举例:输入一个成绩score若score=80,输出“优秀”用ifelse ifelse 完成。,#include main()int score;scanf(%d,从小到大,if(score60)printf(不及格);else if(score70)printf(及格);else if(score80)printf(中);else if(score90)printf(及格);else printf(优);,#include main()int score;scanf

8、(%d,从大到小,if(score=90)printf(优);else if(score=80)printf(良);else if(score=70)printf(中);else if(score=60)printf(及格);else printf(不及格);,举例:用ifelse ifelse 完成i20 输出“张飞”,if(i=5)printf(诸葛亮);else if(i=10)printf(周瑜);else if(i=20)printf(鲁肃);elseprintf(“张飞);,if语句的嵌套,当一个if语句结构中又 包含一个或多个if语句,称为if语句的嵌套。典型案例:某推销员的月收

9、入,典型案例:某推销员的月收入,举例:某洗发水推销员,其基本工资是人民币600元/月,如果当月销售额超过10000元,有提成,低于10000元,则没有提成,具体提成如下:提成计算如下:提成=0.1*销售额 月销售额=20000 输入这个推销员一个月的销售额,计算其当月的收入并输出。,#include main()float wage;float sale;printf(请输入销售额:);scanf(%f,综合举例:两人玩掷骰子的游戏用纯if语句完成If语句的嵌套完成,#include#include#include main()srand(time(NULL);int d11,d12,d21,

10、d22,sum1,sum2;d11=rand()%6+1;d12=rand()%6+1;d21=rand()%6+1;d22=rand()%6+1;sum1=d11+d12;sum2=d21+d22;printf(%d%dn,d11,d12);printf(%d%dn,d21,d22);,if(d11!=d12,if(d11!=d12,2.2 循环程序设计,循环在我们生活中需要反复执行某一段程序,即循环,循环的组成,循环初值设定循环条件判断循环操作循环参数改变,循环的原则,满足循环条件,执行循环体;不满足循环条件,跳出循环体,执行循环体以外的程序。,循环分类,当循环先判断循环条件,满足循环条件

11、,则执行循环体,不满足循环条件,则不执行循环体直到循环先执行循环体,再判断循环条件。如果满足循环条件,则执行循环体,如果不满足循环条件,则跳出循环体。,否,当循环,直到循环,当循环的格式:while(表达式)循环体;,直到循环的格式:do 循环体;while(表达式);,举例:分别用当循环和直到循环实现,#includemain()int i=1,sum=0;while(i=100)sum=sum+i;i+;printf(sum=%dn,sum);,当循环,#includemain()int i=1,sum=0;dosum+=i;i+;while(i=100);printf(sum=%dn,s

12、um);,直到循环,求超越方程 的正数解,要求误差0.001。,举例:用当循环和直到循环,分析:x=0时,方程左边=1 方程右边=4,经分析可知:方程的解在12之间。,1,2,1,2,x,x+2,ex,y,#include#includemain()double x=1.0,h=0.0001;while(fabs(exp(x)-x-2)0.001)x=x+h;printf(x=%fn,x);,#include#includemain()double x=1.0,h=0.0001;while(fabs(exp(x)-x-2)0.001)x=x+h;printf(x=%fn,x);,#includ

13、e#includemain()double x=1.0,h=0.0001;do x=x+h;while(fabs(exp(x)-x-2)0.001);printf(x=%fn,x);,#include#includemain()double x=1.0,h=0.0001;do x=x+h;while(fabs(exp(x)-x-2)0.001);printf(x=%fn,x);,赌大小,演示程序,#include#include#include main()int d1,d2,d3,sum;srand(time(NULL);do d1=1+rand()%6;d2=1+rand()%6;d3=1

14、+rand()%6;sum=d1+d2+d3;,printf(%4d,d1);printf(%4d,d2);printf(%4d,d3);if(d1=d2,错误写法,if(d1=d2=d3),for循环,while循环和dowhile循环通常用在循环次数不确定的场合;for循环常用在循环次数确定的场合;但是,for循环非常灵活,即使循环次数不确定,也可以通过for循环完成。,for循环的一般形式:,for(表达1;表达式2;表达式3)循环体;,for(循环变量赋初值;循环条件;循环变量增值),For循环的执行过程,#includemain()int i,sum=0;for(i=1;i=10;i

15、+)sum=sum+i;printf(sum=%d,sum);,#include#includemain()double x,h=0.0001;for(x=1.0;fabs(exp(x)-x-2)0.001;x=x+h)printf(x=%fn,x);,#include#includemain()double x,h=0.0001;for(x=1.0;fabs(exp(x)-x-2)0.001;x=x+h);printf(x=%fn,x);,表达式1省略表达式2省略表达式3省略,For语句中表达式的省略,#includemain()int sum=0;for(;i=10;i+)sum=sum+

16、i;printf(sum=%dn,sum);,表达式1省略,#includemain()int i=1;int sum=0;for(;i=10;i+)sum=sum+i;printf(sum=%dn,sum);,解决办法:在程序开始处赋初值,#includemain()int i;int sum=0;for(i=1;i+)sum=sum+i;printf(sum=%dn,sum);,表达式2省略,#includemain()int i;int sum=0;for(i=1;i+)sum+=i;if(i=10)break;printf(sum=%dn,sum);,解决办法:用break语句在循环体

17、合适的地方跳出循环,#includemain()int i;int sum=0;for(i=1;i=10;)sum+=i;printf(sum=%dn,sum);,表达式3省略,#includemain()int i;int sum=0;for(i=1;i=10;)sum+=i;i+;printf(sum=%dn,sum);,解决办法:在循环体中完成循环变量增值,#include#includemain()double x,h=0.0001;for(x=1.0;fabs(exp(x)-x-2)0.001;)x=x+h;printf(x=%fn,x);,工程应用:求积分,0,h,2h,3h,ih

18、,999h,1000h=2,计算机实现(矩形法):所求积分值实际上是各个矩形面积的叠加。,#include#include main()int i;double s=0.0;double h=2.0/10000;for(i=0;i=9999;i+)s=s+exp(i*h)*h;printf(%f,s);,误差分析:,准确解:6.389056,#include#include main()int i;double s=0.0;double h=2.0/10000;for(i=1;i=10000;i+)s=s+exp(i*h)*h;printf(%f,s);,误差分析:,准确解:6.389056,

19、0,h,2h,3h,ih,2,计算机实现(梯形法):所求积分值实际上是各个梯形面积的叠加。,(i+1)h,#include#include main()int i;double s=0.0;double h=2.0/5000;for(i=0;i=4999;i+)s=s+(exp(i*h)+exp(i+1)*h)/2*h;printf(%fn,s);,误差分析:,准确解:6.389056,猴子吃桃,猴子摘了若干桃子,每天吃桃子的一半加1个,第10天早晨发现只剩1个桃子了。问猴子共摘了多少个桃子?,#include main()int i;int n=1;for(i=1;i=9;i+)n=2*(n

20、+1);printf(%d,n);,石头剪刀布游戏,共玩10次,统计胜、负以及平局的次数。,#include#include#include main()int i,j,n;int lose=0,win=0,equal=0;,for(n=1;n=10;n+)srand(time(NULL);i=rand()%3;printf(请输入0、1或2(0、1、2分别代表石头剪刀布):);scanf(%d,if(i=0,if(i=1,if(i=2,printf(胜负平分别是%d,%d,%d次n,win,lose,equal);,1、有3个整数a、b、c,由键盘输入,输出其中最大的数。,2、给出一百分制成绩,要求输出等级A,B,C,D,E。90分以上为A,80到89为B,70到79为C,60到69为D,60分以下为E。3、从键盘逐个输入10个学生的成绩,输出其平均成绩,80分以上(含80分)和不及格人数分别是少?(分别用while语句,do.while语句,和for语句完成),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号