《选择结构程序设计》PPT课件.ppt_第1页
《选择结构程序设计》PPT课件.ppt_第2页
《选择结构程序设计》PPT课件.ppt_第3页
《选择结构程序设计》PPT课件.ppt_第4页
《选择结构程序设计》PPT课件.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第4章 选择结构程序设计,第4章内容,4.1 关于算法 4.2 条件判断 4.3 用if语句实现选择结构 4.4 利用switch语句实现多分支选择结构 4.5 程序举例,请把下面的空填写完整,#include void main() float x,y; int a,b; x=11.111345; a=56; ,/*输入y和b*/,/*输出x(x占6列保留3位小数)和a*/,/*输出y和x+y(保留2位小数)*/,scanf(“%f%d”,printf(“%6.3f %d”,x,a);,printf(“%.2f %.2f”,y,x+y);,4.1 关于算法,程序=数据结构+算法,算法就是解决问题的方法和要遵循的步骤。,如第3章的例3.13的算法是:,(1)首先需要输入a,b,c (2)然后计算s=(a+b+c)/2 (3)再用公式计算三角形面积 (4)最后输出三角形的边长和面积,怎样表示算法,1、自然语言 2、用流程图 3、用N-S流程图 4、用伪代码表示,顺序结构,选择结构,循环结构,n,4.2 条件判断,如果你在家,我去造访你; 如果考试不及格,要补考; 周末我们去郊游; 如果ab,输出a 。,注意:判断的结果是一个逻辑值:“真”或“假”,复习:,例 从键盘输入一个大写字母,用其对应的小写字母输出,#include “stdio.h“ main() char c1,c2; c1=getchar(); c2=c1+32; printf(“%cn“,c2); ,输入:A 输出:a,第4章 选择结构程序设计,引入新课:,例 从键盘输入任意一字母,是小写输出对应的大写字母,是大写输出对应的小写字母。,输入一个字符c1,往哪边走呢?,if(ch=A&ch=Z),第4章 选择结构程序设计,引入新课:,例 从键盘输入任意一字母,是小写输出大写,是大写输出对应的小写。,#include “stdio.h“ main() char c1,c2; c1=getchar(); if(ch=A ,输入:A 输出:a,输入:b 输出:B,第4章 选择结构程序设计,4.2.1 关系运算和关系表达式,4.2.2 逻辑运算和逻辑表达式,4.2.1 关系运算和关系表达式,结合性:从左至右,关系表达式的结果只有两个: (1) 真(值为1) (2) 假(值为0),问:写出下面判断的关系表达式:,整型变量a是否为0 字符变量z是否为n 变量a是否大于等于变量b 字符变量c是否小于字符A,a=0,z=n,a=b,表达式,表达式的值,设int a=1,b=0; char z=n, c=a;,cA,0,1,1,0,假如有: int a,b,c,f; a=(230); b=(23-9) = (18-6); c=3; f=abc; 则,a,b,c,f的值分别为多少?,算术运算符优先级高于关系运算符 3+(43)*4 值为: 3+43*4 值为,注意,3,1,a为1 b为0 c为 3 f为0,4.2.2 逻辑运算符及逻辑表达式,问:从键盘上输入数字,判断这个数字是否在0到100之间,如何写表达式?,#include main() int a; scanf(“%d“, ,逻辑运算符 相当于: 0 a 100,4.2.2 逻辑运算符及逻辑表达式 逻辑运算符的作用:用于判断条件中的逻辑关系。 逻辑运算符及其含义和优先级如下:,例如: (1) n是小于m的偶数: (2)year是闰年: (能被4整除但不能被100整除,或能被400整除),逻辑表达式一般用于控制语句中的条件:,n m & n % 2 = 0,year % 4 = 0 & year % 100 != 0 | year % 400 = 0,逻辑表达式的结果: 真(值为1) 假(值为0) (注:非零值均为真) 逻辑运算规则:,int a=5; float b=3.5; !a ( ) !(a 0) ( ) (a 0) ( ),例如,0,1,1,0,0,0,1,1,0,0,0,1,5 3 & 8 4 - !0,1,1(即!0),3(即4-!0),0(即83),&,0,形式二: 格式:if (expression) statement1 else statement2 执行过程:,例:if (xy) max=x; else max=y;,4.3 用if语句实现选择结构,if语句(条件选择语句) if语句的三种形式 形式一: 格式:if(expression) Statement 执行过程:,#include “stdio.h“ main() char c1; c1=getchar(); if (c1=A ,#include “stdio.h“ main() char c1,c2; c1=getchar(); if (c1=A ,例:if (xy) printf(“%d”,x);,编写程序:输入3个分别表示箱子长、宽、高的整数值,判断并输出该箱子是立方体还是长方体。,提示:如果长、宽、高相等,则为立方体 在输入前要求有提示信息。 输出结果时有文字说明。,#include void main() int l,w,h; printf(“请输入箱子的长、宽、高:n“); scanf(“%d%d%d“, ,习题:从键盘输入一个数,如果此数是一个三位正整数,则输出该数的逆序,否则什么也不做。,#include main() int a,b,c,x,y; printf(“请输入正整数:n“); scanf(“%d“, ,输入:256 输出:256:652,if (x=100&x=999),输入:9999 ,习题:从键盘输入一个数,如果此数是一个三位正整数,则输出该数的逆序,否则输出一句话“您输入入的数不是三位正整数”。,#include main() int a,b,c,x,y; printf(“请输入正整数:n“); scanf(“%d“, ,输入:256 输出:256:652,输入:9999 输出:您输入的数不是三位正整数,else printf(“您输入的数不是三位正整数n”);,形式三: 格式:,if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statement n ,执行过程:,右单支,例:if (score=90) printf(“优”); else if (score=80) printf(“良”); else if (score=70) printf(“中”); else if (score=60) printf(“及格”); else printf(“不及格”);,说明: if后面的表达式类型任意,语句可以是复合语句,如:if(a=b,例 考虑下面程序的输出结果: #include main() int x,y,t; scanf(“%d,%d”, ,Compile Error!,问:作用是什么?,答:互换x和y的值,if语句的任意嵌套: 一般形式:,例 输入两数并判断其大小关系 (有三种可能,xy; xy; x=y),main() int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, ,运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对,例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,实现if else 正确配对方法:加 ,例,例 4-3,编写程序,通过输入x的值,计算阶跃函数y的值。,程序1: main ( ) float x, y; scanf(“f“, ,程序2:将上面程序的if语句改为: y=0; if (x=0) if (x0) y=1; else y= 1;,对不对?,1if语句的一般格式 if(表达式) 语句组1; else 语句组2; (1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。 (3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。 2if语句的执行过程 (1)缺省else子句时 当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,否则直接转向执行下一条。,要点:,(2)指定else子句时 当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,然后转向下一条语句;否则,执行语句组2。 3if语句的嵌套与嵌套匹配原则 if语句允许嵌套。所谓if语句的嵌套是指,在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。 if语句嵌套时,else子句与if的匹配原则:与在它上面、距它最近、且尚未匹配的if配对。 为明确匹配关系,避免匹配错误,强烈建议:将内嵌的if语句,一律用花括号括起来。,问?,设整型变量 m,n,a,b,c,d 均为1,执行 (m=ab)&(n=cd)后, m,n 的值是( )。 A. 0,0 B. 0,1 C. 1,0 D. 1,1,特别注意:,在逻辑表达式求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。,(1)a&b&c。只有a为真时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不必判别b和c。,例如: int a=4,b=8,c; c=(ab) 程序运行结果为:,c=0,a=4。,特别注意:,(2)a|b|c。只要a为真(非0),就不必判断b和c。只有a为假,才判别b。a和b都为假才判别c。,例如: int a=4,b=8,c; c=(ab)|(+a); printf(“c=%d, a=%dn”,c,a); 程序运行结果为:,c=1,a=4。,4.3.3 条件运算符和条件表达式,if (ab) max=a; else max=b;,等价于,max=(ab) ? a : b,?和: ,它们与三个操作数组组成三元运算。 形式为: ? : 求值规则: 先求解表达式1的值 若为真(非0),求解表达式2,并把表达式2的值作为整个条件表达式的值 若为假(0),求解表达式3,并把表达式3的值作为整个条件表达式的值,4.3.3 条件运算符,又如: y = x10 ? x/10 : x0 ? x: -x 当x的值为整型的15时,表达式的结果为: 当x的值为整型的5时,表达式的结果为:,1,5, 优先级: 算术关系条件赋值, 结合性:自右至左;,如果int a=3,b=5, 则 c=ab?a: b+1,c的值是,6,如果int a=1,b=2, c=3,d=4, 则 条件表达式ab?a: cd?c:d的值是,4,4.3.3 条件运算符,(4) 条件表达式还可以写成: ab ? (a=100): (b=100) 或 ab ? printf(“%d”,a) : printf(“%d”,b) (5) 条件表达式中,各表达式的数据类型可以不同 x? a: b” xy ?1:1.5,例:if (score=90) printf(“优”); else if (score=80) printf(“良”); else if (score=70) printf(“中”); else if (score=60) printf(“及格”); else printf(“不及格”);,4.4 利用switch语句实现多分支选择结构,4.4 利用switch语句实现多分支选择结构 一般形式:,switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; ,switch( grade) case A: printf(“90100”); case B: printf(“8090”); case C: printf(“7080”); case D: printf(“60”); default: printf(“errorn”); ,如,问:能把上述程序补全吗?,4.4 利用switch语句实现多分支选择结构,switch( grade) case A: printf(“90100”); case B: printf(“8090”); case C: printf(“7080”); case D: printf(“60”); default: printf(“errorn”); ,(1) Switch后面括号的表达式可以为任何类型,(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配时,就执行default后面的语句,(3)每一个case的常量表达式的值必须互不相同;,(4)各个case和default的出现次序不影响执行结果,(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。,(6)多个case可以共用一组执行语句,/*根据天气情况决定活动内容*/ #include main( ) int weather; printf(“Please enter a weather:n“); scanf(“%d“, ,Please enter a weather: 2 有风无雨-活动内容:郊游 下雪-活动内容:堆雪人 下雨-不举行班级活动 其他天气-活动内容:参观博物馆,#include main( ) int weather; printf(“Please enter a weather:n“); scanf(“%d“, ,Please enter a weather: 2 有风无雨-活动内容:郊游,做如下修改:,break;,break;,break;,break;,例4-7运输费用的计算问题。货物的运输费用与距离和重量有关,距离S越远,每公里的运费越低。总运输费用Exp的计算公式为:Exp=P*W*S*(1d),式中P为每公里每吨货物的基本运费、W为货物重量(t)、S为运输距离(km)、d为折扣,折扣率d与距离有关,具体标准如下: 0S250 没有折扣(d=0) 250S500 折扣2%(d=2%) 500S1 000

温馨提示

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

最新文档

评论

0/150

提交评论