[理学]第四讲第一节 三大结构之顺序选择.ppt_第1页
[理学]第四讲第一节 三大结构之顺序选择.ppt_第2页
[理学]第四讲第一节 三大结构之顺序选择.ppt_第3页
[理学]第四讲第一节 三大结构之顺序选择.ppt_第4页
[理学]第四讲第一节 三大结构之顺序选择.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1,第四讲 C程序三大基本结构 之顺序选择,主讲:史虹 电话QQ: 26358486,2,三种基本的程序执行结构: 顺序执行 选择执行(按条件执行) 循环执行,3,顺序结构程序设计,在顺序结构中,按语句出现的顺序依次执行,先出现的语句先执行,后出现的语句后执行,每条语句都执行。 只含赋值语句、输入语句和输出语句的程序,称作纯顺序结构程序。前面出现的程序都是纯顺序结构程序。,4,顺序结构程序设计,顺序结构的框图,5,顺序结构程序设计,程序模版 定义符号常量命令与包含头文件命令 main() 定义变量 输入原始数据 处理(运算) 输出结果 ,6,举例 求圆的周长和面积。 已知三角形的两边夹角,求第三边和面积。 输入一个三位整数,求它的个位、十位和百位数字,并反向输出这个三位数。 交换两个整型变量a,b的值。 输入三个实数a,b,c(假设已满足a0且b2-4ac0),解一元二次方程ax2+bx+c=0。,7,输入一个三位正整数,判断它是不是“水仙花数”(个位的立方,十位的立方与百位的立方和等于该数)。是,输出y,不是,输出n。,8,关系运算符和关系表达式,关系运算符:数学上的等号、不等号在计算机程序设计语言中称作。 数学上的等号、不等号与C语言中的关系运算符之间的对应关系: 数学上的等号、不等号 C语言中的关系运算符 (大于) (大于或等于) = (小于) (小于或等于) = = (等于) = (等于) != 要特别注意C语言中的关系运算符等于与不等于的写法。,9,关系表达式:数学上的等式、不等式在计算机程序设计语言中称作。 C语言中的关系表达式是:用关系运算符连接两个算术表达式,得到的式子。例如: x=0 表示x大于或等于0; m=n 表示m等于n; xz 表示x加y大于z。,10,关系表达式的值:C语言中用逻辑值“真”,表示关系表达式“成立”;用逻辑值“假”,表示关系表达式“不成立”。 C语言中用整数1表示逻辑值“真”,用整数0表示逻辑值“假” : 例:x为5,关系表达式x=0成立,此时,称关系表达式x=0的值为1。 x为-3时,关系表达式x=0不成立,此时,称关系表达式x=0的值为0。,11,练习:写出表示下列条件的关系表达式: .x为负数。 . x为奇数。 .x为偶数。 .x为非负数。 .x是3的倍数(x能被3整除)。 .x不等于7。,12,关系运算符的优先级,13,选择执行语句,条件语句 if(条件) 语句1; else 语句2; 执行过程 流程图,14,选择执行语句,练习 实现分段函数: x+5,x 0 y= x2+5,x0 输入一个正整数,当它是偶数时,输出“even”,当它是奇数时,输出“odd”。,15,空语句与短式if语句 输入一个实数给变量x,求其绝对值并赋值给变量y,输出y。 输入一个整数给变量x,,当x的值为0时,输出yes。 if语句的应用 求两个实数x,y的最小值给变量min,并输出。 求三个实数x,y,z的最小值给变量min,并输出。 给两个实数排序 (“复合语句” ) 给三个实数排序 (“复合语句” ) 表示100以内整数n能同时被4、7、11整除,16,逻辑运算符和逻辑表达式,复杂条件 逻辑运算符与逻辑表达式 &逻辑与 1&1的值为1 1&0的值为0 0&1的值为0 0&0的值为0,17,逻辑运算符和逻辑表达式,|逻辑或 1| |1的值为1 1| |0的值为1 0| |1的值为1 0|0的值为0 !逻辑非 !1 的值为 0 !0 的值为 1,18,逻辑运算真值表 A B A&B A|B !A !B 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 口诀 & | ! 有0则0 有1则1 取反 全1才1 全0才0,19,逻辑运算符和逻辑表达式,逻辑运算符的优先级 逻辑运算符 ! 算术运算符 *、/、% 算术运算符 +、- 关系运算符 、=、= 关系运算符 =、!= 逻辑运算符 & 逻辑运算符 | 赋值运算符 = 逻辑表达式,20,逻辑运算符和逻辑表达式,练习: .如何表示学生年龄g在18于24之间(包括18和24)。 .如何表示年份year(int型)能被4整除。 .如何表示年份year(int型)能被100整除且不能被400整除。 .如何表示整数n能同时被3、5、7整除。,21,逻辑运算符和逻辑表达式,练习 输入三个实数a,b,c(满足a0且b*b-4*a*c=0),解一元二次方程ax2+bx+c=0。 输入一个公元年份year,判断这一年是不是闰年。是,输出yes,不是,输出no。,22,逻辑运算符和逻辑表达式,短路运算 C语言规定逻辑与与逻辑或为“短路运算”,即在逻辑表达式求值时,不一定算到“底”。 比如前面提到的逻辑表达式 5|x0,5非零为真,不论x0的值是什么,该逻辑表达式的值都为真,所以计算机执行程序时,并不计算x0的值;同理,x的值为-3时,如果求逻辑表达式!(x7的值时,当计算!(x7的值了。 这就如同体育比赛,规定“五局三牲”,当出现三比零或三比一时,胜负已定,比赛不必继续进行。,23,逻辑运算符和逻辑表达式,练习:当a,b,c的值分别为3,4,5时,求下列逻辑表达式的值 . a+bc&b=c . a|b+c&b-c . !(ab)&!c|1 . !(x=a)&(y=b)&0 . !( a+b)+c-1&b+c/2,24,If 嵌套,求三支函数 y= 1 (x0) 的值。 0 (x=0) -1 (x0),25,If 嵌套,26,If 嵌套,main() float x,y; scanf(“%f”, ,27,If 嵌套,If嵌套和多路分支 两层嵌套处理三路分支 两层嵌套处理三路分支有两种情况。 1.里层if语句为语句1,在else前 if(条件1) if(条件2)语句1; else 语句2; else 语句3;,28,If 嵌套,2.里层if语句为语句2,在else后 if(条件1) 语句1; else if(条件2)语句2; else 语句3;,29,If 嵌套,main() float x,y; scanf(“%f”, ,这种情况,常常把外层的else与里层的if写在一行上,(写成else if),30,If 嵌套,四路及多路分支 1.用两层嵌套处理四路分支 把百分制分数s,转化为等级制A、B、C、D。若90s100,则s转化为A; 若80s89,则s转化为B; 若60s79,则s转化为C; 若0s59,则s转化为D。,31,If 嵌套,main() int s; char g; scanf(“%d”, ,32,If 嵌套,3. 用三层嵌套处理四路分支 上面的问题用三层嵌套处理,程序为: main() int s; char g; scanf(“%d”, ,33,If 嵌套,if (条件表达式1) 语句1; else if (条件表达式2) 语句2; else if (条件表达式3) 语句3; else 语句n;,34,If 嵌套,关于else与if匹配 在if嵌套处理过程中,也有短式if出现。这样,else的个数就少于if的个数。那么else与哪个if匹配?为避免二义性,C语言规定,else与前面最近的if匹配。例如,出现 if(条件1) if(条件2)语句1; else if(条件3) 语句2; else 语句3;,if(条件1) if(条件2)语句1; else if(条件3) 语句2; else 语句3;,if(条件1) if(条件2)语句1; else if(条件3) 语句2; else 语句3;,if(条件1) if(条件2)语句1; else if(条件3) 语句2; else 语句3;,35,If 嵌套,练习: 1、求数学函数 x2,x 2 y= |x|,-20时,方程有两个不等的实根,当=0时,方程有两个相等的实根,当0时,方程没有实数根。 3、设计一个计算实数四则运算的计算器。,36,If 嵌套,设计一个计算实数四则运算的计算器: main() float x,y,z; char c; scanf(“%f%c%f”, ,37,switch语句,switch语句 switch语句是用来处理多路分支的另一种常用语句。凡是能用switch语句来处理的问题,都能用if语句处理。 switch语句处理多路分支的优势 用switch语句处理,技巧高一些。在某些情况下,用switch语句处理多路分支,程序更清晰,可读性更好。 switch语句的标准格式 switch(表达式) case 常量表达式1: 语句1;break; case常量表达式2: 语句2;break; case常量表达式3: 语句3;break; case常量表达式n: 语句n;break; default: 语句n+1; ,38,switch语句的应用 用switch语句设计实数四则运算的计算器。 用switch语句把百分制分数s,转化为等级制A、B。若90s100,则s转化为A; 若60s89,则s转化为B; 若0s59,则s转化为C。,39,练习:用 switch语句,处理如下问题。 按着考试成绩的等级,打印出百分制的分数段:A对应90100;B对应8089;C对应7079; D对应6069;E对应059。 实现输入奖学金等级,输出奖学金金额:共分3等,一等1000,二等500,三等200; 全班同学按学号先后顺序编号为1、2、3,按照同学的编号将全班同学分为5组:要求输入某同学的编号,输出该同学应当的分组号。 货运公司运货计费问题,计算公式f=p*w*s*(1-d)。这里f为运费,p为单价(元/吨*公里),w为货物的重量,s为公里数,d为折扣。 远程有折扣,当路程s满足:s500公里时,折扣为0;500s1000公里时,折扣为5%;1000s3500公里时,折扣为10%;3500s公里时,折扣为15% 输入年、月、日,输出这一天是该年的第几天。,40,条件运算 条件运算符与条件表达式 if(ab) max=a; else max=b; 如果用条件运算符,就简单了: max=ab?a:b ?:称作“条件运算符” 条件运算符的优先级与结合性,41,选择执行语句,写按条件执行语句的注意事项: 条件表达式的值决定了程序的走向,决定了程序执行不同的分支 注意条件的正确表达:是否应该包括相等的情况 对于float变量,一定要避免用“=”或“!=”与数字进行比较 条件经常用关系表达式、逻辑表达式表示,但也可以是算术表达式,甚至是赋值表达式 条件表达式中,注意别把“=”写成“=” 注意ifelse的配对:else总是跟最近的没配过对的if配对,42,选择执行语句,注意: switch-case的格式(整型表达式?常量表达式?) 如果不加break,结果如何? 整型表达式的数值类型必须和case语句中的常量表达式的类型一致(只能是int型或者char型) 所有常量表达式的类型必须相同,而它们的值必须互不相同 switch-case格式与ifelse ifelse的区别?,43,习题 1. 输入一个正整数,如果能同时被3和7整除,输出yes,否则输出no。 x+4 (x=5) 2. 求三支函数 y= 2x-1 (-1=x5) 的值。 3x (x-1) 3. 输入年、月,输出这月有多少天。 4.输入三个正

温馨提示

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

评论

0/150

提交评论