c语言选择结构程序设计_第1页
c语言选择结构程序设计_第2页
c语言选择结构程序设计_第3页
c语言选择结构程序设计_第4页
c语言选择结构程序设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

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

2、部大于 CA为不大于为不大于100 的的 偶偶 数数关系运算是一种比较运算,将两个值(表达式)进行比关系运算是一种比较运算,将两个值(表达式)进行比较,判断比较的结果是否符合给定的条件较,判断比较的结果是否符合给定的条件共共 37 37页页 第第 5 5 页页一、关系运算符一、关系运算符大于大于 , 大于等于大于等于 =,小于,小于 ,不等不等 != 小于等于小于等于bc共共 37 37页页 第第 6 6 页页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 的值为逻辑的值为逻辑 1 4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 7 7 页页3) 当判断两个浮点数是否相等时,由于存储上的误差,可能当判断两个浮点数是否相等时,由于存储上的误差,可能会有错误的结果,例如:数学上:恒等式会有错误的结果,例如:数学上:恒等式4) 在数学中,在数学中,5 2 7 8

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

5、优先级:!的优先级高于优先级:!的优先级高于&和和|逻辑运算与其他运算相比:逻辑运算与其他运算相比: 非的优先级最高,与和或低于非的优先级最高,与和或低于其他。其他。3. 结合性:与和或是从左向右,非是从右向左结合性:与和或是从左向右,非是从右向左 4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 9 9 页页二二 、逻辑表达式、逻辑表达式2. 表达式的值为逻辑的表达式的值为逻辑的1和和0,表示真与假,表示真与假任何非零实数任何非零实数均可作为逻辑均可作为逻辑上的上的1 1例:例:a=5,b=7,c=4,d=3x=(a+b)(c+d)&

6、(da)先先做算术运算,再做关系判做算术运算,再做关系判断,将最后结果赋给断,将最后结果赋给x1. 用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达式式5 2 7 85 2 7 8从左向右运算从左向右运算 (52) (52)逻辑值为逻辑值为1 1 (17) (17)逻辑值为逻辑值为0 0 (08) (08)逻辑值为逻辑值为0 0整个表达式的值为整个表达式的值为 0 0 4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 1010 页页3 . 在逻辑表达式中,并不是所有的逻辑运算都必须执行,如

7、在逻辑表达式中,并不是所有的逻辑运算都必须执行,如果果&的一边已经为的一边已经为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的值为的值为 0,m=0不再判断(不再判断(n=cd

8、)的值,因此,的值,因此,n 维持原有的值维持原有的值m=0n=1 4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 1111 页页求逻辑表达式的值求逻辑表达式的值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页页 第第 1313 页页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为为8 4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 141

10、4 页页若若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)1 4.1 4.1 关系运算与逻辑运算(续)关系运算与逻辑运算(续)共共 37 37页页 第第 1515 页页 4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序if语句构成的选择结构是语句构成的选择结构

11、是C的三种基本结构之一。用来确定的三种基本结构之一。用来确定给定的条件是否满足,所含条件一般是关系表达式或逻辑给定的条件是否满足,所含条件一般是关系表达式或逻辑运算表达式。运算表达式。根据学生分数判断是否及格?根据学生分数判断是否及格?根据学生分数如何进行分级?根据学生分数如何进行分级?自然语言:如果自然语言:如果 那么那么 否则否则C语言:语言:选择(分支)语句选择(分支)语句如何解决如何解决?问题:问题:共共 37 37页页 第第 1616 页页本节本节重点重点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语句组语句组1 4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 1818 页页求求a a 和和 b b

13、 两数中较大的一个。两数中较大的一个。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页页 第第 20

14、20 页页3 . 多分支的多分支的 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.YYYNNN 4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 2121 页页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

16、与与else之间的匹之间的匹配,配,else总是与同总是与同它最近的它最近的 if相匹配相匹配表表达达式式1注注意意 4.2 4.2 用用ifif语句设计选择结构程序语句设计选择结构程序共共 37 37页页 第第 2424 页页例题例题当当: 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 elseelseelseififif 4.2 4.2 用用ifif语句设

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

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

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

20、case C: printf(“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页页 第第 2828 页页main( ) float x,y; char c; double r;scanf(“%f,%f,%c”,&x,&y,&c);switch(c) ca

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

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

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

24、* r *12 * y共共 37 37页页 第第 3131 页页 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

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

26、时, 如果该年如果该年year为润年,则该为润年,则该 月月day为为29天;否则,该月天;否则,该月 day为为28。 4.4 4.4 程序实例程序实例 monthday=31day=30“大月大月”1、3、5“小月小月”4、6、9“2月月” 2year?10day=29day=28共共 37 37页页 第第 3333 页页 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; break;几个几个CASE 执行相同的执行相同的语句语句跳出开关结构跳出开关结构/ /* * 处理处理“

温馨提示

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

评论

0/150

提交评论