选择程序设计和循环程序设计.ppt_第1页
选择程序设计和循环程序设计.ppt_第2页
选择程序设计和循环程序设计.ppt_第3页
选择程序设计和循环程序设计.ppt_第4页
选择程序设计和循环程序设计.ppt_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

第二讲 选择与循环程序设计(C语言的精髓),2.1 选择程序设计(分支),重要的两句话: 1、选择是需要有条件的; 2、选择是残酷的,根据条件的不同,有的被选择,有的不被选择。,构成条件的基础,1、关系运算符与关系表达式,2、逻辑运算符和逻辑表达式,1、关系运算符与关系表达式,关系运算符有: 、=、 、 = (优先级高) = 、 != (优先级低),关系表达式,由关系运算符组成的有一定比较关系的表达式称为关系表达式。 例如: salary=1500 age=60,关系表达式的结果:成立或不成立 逻辑成立:true 逻辑不成立:false 例如:53 成立,true 35 不成立,false,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,优先级: 算术运算符的优先级要高于关系运算符,关系运算符的优先级要高于逻辑运算符。,二级考试题,已知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“); printf(“为人民服务!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语句的嵌套,将所有的条件全部罗列出来,为每个条件给出相应的执行语句。 功能最强大的语句之一。,纯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 #include 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 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(“%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(“鲁肃“); else printf(“张飞“);,if语句的嵌套,当一个if语句结构中又 包含一个或多个if语句 ,称为if语句的嵌套。 典型案例:某推销员的月收入,典型案例:某推销员的月收入,举例:某洗发水推销员,其基本工资是人民币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,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 循环程序设计,循环在我们生活中 需要反复执行某一段程序,即循环,循环的组成,循环初值设定 循环条件判断 循环操作 循环参数改变,循环的原则,满足循环条件,执行循环体; 不满足循环条件,跳出循环体,执行循环体以外的程序。,循环分类,当循环 先判断循环条件,满足循环条件,则执行循环体,不满足循环条件,则不执行循环体 直到循环 先执行循环体,再判断循环条件。如果满足循环条件,则执行循环体,如果不满足循环条件,则跳出循环体。,否,当循环,直到循环,当循环的格式: while(表达式) 循环体; ,直到循环的格式: do 循环体; while(表达式);,举例:分别用当循环和直到循环实现,#include main() int i=1, sum=0; while(i=100) sum= sum+i; i+; printf(“sum=%dn“,sum); ,当循环,#include main() int i=1, sum=0; do sum+=i; i+; while(i=100); printf(“sum=%dn“,sum); ,直到循环,求超越方程 的正数解,要求误差0.001。,举例:用当循环和直到循环,分析: x=0时,方程左边=1 方程右边=4,经分析可知:方程的解在12之间。,1,2,1,2,x,x+2,ex,y,#include #include main() double x=1.0,h=0.0001; while(fabs(exp(x)-x-2)0.001) x=x+h; printf(“x=%fn“,x); ,#include #include main() double x=1.0,h=0.0001; while(fabs(exp(x)-x-2)0.001) x=x+h; printf(“x=%fn“,x); ,#include #include main() 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 main() 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+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循环的执行过程,#include main() int i, sum=0; for(i=1;i=10;i+) sum=sum+i; printf(“sum=%d“,sum); ,#include #include main() double x,h=0.0001; for(x=1.0;fabs(exp(x)-x-2)0.001;x=x+h) printf(“x=%fn“,x); ,#include #include main() 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语句中表达式的省略,#include main() int sum=0; for( ;i=10;i+) sum=sum+i; printf(“sum=%dn“,sum); ,表达式1 省略,#include main() int i=1; int sum=0; for(;i=10;i+) sum=sum+i; printf(“sum=%dn“,sum); ,解决办法:在程序开始处赋初值,#include main() int i; int sum=0; for(i=1; ;i+) sum=sum+i; printf(“sum=%dn“,sum); ,表达式2 省略,#include main() int i; int sum=0; for(i=1; ;i+) sum+=i; if(i=10) break; printf(“sum=%dn“,sum); ,解决办法:用break语句在循环体合适的地方跳出循环,#include main() int i; int sum=0; for(i=1;i=10; ) sum+=i; printf(“sum=%dn“,sum); ,表达式3 省略,#include main() int i; int sum=0; for(i=1;i=10;) sum+=i; i+; printf(“sum=%dn“,sum); ,解决办法:在循环体中完成循环变量增值,#include #include main() 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,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,0,h,2h,3h,ih,2,计算机实现(梯形法):所求积分值实际上是各个梯形面积的叠加。,(i+1)h,#include #include main() int i; double s=0.0; double h=2.0/5000

温馨提示

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

评论

0/150

提交评论