c语言选择结构程序设计.ppt

上传人:豆**** 文档编号:24476610 上传时间:2022-07-05 格式:PPT 页数:38 大小:635KB
返回 下载 相关 举报
c语言选择结构程序设计.ppt_第1页
第1页 / 共38页
c语言选择结构程序设计.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《c语言选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言选择结构程序设计.ppt(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、共共 37 37页页 第第 2 2 页页第一节第一节 关系运算与逻辑运算关系运算与逻辑运算第二节第二节 用用if if语句设计选择结构程序语句设计选择结构程序第三节第三节 用用switchswitch语句设计多分支结构语句设计多分支结构第四节第四节 应用实例应用实例共共 37 37页页 第第 3 3 页页4.1 4.1 关系运算与逻辑运算关系运算与逻辑运算l关系运算和逻辑运算经常作为条件语句和循环语关系运算和逻辑运算经常作为条件语句和循环语句中的条件,其结果为一句中的条件,其结果为一逻辑值逻辑值 A和和 B中至少有一个大于中至少有一个大于 C如何用如何用C语言描述语言描述 A和和 B全部大于全

2、部大于 CA为不大于为不大于100 的的 偶偶 数数关系运算是一种比较运算,将两个值(表达式)进关系运算是一种比较运算,将两个值(表达式)进行比较,判断比较的结果是否符合给定的条件行比较,判断比较的结果是否符合给定的条件共共 37 37页页 第第 4 4 页页一、关系运算符一、关系运算符大于大于 , 大于等于大于等于 =,小于,小于 ,不等不等 != 小于等于小于等于bc共共 37 37页页 第第 5 5 页页2. 关系表达式的结果是一个逻辑值,根据关系是否满足,关系表达式的结果是一个逻辑值,根据关系是否满足,分别取分别取 1,或,或 0二、关系表达式二、关系表达式int i=1,j=7,a;

3、 a=i+(j%4!=0)a的值?的值?结果:结果:a=23. 使用关系表达式应注意使用关系表达式应注意1) 数学上,判断数学上,判断x是否在区间是否在区间 a,b 时,时,习惯上写成习惯上写成a=x=b,但在但在C 中,必须写成中,必须写成 a=x & x0 的值为逻辑的值为逻辑 14.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 6 6 页页1.0/3.0 * 3.0 = 1.0的逻辑值为的逻辑值为03) 当判断两个浮点数是否相等时,由于存储上的误当判断两个浮点数是否相等时,由于存储上的误差,可能会有错误的结果,例如:数学上:差,可能会有错误的结果

4、,例如:数学上:恒等式恒等式1.0 / 3.0 * 3.0 = 1.04) 在数学中,在数学中,5 2 7 8 无效,但无效,但C中是允许中是允许 的的5)关系表达式的结果可以当成)关系表达式的结果可以当成整型数整型数int a=3,b=5,c=7,d; d = a c逻辑逻辑117逻辑逻辑0d的值的值为为04.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 7 7 页页4.1.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式一一 、逻辑运算符、逻辑运算符1. 1. 有三个有三个& & (与与): 两边为两边为1,结果为,结果为1| (或):两边有一个为

5、(或):两边有一个为1,结果为,结果为1! (非):非(非):非1为为0,非,非0为为12. 优先级:优先级:!的优先级高于的优先级高于&和和|逻辑运算与其他运算相比:逻辑运算与其他运算相比: 非的优先级最高,与和或非的优先级最高,与和或低于其他。低于其他。3. 结合性:与和或是从左向右,非是从右向左结合性:与和或是从左向右,非是从右向左4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 8 8 页页二二 、逻辑表达式、逻辑表达式2. 表达式的值为表达式的值为逻辑逻辑的的1和和0,表示,表示真真与与假假任何非零实任何非零实数均可作为数均可作为逻辑上的逻辑

6、上的1 1例:例:a=5,b=7,c=4,d=3x=(a+b)(c+d)&(da)先先做算术运算,再做关系做算术运算,再做关系判断,将最后结果赋给判断,将最后结果赋给x1. 用逻辑运算符将用逻辑运算符将关系运算表达式关系运算表达式或或逻辑量逻辑量连接起来构成连接起来构成逻辑表达式逻辑表达式5 2 7 85 2 7 8从左向右运算从左向右运算 (52) (52)逻辑值为逻辑值为1 1 (17) (17)逻辑值为逻辑值为0 0 (08) (08)逻辑值为逻辑值为0 0整个表达式的值为整个表达式的值为 0 04.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第

