版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 选择结构程序设计第四章 选择结构程序设计第4章 选择结构程序设计4.1 条件判断(理解)4.2 if语句和if语句构成的选择结构(重点/掌握)4.3 条件表达式构成的选择结构(重点/掌握)4.4 switch语句(重点/掌握)4.5 综合程序举例(重点/掌握)第4章 选择结构程序设计第4章 选择结构程序设计4.1.1 条件判断的含义:C语言中的逻辑值0:假非0(包括正、负):真如:1、3、-5、04.1.2 关系运算符和关系表达式 关系运算:又称为比较运算,即将两个值进行比较,判断其比较的结果是否符合给定的条件。如: a3 关系表达式 大于号():关系运算符 若a=5, a3 成立,
2、结果为“真” ; 若a=2, a3不条件,结果值为“假”。4.1 条件判断(理解)值为:1值为:0第4章 选择结构程序设计4.1.2.1 C语言的关系运算符1.C语言提供6种关系运算符: (小于) =(小于或等于) (大于) =(大于或等于) = (等于) !=(不等于)2.优先次序:(1) 前4种关系运算符(,=,=)的优先级别相同,后两种也相同,前4种高于后2种。 如:“”优先于“=”。而“”与“”优先级相同。(2) 关系运算符的优先级低于算术运算符。(3) 关系运算符的优先级高于赋值运算符。优先级相同(高)优先级相同(高)优先级相同(低)优先级相同(低)第4章 选择结构程序设计 如: c
3、ab 等价于 ab=c 等价于 a=bc 等价于 a=bc 等价于c(ab)(ab)=ca=(bc)a=(bc)第4章 选择结构程序设计4.1.2.2 关系表达式及关系表达式的值1.关系表达式:用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。如:ab,abbc, (a=3)(b=5),ab,(ab)(bc)2.关系表达式的值:逻辑值,即:“真” 或“假” 如:关系表达式“5=3”的值为“假”,“5=0”的值为“真”。第4章 选择结构程序设计3.C语言中:以1代表“真”,以“0”代表“假”。如: 若:a=3,b=2,c=
4、1, 则:关系表达式“ab”的值为“真”,表达式的值为1。 那么,关系表达式“(ab)=c”的值为_(真or假),表达式的值为_(0 or 1)。 关系表达式“bca”的值为_(真or假),表达式的值为_(0 or 1)。真真1假假 0第4章 选择结构程序设计4.1.3 逻辑运算符和逻辑表达式4.1.3.1 C语言的逻辑运算符1.三种逻辑符号:(1) & 逻辑与 (AND) 类似乘法计算(2) | 逻辑或 (OR) 类似加法计算(3) ! 逻辑非 (NOT) 取反注: 数学式:0 x10 C语言中:x0 & x10 x10第4章 选择结构程序设计 课本P92真值表总结运算规则:
5、 a & b:若其中有一个为0(假),则结果为0 (假); a | b:若其中有一个为1(真),则结果为1 (真); !a: !0则为1,!1(真)则为0。第4章 选择结构程序设计2.优先次序:(1) !(非)&(与)|(或), 即“!”为三者中最高的。(2) 逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算术运算符。例如:(ab) & (xy) ab & xy (a=b)|(x=y) a=b|x=y (!a)|(ab) !a|ab第4章 选择结构程序设计“短路短路”现象现象: : C C语言中,由语言中,由&或或|构成的逻辑表达式,在特
6、定的构成的逻辑表达式,在特定的情况下,如:情况下,如: 0&0&* * *、1|1|* * *,会发生短路现象,即,会发生短路现象,即,选择选择不执行后半部分语句不执行后半部分语句( (跳过跳过) )的情况。的情况。如:如:a=0a=0; a+a+&b+b+;又如:又如:a=1a=1; a+a+|b+b+;第4章 选择结构程序设计课堂练习:请写出下面各逻辑表达式的值(设a=3,b=4,c=5) (1) a(1) ab bc & b=cc & b=c (2) a|b (2) a|bc & b-cc & b-c (3) !(a (3) !(a
7、b) & !c|1b) & !c|1 (4) !(x=a) & (y=b) & 0 (4) !(x=a) & (y=b) & 0 (5) !(a (5) !(ab)b)c-1 & bc-1 & bc c2 2 (6) (6) 执行以下语句后,执行以下语句后,int a=5,b=6,c=1,x=2,y=3,z=4;int a=5,b=6,c=1,x=2,y=3,z=4; (a=cx) | (b=yz); (a=cx) | (b=yz); 表达式的值是(表达式的值是( )。)。 (7)(7)若已定义:若已定义:int x=4,y=2,
8、z=0; int x=4,y=2,z=0; 则执行以下表达式则执行以下表达式 : :(x-y=y)| (y=z)(x-y500)cost=0.15;else if(number300) cost=0.10;else if(number100)cost=0.075;else if(number50)cost=0.05;else cost=0;第4章 选择结构程序设计注意:(1)三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。如:if(a=b & x=y) printf(“a=b,x=y”);若表达式的值为0,按“假”处理,若表达式的值为非0,按“真”处理,执行
9、指定的语句。又如: if(3) printf(“k”); 因为表达式的值为3,按“真”处理。由此可见,表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。再如:if(a)printf(“d”,a);第4章 选择结构程序设计(2) 第二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号。例如:if (x0)Print (“%f”,x); /*各有一个分号*/elseprintf(“%f”,-x); /*各有一个分号*/ 注:else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。第4章 选择结构程序设计(3)在i
10、f和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。如:课本P98例4.3if(abc & bca & cab) s=0.5*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=62f”,area); else printf(“it is not a trilateral”);第4章 选择结构程序设计例4.1 输入两个实数,按代数值由小到大的次序输出这两个数。编程如下: main() float a,b,t; scanf(“f,f”,&a,&a
11、mp;b); if(ab) t=a;a=b;b=t; printf(52f,52f,a,b); 运行情况如下:3.6,-3.2 -3.20, 3.60第4章 选择结构程序设计例4.2 输入3个整数a,b,c,要求按由小到大的顺序输出。编程如下: # include main() int a,b,c,t; printf (“Input a,b,c:”); scan(f,f,f,&a,&b,&c); if(ab) t=a;a=b;b=t; /* 实现实现a和和b的互换的互换 */ if(ac) t=a;a=c;c=t; /* 实现实现a和和c的互换的互换 */ if(bc)
12、 t=b;b=c;c=t; /* 实现实现b和和c的互换的互换 */ printf(d,d,d,a,b,c); 运行情况如下:3,7,1 1, 3, 7第4章 选择结构程序设计4.2.2 嵌套的if语句1.嵌套:在if语句中又包含一个或多个if语句称为if语句的嵌套。2.表现形式:if(表达式1)if(表达式2)语句1else 语句2elseif(表达式3)语句3else 语句4应当注意if与else的配对关系。内嵌if内嵌if第4章 选择结构程序设计3.如果if与else的数目不一样,为实现程序设计者的思想,可以加花括弧来确定配对关系。如: if( ) if( )语句1 else 语句2 (
13、内嵌if)这时 限定了内嵌if语句的范围,因此else与第一个if配对。注意: elseelse子句总是与前面最近的不带子句总是与前面最近的不带elseelse的的ifif相结合相结合. .第4章 选择结构程序设计例:4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级. main( ) int g,score; printf(“Please input a score(0100):); scanf(%d, &score); if(g=90) printf(grade=An); if(g=90) printf(
14、grade=An); else if(g=80) printf(grade=Bn); else if(g=80) printf(grade=Bn); else if(g=70) printf(grade=Cn); else if(g=70) printf(grade=Cn); else if(g=60) printf(grade=Dn); else if(g=60) printf(grade=Dn); else printf(grade=En); break; else printf(grade=En); break;第4章 选择结构程序设计例4.6 有一函数: -1(x0) 编一程序,输入一
15、个x值,输出y值。算法:输入x若 x 0 y = 1输出y 或 输入x若 x 0 y = 1输出y第4章 选择结构程序设计流程图表示:第4章 选择结构程序设计编程如下:main() int x,y; scanf(d,&x); if(x0) y=-1; else if(x=0) y=0; else y=1; printf(x=d,y=dn,x,y); 第4章 选择结构程序设计课堂练习: 1、有一函数: x (x1) y = 2x-1 (1x10) 3x-11 (x10) 写一程序,输入x,输出y值。第4章 选择结构程序设计2 2、以下程序运行时,若从键盘输入、以下程序运行时,若从键盘输入
16、6 6,则输出结果是(,则输出结果是( )。)。 void main()void main()int x;int x; scanf(%d,&x); scanf(%d,&x); if (x-6) if (x-6) printf(%dn,x); printf(%dn,x); else else printf(%dn,-x); printf(%dn,-x); A A、 4 4B B、5 5C C、6 6D D、3 3第4章 选择结构程序设计3 3、 以下程序的运行结果是(以下程序的运行结果是( )。)。 void main()void main()int m,n=1,t=1;int
17、m,n=1,t=1; if(t= 0) if(t= 0) t=-t; t=-t; else else m=n=0?7:3; m=n=0?7:3; printf(%dn,m); printf(%dn,m); A A、3 3B B、-1-1C C、7 7D D、1 1第4章 选择结构程序设计1.Switch语句:又称多分支选择语句,开关语句,用来实现多分支选择结构。2.背景:if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类:90分以上为a等8089分为b等7079分为c等;人口统计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存款分类。4.3 Sw
18、itch语句(重点/掌握)第4章 选择结构程序设计3.Switch语句的一般形式:switch(表达式) case常量表达式1:语句1 case常量表达式2:语句2 case常量表达式n:语句n default:语句n1 第4章 选择结构程序设计例如:要求按照考试成绩的等级打印出百分制分数段Switch语句实现:main() char grade; scanf(%c,&grade); switch(grade) case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);defau
19、lt:printf(errorn); getch( ); 第4章 选择结构程序设计说明:(1) switch后面括弧内的“表达式”,ANSI标准允许它为任何类型。(2) 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3) 每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。(4) 各个case和default的出现次序不影响执行结果。 如:可以先出现“default:”,再出现“case D:”,然后
20、是“case a:”。第4章 选择结构程序设计(5) 执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“casecase常量表达式常量表达式”只是起语句标号语句标号作用,并不是在该处进行条件判断。在执行Switch语句时,根据Switch后面表达式的值找找到匹配的入口标号到匹配的入口标号,就从此标号开始不再进行判断,依次执行每条从此标号开始不再进行判断,依次执行每条casecase后面的语句。后面的语句。例如,上面的例子中,若grade的值等于a,则将连续输出:85100 7084 6069 60 error11-5 通信第4章 选择结构程序设计 因此,应该在执行一个ca
21、se分支后,使流程跳出Switch结构,即终止Switch语句的执行。 break:跳出循环(命令)体。将上面的Switch结构改写如下:Switch(grade) default printf(“errorn”); casecprintf(“6069n”); break; casebprintf(7084n);break; caseaprintf(“85100n”); break; casedprintf(60n);break; 最后一个分支(default)可以不加break语句。 如果grade的值为b,则只输出“7084”。第4章 选择结构程序设计流程图:图图5.125.12第4章 选
22、择结构程序设计 在case后面中虽然包含一个以上执行语句,但可以不必用花括弧括起来,会自动顺序执行本case后面所有的执行语句。(6) 多个case可以共用一组执行语句,如: casea caseb casecprintf(60n);break; grade的值为a、b或c时都执行同一组语句。第4章 选择结构程序设计1 1、以下程序的运行结果是(、以下程序的运行结果是( )。)。 void main()void main() int n=9; int n=9; switch(n-) switch(n-) default: printf(%d ,n+); default: printf(%d ,
23、n+); case 8: case 8: case 7: printf(%d ,n); break; case 7: printf(%d ,n); break; case 6: printf(%d ,n+); case 6: printf(%d ,n+); case 5: printf(%d ,n); case 5: printf(%d ,n); A A、8 8B B、7 7C C、8 98 9D D、8 78 7课堂练习:第4章 选择结构程序设计2 2、以下程序的运行结果是(、以下程序的运行结果是( )。)。void main()void main() int n=8; int n=8; s
24、witch(n-) switch(n-) default: printf(%d ,n+); default: printf(%d ,n+); case 8: case 8: case 6: printf(%d ,n); break; case 6: printf(%d ,n); break; case 4: printf(%d ,n+); case 4: printf(%d ,n+); case 2: printf(%d ,n); case 2: printf(%d ,n); A A、8 8B B、8 68 6C C、7 7D D、8 78 7第4章 选择结构程序设计3 3、以下程序的运行结果
25、是(、以下程序的运行结果是( )。)。void main()void main() int n=9; int n=9; switch(-n) switch(-n) case 8: case 8: case 6: printf(%d ,-n); case 6: printf(%d ,-n); default: printf(%d ,n+); default: printf(%d ,n+); case 9: printf(%d ,n+); break; case 9: printf(%d ,n+); break; case 7: printf(%d ,n); case 7: printf(%d ,
26、n); 第4章 选择结构程序设计4 4、以下程序的运行结果是(、以下程序的运行结果是( )。)。void main() int a=1,b=2; switch(a) case 1: printf(a=1 ); switch(b) case 1: printf(b=1 ); break; case 2: printf(b=2 );break; case 3: printf(b=3 );break; case 2: printf(a=2); break; default: printf(a=3); A、a=1 b=2B、a=1 C、a=1 b=2 a=2D、b=2 a=2第4章 选择结构程序设计例
27、4.6 编写程序,判断某一年是否闰年。(参考P94)分析:能被4整除,但不能被100整除。能被400整除。算法实现:以变量leap代表是否闰年的信息。若某年为闰年,则令leap=1;若为非闰年,令leap=0。最后判断leap是否为1(真),若是,则输出“是闰年”信息。4.4 综合程序举例(重点/掌握) P105第4章 选择结构程序设计N-S流程图:第4章 选择结构程序设计编程如下:main( )main( ) int yearint year, leapleap; scanf(scanf(“d d”,&year)&year); if(yearif(year4=0)4=0) i
28、f(yearif(year100=0)100=0) if(yearif(year400=0)400=0) leap=1leap=1; else leap=0else leap=0; else leap=1else leap=1; else leap=0else leap=0; if(if(leapleap) ) printf(printf(d is a leap year. d is a leap year. n n ,year)year); else else printf( printf(d is not a leap year.d is not a leap year.n n ,year
29、)year); /* 等价于 if(leap=1if(leap=1) )* */ /第4章 选择结构程序设计运行情况如下: 1989 1989 is not a leap year. 2000 2000 is a leap year.也可以将程序中第513行改写成以下的if语句:if(year4!=0) leap=0; else if(year100!=0) leap=1; else if(year400!=0) leap=0; else leap=1;第4章 选择结构程序设计也可以用一个逻辑表达式包含所有的闰年条件,将上述if语句用下面的if语句代替:if(if(year%4=0 &
30、 year%100!=0) | (year%400=0)(year%4=0 & year%100!=0) | (year%400=0) ) leap=1;elseleap=0;第4章 选择结构程序设计例4.7 运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下: s250km没有折扣 250S500 2折扣 500S1000 5折扣 1000S2000 8折扣 2000S3000 10折扣 3000S 15折扣设:基本运费:p(price)货物重为:w(weight)距离为:s折扣为:d(discount)总运费计算公式: f(freight)p*w*s*(1-d)第4章
31、 选择结构程序设计变化规律:折扣的“变化点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,可以在横轴上加一种坐标c,c的值为S/250。c代表250的倍数。由图知:当当c1c1时,表示时,表示S250S250,无折扣;,无折扣;1c1c2 2时,表示时,表示250S500250S500,折扣,折扣d=2d=2;2c2c4 4时,时,d=5d=5;4c4c8 8时,时,d=8d=8;8c8c1212时,时,d=10d=10;c12c12时,时,d=15d=15图图5.155.15第4章 选择结构程序设计编程如下:main() int c,s; double p,
32、w,d,f; printf(“请输入单价、重量和距离:(eg:p,w,s):”); scanf(“lf,lf,d”,&p,&w,&s); if(sif(s=3000) c=12=3000) c=12; elseelsec=s/250c=s/250; switch(c)switch(c) case 0d=0case 0d=0;breakbreak; case 1d=2case 1d=2;breakbreak; case 2case 2 case 3d=5 case 3d=5;breakbreak; 第4章 选择结构程序设计 case 4 case 4 case 5 cas
33、e 5 case 6 case 6 case 7d=8 case 7d=8;breakbreak; case 8case 8 case 9 case 9 case 10 case 10 case 11d=10 case 11d=10;breakbreak; case 12d=15case 12d=15;breakbreak; f=pf=p* *w w* *s s* *(1-d/100.0)(1-d/100.0); printf(“所需运费:freight=15.4f元,f); 第4章 选择结构程序设计运行情况如下:100,20,300freight=588000.0000注意:c、s是整型变量
34、,因此c=s250为整数。当s3000时,令c=12,而不使c随s增大,这是为了在Switch语句中便于处理,用一个case可以处理所有s3000的情况。第4章 选择结构程序设计例4.8:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符(P110)分析: 1.判断是否大些字母 2.英文大小写的转换(ASCII码相差32) main( ) char ch; scanf(c,&ch); ch=(ch=A&ch=Z)?(ch32)ch; printf(c,ch) 运行结果:A a第4章 选择结构程序设计1.条件运算符 ? : 条件
35、运算符要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的一个三目运算符。2. 一般形式: 表达式1?表达式2表达式3 如:max=(ab)?ab;其中“(ab)?ab”是一个“条件表达式”。4.5 条件表达式构成的选择结构(P109)第4章 选择结构程序设计3.执行过程:表达式1?表达式2表达式3判断表达式1是否为真,若为真则条件表达式取值表达式2 ,否则取值表达式3。第4章 选择结构程序设计说明:(1) 条件运算符的执行顺序: 先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值否则求解表达式3,表达式3的值就是整个条件表达式的值。 如:max=(a
36、b)?ab 功能:将a和b二者中的最大者赋给max保存。第4章 选择结构程序设计(2) 条件运算符优先级高于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。因此等价于:max=ab?ab若有ab?ab1等价于:ab?a(b1),而不相当于(ab?ab)1。注意: 条件运算符的优先级比关系运算符和算术运算符都低max=(ab)?a b第4章 选择结构程序设计(4) 条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。如: (无法用条件表达式代替)if(ab)printf(d,a);else p
37、rintf(“d”,b);但可以用下面语句代替:printf(d,ab?ab);即:将条件表达式的值输出。第4章 选择结构程序设计(3) 条件运算符的结合方向为“自右至左”。如: ab?acd?cd等价于: ab?a(cd?cd)若:a=1,b=2,c=3,d=4则条件表达式的值等于:4第4章 选择结构程序设计(5) 条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。如:x? ab x是整型变量,若x=0,则条件表达式的值为b。 表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如: xy?115 若xy,则条件表达式的值为若xy,值本应为1,由于1
38、5是实型,比整型高,因此,将1转换成实型值 。151.0第4章 选择结构程序设计例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。分析: 1.判断是否大些字母 2.英文大小写的转换(ASCII码相差32) main( ) char ch; scanf(c,&ch); ch=(ch=A&ch=Z)?(ch32)ch; printf(c,ch) 运行结果:A a第4章 选择结构程序设计第四章结束第四章结束To be continuedTo be continued。第4章 选择结构程序设计第四章复习练习第4章 选择结构程序设
39、计思考题: 编写一个能够求解(+、-、*、/)等运算的计算器程序,如:程序运行的时候。输入:3*2输出:3*2=6编程实现:编程实现:#include void main() int num1,num2,ans,flag; char op;printf(Please input an expression:); scanf(%d%c%d, /*/ /*/); flag=0; /*/ /*/ case +: ans=num1+num2; break; case -: ans=num1-num2; break; case *: ans=num1*num2; break; case /: ans=n
40、um1/num2; break; default: printf(Error!n); flag=1; if /*/ /*/ printf(%d %c %d = %dn,num1,op,num2,ans);&num1,&op,&num2switch(op)(flag=0)第4章 选择结构程序设计一、选择题4.1 下列运算符中优先级最高的运算符是 A) ! B) % C) -= D) &4.2 下列运算符中优先级最低的运算符是 A) | B) != C) =y)&(y=z) B) (x=y)AND(y=z) C) (x=y=z) D) (x=y)&(
41、y=z)4.4 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 A) a&b B) a=b C) a|b+c&b-c D) !(ab)&!c|1)第4章 选择结构程序设计4.5 以下程序的输出结果是#include main( ) int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(%dn,c); A) 0 B) 1 C) 2 D) 3 if(b0) c=0; else c+=1; 第4章 选择结构程序设计4.6 以下程序的输出结果是 main( ) int w=4,x
42、=3,y=2,z=1; printf(%dn,(wx?w:zy?z:x); A)1 B) 2 C) 3 D) 4等价于:wx?w:(zy?z:x)第4章 选择结构程序设计4.7 若执行以下程序时从键盘上输入3和4,则输出结果是 main() int a,b,s; scanf(%d%d,&a,&b); s=a; if(a0) y=1; else y=0; -1(x0) 1(x0) 0(x0) -1(x0)第4章 选择结构程序设计4.9 运行以下程序后,输出 main( ) int k=-3; if(k=0) printf(*n) else printf(&n); A) *
43、 B) & C) #& D) 有语法错误不能通过编译第4章 选择结构程序设计4.10 若a和b均是正整型变量,以下正确的switch语句是A) switch(pow(a,2)+pow(b,2) case 1: case 3: y=a+b; break; case 0: case 5: y=a-b; B) switch(a*a+b*b); case 3: case 1: y=a+b; break; case 0: y=b-a; break; C) switch a default: x=a+b; case 10: y=a-b; break; case 11: x=a*d; bre
44、ak; D) switch(a+b) case10 : x=a+b; break; case11 : y=a-b; break; 第4章 选择结构程序设计二、填空题4.11 C语言中用_表示逻辑值“真”,用_表示逻辑值“假”。4.12 C语言中的关系运算符”!=”优先级比“=”_。4.13 C语言中的逻辑运算符”&”优先级比“|”的优先级_。4.14 C语言中的关系运算符“=”比逻辑运算符“&”的优先级别_。4.15 C语言中逻辑运算符_的优先级高于算术运算符。第4章 选择结构程序设计4.16 将下列数学式改写成C语言的关系表达式或逻辑表达式A)_B)_。 A)a=b或a4第4
45、章 选择结构程序设计4.17 请写出以下程序的输出结果_。 main() int a=100; if(a100) printf(%dn,a100); else printf(%dn,a0) B) !0 第4章 选择结构程序设计4.19 当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为_、_、_。 if(ac) b=a; a=c; c=b; 答案:3、2、24.20 若变量已正确定义,以下语句段的输出结果是_。 x=0; y=2; z=3; switch(x) case 0: switch(y=2) case 1: printf(*); break; case 2: pri
46、ntf(%); break; case 1: switch(z) case 1: printf($); case 2: printf(*); break; default : printf(#); 答案:*# if(ac) b=a; a=c; c=b;第4章 选择结构程序设计三、编程题:4.21 若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。if(a30) m=1;else if(a40) m=2;else if(a50) m=5;else if(a60) m=4;else m=5;第4章 选择结构程序设计解:解:main() int a,m; scanf(%d,
47、&a); switch(a/10) case 0:case 1:case 2:m=1;break;case 3:m=2;break;case 4:m=3;break;case 5:m=4;break;case 6: case 7: case 8:case 9:m=5;break;default:printf(ERROR!); printf(m=%d,m);解:main( ) /*加入判断a100的条件*/ int a,m; scanf(%d,&a); if(a100) switch(a/10) case 0: case 1: case 2:m=1;break; case 3:m
48、=2;break; case 4:m=3;break; case 5:m=4;break; default:m=5;break; printf(m=%d,m); else printf(ERROR!);复合语句第4章 选择结构程序设计4.22 编写程序,输入一个学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。解: main( )int y0,y1,m0,m1,d0,d1,age; clrscr(); printf(please input birthday(eg:1986-01-12):); scanf(%d-%d-%d,&am
49、p;y0,&m0,&d0); printf(please input the date of today:); scanf(%d-%d-%d,&y1,&m1,&d1); age=y1-y0; if(m1m0|m1=m0&d1d0) / /* *月份不到,或同月份但日期不到,则未满一年月份不到,或同月份但日期不到,则未满一年* */ / age-; printf(“%d”,age);第4章 选择结构程序设计4.23 编写程序,输入一个整数,打印出它是奇数还是偶数. 解: #include main( )int a;scanf(%d,&a);
50、if(a%2=0)printf(Ou shu);else printf(Ji shu);第4章 选择结构程序设计4.24 对于以下函数: x (-5x0) y= x-1 (x=0) x+1 (0 x-5 & x0 & x-5 & x=0) if(x0) y=x+1; else y=x-1; else y=x; printf (y=%d,y);425.c第4章 选择结构程序设计(3)if-else语句解:解:main() int x,y; scanf(%d,&x); if (x-5&x0&x10) printf (y=%d,x+1); else p
51、rintf (Input Error);第4章 选择结构程序设计(4)switch语句解:解: main( ) int x,y; scanf(%d,&x); switch(x) case -4: /*.*/ case -1: y=x; break; case 0: y=x-1; break; case 1: case 2: /*.*/ case 9:y=x+1; break; default:printf(Input Error);printf (y=%d,y); 第4章 选择结构程序设计第四章课后习题选讲第4章 选择结构程序设计5.有三个整数a、b、c,由键盘输入,打印输出其中最大者
52、。解:方法一(采用if嵌套语句)main() int a,b,c; printf(请输入三个整数:); scanf(%d,%d,%d,&a,&b,&c); if(ab) if(bc) printf(max=%dn,c); elseprintf(max=%dn,b); else if(ab)?a:b; max=(tempc)?temp:c; printf(max=%dn,max);第4章 选择结构程序设计解:方法三(假定第一个就是最大最小值,循环比较)main( ) int a,b,c,temp,max; printf(请输入三个整数:); scanf(%d,%d,%d,
53、&a,&b,&c); max=a; if(maxb) max=b; if(max=90) printf(grade=An); else if(g=80) printf(grade=Bn); else if(g=70) printf(grade=Cn); else if(g=60) printf(grade=Dn); else printf(grade=En); break;方法二:switch()语句实现第4章 选择结构程序设计6. 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。方法二:swit
54、ch()语句实现 main()int score; scanf(“%d”,&score); switch(score%10) case 9:grade=A;break; case 8:grade=B;break; case 7:grade=C;break; case 6:grade=D;break; case 5: case 4: case 3: case 2: case 1: case 0:grade=E; printfscore=%d,grade=%c,score,grade); 第4章 选择结构程序设计7.给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字; 按
55、逆序打印出各位数字,例如原数为321,应输出123。分析: 不多于5位,有可能大于32767(int上限),所以定义为long int. 求位数,找不同位数之间的分界点(9999,999,99,9). 打印输出万位,千位,百位,十位,个位.(a,b,c,d,e),可用取整法. 逆序输出:则为e,d,c,b,a.P82-46.C第4章 选择结构程序设计编程如下:#includemain()long int num;int a,b,c,d,e,x;clrscr( );printf(Please input a number(0-99999):); / /* *键盘提示信息键盘提示信息: :输入一个
56、输入一个0-999990-99999的数字的数字* */ /scanf(%ld,&num);第4章 选择结构程序设计/ /* *以下该段程序求出该数字的位数以下该段程序求出该数字的位数* */ /if (num9999) x=5; else if(num999) x=4; else if(num99) x=3; else if(num9) x=2; else x=1;printf(Its a %d Bit numbern,x); / /* *求出它是几位的数字求出它是几位的数字* */ /第4章 选择结构程序设计printf(They are:); / /* *分别打印出每一位数字分别
57、打印出每一位数字* */ /a=num/10000;b=num/1000%10;c=num/100%10;d=num/10%10;e=num%10;第4章 选择结构程序设计switch(x) / /* *逆序打印输出各位数字逆序打印输出各位数字* */ /case 1:printf(%dn,e);printf(The new Number is(逆序输出为):%dn,e);break; case 2:printf(%d,%dn,d,e);printf(The new Number is(逆序输出为):%d%dn,e,d);break;case 3:printf(%d,%d,%dn,c,d,e)
58、;printf(The new Number is(逆序输出为):%d%d%dn,e,d,c);break;case 4:printf(%d,%d,%d,%dn,b,c,d,e);printf(The new Number is(逆序输出为):%d%d%d%dn,e,d,c,b);break;case 5:printf(%d,%d,%d,%d,%dn,a,b,c,d,e);printf(The new Number is(逆序输出为):%d%d%d%d%dn,e,d,c,b,a);break;第4章 选择结构程序设计8 企业发放的奖金根据利润提成。 利润I低于或等于10万元的,奖金可提10;利润高于10万元,低于20万元(100000I200000)时,低于10万元的部分按10提成,高于100000元的部分,可提成75;200000I400000时,低于20万的部分仍按上述办法提成(下同)。高于20万元的部分按5%提成;400000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年江西c1客运从业资格证理论模拟考试
- 2024年云南道路客运资格证考试题
- 2024年山西客运员考试题库及答案详解
- 2024年济南客运员考试考什么内容的题
- 2024年江苏客运资格证考几科
- 2024年甘肃客运车资格证考试题及答案
- 2024年四川客运实操试题及答案
- -食品检验工培训试题(附答案)
- 6铣床定期维护保养记录
- 垃圾处理项目招投标操作手册
- 《旅游线路设计与开发》课程教学大纲
- 基于PLC的工业控制系统设计 -自动药片装瓶控制
- CRRT规范化治疗方案执行课件
- 工程设计变更申请表
- 清创术(debridement)精品课件
- 车间蚊虫巡检记录表
- 新员工培训-财务费用报销sangfor
- 储罐施工技术方案
- 利润分配专项审计
- 人教精通版四年级英语上册Unit 5 Lesson 27 教学设计
- 三年级上册美术课件-第7课 北京的胡同 ▏人美版(北京) (17张PPT)
评论
0/150
提交评论