7、9 9 页页3 . 在逻辑表达式中,并不是所有的逻辑运算都必须执行在逻辑表达式中,并不是所有的逻辑运算都必须执行,如果,如果&的一边已经为的一边已经为0,结果一定为结果一定为 0,如果,如果 | 的一的一边已经为边已经为 1 ,结果一定为结果一定为 1(1) a&b&c a为非为非0时,再判断时,再判断 b, a,b均为非均为非0, 再再判断判断c(2 ) a|b|c,若若a为非为非0,不必判断,不必判断 b和和 c,结果一定为结果一定为 1 已知已知 :a=1,b=2,c=3,d=4,m=1,n=1 执行执行(m=ab)&(n=cd) 之后之后 : m=? n=?由于由于 ab的值为的值为

8、0,m=0不再判断不再判断(n=cd)的值,因此,的值,因此,n 维持原有的值维持原有的值m=0n=14.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 1010 页页求逻辑表达式的值求逻辑表达式的值1 ) 14&47 2 ) 143 ) !(2=5) 4 ) ! ( 1 3) | (25)5 ) !(4=6)&(3b)?a:b 当当 a=9,b=5时,时,x=9条件运算要求有三个运算分量,并且不论条件是否成条件运算要求有三个运算分量,并且不论条件是否成立,都必须是为同一个变量赋值立,都必须是为同一个变量赋值4.1 4.1 关系运算与逻辑运算(续)关系运

9、算与逻辑运算(续)共共 37 37页页 第第 1212 页页3 条件运算符的优先级:高于赋值,低于其他条件运算符的优先级:高于赋值,低于其他4 结合性:从右向左结合性:从右向左z=(ab)?a:(ad)?c:d5 数据类型可以不同:数据类型可以不同:xy?a:b执行执行:int x=10,y=9; int a,b,c;a=(- -x=y+)?-x:+y;b=x+; c=y;后后a,b,c? a, b, cA) 9, 9, 9B) 8, 8, 10C) 8,10, 9D) 1,11,10X为为9y为为10X为为84.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页

10、 第第 1313 页页若若w,x,y,z,m均为均为int型变量,则执行下面语句后的型变量,则执行下面语句后的m值为:值为:w=1;x=2;y=3;z=4;m=(wx)? w: x;m=(my)? m : y;m=(mz)? m:z;A) 1 B) 2 C) 3 D) 4若若w=1,x=2,y=3,z=4,则表达式则表达式wx?w:yz?y:z的值是:的值是:A) 4 B)3 C)2 D)14.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 1414 页页4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序if语句构成的选择结构是语句构成

11、的选择结构是C的三种基本结构之一。用来的三种基本结构之一。用来确定给定的条件是否满足,所含条件一般是关系表达确定给定的条件是否满足,所含条件一般是关系表达式或逻辑运算表达式。式或逻辑运算表达式。根据学生分数判断是否及格?根据学生分数判断是否及格?根据学生分数如何进行分级?根据学生分数如何进行分级?自然语言:自然语言:如果如果 那么那么 否则否则C语言:语言:选择(分支)语句选择(分支)语句如何解决如何解决?问题:问题:共共 37 37页页 第第 1515 页页本节本节重点重点if语句的缺省形式语句的缺省形式if语句的标准形式语句的标准形式复合复合if语句语句if语句的嵌套语句的嵌套一、一、if

12、语句的三种基本形式语句的三种基本形式1 格式:格式:if(表达式)表达式) 语句语句 功能:功能:判断表达式的值,若为非判断表达式的值,若为非 0,执行语,执行语句,否则,句,否则,跳过跳过语句继续语句继续输出不及格的成绩输出不及格的成绩 main() int a; scanf(“%d”,&a);if (a60) printf(“及格及格n”););else printf(“不及格不及格n”);条件条件 语句组语句组Y N 条件条件YN语句组语句组2语句组语句组14.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 1717 页页求求a a 和和 b

13、b 两数中较大的一个。两数中较大的一个。main( ) int a,b,max; scanf(%d , %d, &a, &b); max=a; if ( maxb ) max=b; printf(The max of a and b : %dn, max);maxb ) max=a; else max=b; printf(The max of a and b : %dn, max);求求a a和和b b两数中较大的一个。两数中较大的一个。ab?max=bYNmax=a格式二格式二4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 1919 页页3 .

14、 多分支的多分支的 i f 结构结构格式格式 if (表达式表达式1) 语句语句1 e l se i f ( 表达式表达式2 ) 语句语句2 e l s e i f (表达式表达式3) 语句语句3 e l s e 语句语句 n从键盘输入一个整数从键盘输入一个整数a,按其值的大小按其值的大小,判断并输出,判断并输出a是几位数。是几位数。表达式表达式1表达式表达式3表达式表达式2语句语句1语句语句2语句语句3语句语句n.YYYNNN4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 2020 页页ifif语句中进行条件判断语句中进行条件判断的的“表达式表

15、达式”必须用必须用( ( ) )括起来且不可省略。括起来且不可省略。 #include main( ) int a; scanf(“%d”,&a); if (abs(a)10) printf(“%d是一位数是一位数.n”,a); else if (abs(a)100 ) printf(“%d是二位数是二位数.n”,a); else if( abs(a)1000) printf(“%d是三位数是三位数.n”,a); else if(abs(a) y ) printf (XYn); else printf (XYn); else printf (X=Yn);表表达达式式if与与else之间的匹之间

16、的匹配,配,else总是与总是与同它最近的同它最近的 if相相匹配匹配表表达达式式1注注意意4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 2323 页页例题例题当当: a=1,b=3,c=5,d=4if(ab) if(cd) x =1; else if(ac)if(b5) if(a+5) b=2; else if(a+5) b=3; else b=4; printf(“%d”,b); A) 1 B) 2C) 3 D) 4elseifif else elseelseelseififif4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结

17、构程序共共 37 37页页 第第 2424 页页4.3 用用if语句设计选择结构程序语句设计选择结构程序if语句中的条件表达式必须用()括起来,并语句中的条件表达式必须用()括起来,并 且在括号外部没有分号;且在括号外部没有分号;2. if或或else 子句后面的执行语句均有分号;子句后面的执行语句均有分号;else是是if语句的子句,不可单独使用;语句的子句,不可单独使用; 当当if或或else子句后是多个执行语句构成的语句子句后是多个执行语句构成的语句组时(复合语句),必须用组时(复合语句),必须用 括起来,否则括起来,否则各子句均只管到其后第一个分号处;各子句均只管到其后第一个分号处;5

18、. if或或else 子句后只接一单个分号时,应把之作子句后只接一单个分号时,应把之作为空语句处理。为空语句处理。 共共 37 37页页 第第 2525 页页格式:格式:switch(表达式表达式) case 常量表达式常量表达式1: 语句语句1 case 常量表达式常量表达式2: 语句语句2 . case 常量表达式常量表达式n: 语句语句n default: 语句语句n+1 先计算先计算表达式表达式的值,的值,判断此值是否与某个常量判断此值是否与某个常量表达式的值匹配表达式的值匹配,如果有,控制转向其后相应,如果有,控制转向其后相应的语句,若无,检查的语句,若无,检查 default。功能

19、:功能:多多重分支的条重分支的条件语句件语句 switch4.3 4.3 用用switchswitch语句设计多分支结构语句设计多分支结构语句语句1常量常量1?计算表达式的值计算表达式的值语句语句2常量常量2语句语句n+1default?共共 37 37页页 第第 2626 页页例题:按照考试成绩输出百分制分数段。例题:按照考试成绩输出百分制分数段。main( ) char grade; scanf (“%c”,&grade); switch(grade) case A: printf(“85-100n”); case B: printf(“70-84n”); case C: printf(“

20、60-69n”); case D: printf(“60”); default: printf(“Errorn”); 输入字母输入字母B输出:输出:70-84 60-69 60 Errorprintf(“70-84n”);printf(“70-84n”); break;4.3 4.3 用用switchswitch语句设计多分支结构语句设计多分支结构共共 37 37页页 第第 2727 页页main( ) float x,y; char c; double r;scanf(“%f,%f,%c”,&x,&y,&c);switch(c) case + : r=x+y; break; case - :

21、 r=x-y ; break; case * : r=x*y ; break; case / : r=x/y ; break; printf(“%lf”,r);当输入当输入3,5,+之后之后r的值为的值为8.000000如果没有如果没有break语句语句,会顺序执行下面的会顺序执行下面的r=x-y;r=x*y;r=x/y;则则 :最后的结果为最后的结果为?4.3 4.3 用用switchswitch语句设计多分支结构语句设计多分支结构共共 37 37页页 第第 2828 页页 2 case 后的每个常量表达式必须后的每个常量表达式必须各不相同各不相同 说明说明:1 括号内的表达式可以是括号内的

22、表达式可以是 int ,char3 case 和和 default的的位置是任意的位置是任意的每一个每一个case之后应有一个之后应有一个 以跳出以跳出 switch( ) 结构结构 break(间断语句)间断语句)5 每个每个case 之后的执行语句可多于一个,但之后的执行语句可多于一个,但不必不必加加 6 允许几种允许几种case情况下执行相同的语句,不必每个都写情况下执行相同的语句,不必每个都写 4.3 4.3 用用switchswitch语句设计多分支结构语句设计多分支结构共共 37 37页页 第第 2929 页页 4.4 4.4 程序实例程序实例 例例1、银行如何根据存入现金和年限计

23、算利息?银行如何根据存入现金和年限计算利息?银行计算利息的情况如下:银行计算利息的情况如下:1、当存储年限、当存储年限Y为为1年以上时,年以上时, 月息月息r为为5 ;2、当存储年限当存储年限Y为为2年以上时,年以上时, 月息月息r为为6 ;3、当存储年限、当存储年限Y为为3年以上时,年以上时, 月息月息r为为6.5 ;4、当存储年限、当存储年限Y为为5年以上时,年以上时, 月息月息r为为8 ;5、当存储年限、当存储年限Y为为8以上年,以上年, 月息月息r为为10 ;Y=1Y=3Y=2r = 5 r = 6r = 6.5r =0.1001010 t = m + m * r *12 * y共共

24、37 37页页 第第 3030 页页 main( ) int Y; float m, r, t ; /* 本金,月利率,本利合计本金,月利率,本利合计*/ printf(Input money and year =?); scanf(%f%d, &m, &Y); /* 输入本金和年限输入本金和年限 */ if ( Y = 1 ) r = 0.005; /* 根据年限定利率根据年限定利率 */ else if ( Y = 2 ) r = 0.006; else if ( Y = 3 &Y=5&Y8 ) r = 0.010; else r = 0.0; t = m + m * r *12 * y;

25、 printf( Total = %.2f n, t ); 4.3 用用if语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 3131 页页例例2:输入年,月输入年,月,计算该月有多少天计算该月有多少天。输入年、月后,该年月的天数有输入年、月后,该年月的天数有 以下几种可能:以下几种可能:1. 当输入的当输入的month为为“大月大月”时时, 该月的该月的 day为为31天;天;2. 当输入的当输入的month为为“小月小月”时时, 该月的该月的day为为30天天;3. 当当输入的输入的month为为“二月二月”时时, 如果该年如果该年year为润年,则该为润年,则该 月月d

26、ay为为29天;天;否则,该月否则,该月 day为为28。 4.4 4.4 程序实例程序实例 monthday=31day=30“大月大月”1、3、5“小月小月”4、6、9“2月月” 2year?10day=29day=28共共 37 37页页 第第 3232 页页 main( ) int year,month,days; printf(“Enter year&monthn”); scanf(“%d,%d”,&year,&month); switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31

27、; break;几个几个CASE 执行相同的执行相同的语句语句跳出开关结构跳出开关结构/ /* * 处理处理“大大”月月 * */ / 4.4 4.4 程序实例程序实例 共共 37 37页页 第第 3333 页页 case 4: case 6: case 9: case 11: days=30 ; break; case 2: if (year%4=0)&(year%100!=0) |(year%400)=0) days=29; else days=28; break;default:printf(“Enter error!n”); days=0; break; if (days!=0)pri

28、ntf(“%dn”,days); 判断是否判断是否为闰年为闰年开关结开关结构结束构结束/ /* * 处理处理“小小”月月 * */ / /* * 处理处理“平平”月月 * */ / 4.4 4.4 程序实例程序实例 共共 37 37页页 第第 3434 页页三、开关语句(基本形式,功能,要求,三、开关语句(基本形式,功能,要求,break 的的作用,作用, 和和default的作用)的作用)二、二、if语句的基本形式,分支形式,多分支形式,以及嵌语句的基本形式,分支形式,多分支形式,以及嵌 套形式套形式 else与与if 的匹配的匹配四、四、 需注意的:需注意的: 1 .自增,自减作为自增,自

29、减作为if的条件时,边界条件的处理的条件时,边界条件的处理 2. if中的复合语句中的复合语句 一、关系运算和逻辑运算一、关系运算和逻辑运算共共 37 37页页 第第 3535 页页1. 能正确表示能正确表示“当当x的取值在的取值在1,10和和200,210范围内的式子是范围内的式子是( ) A. (x=1)&(x=200)&(x=1|(x=200|x=1)&(x=200)&(x=1)|(x=200)|(x=210)2.判断判断char型变量型变量c1是否为小写字母的正确表达式为(是否为小写字母的正确表达式为( ) A. a=c1=a)&(c1=a)|(c1=a)&(c1b)&(n=cd)后后n的值为(的值为( ) A. 0 B. 1 C. 2 D. 3共共 37 37页页 第第 3636 页页4.以下程序的输出结果是以下程序的输出结果是( )main( ) int a=100, x=10, y=20, ok1=5, ok2=0; if(xB&C A|AB 的值是的值是 。 共共 37 37页页 第第 3737 页页6. 以下程序的运行结果是(以下程序的运行结果是( ) main( ) if (2*2= =5a&chz) ( ); printf(”%cn”,ch);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com