1第4章选择结构程序设计
4.1 关系表达式及逻辑表达式
4.2 if语句
4.3 switch语句
4.4 应用举例
2020/6/29
2
选择结构是结构化程序设计中的三种基
本结构之一。在大多数程序中都会包含选
择结构。它的作用是,根据所指定的条件
是否满足,决定从给定的两组或多组操作
选择其一。
本单元重点介绍if 语句和switch语句的
一般语法形式、功能以及程序应用实例。
3 4.1 关系表达式、逻辑表达式
1、关系表达式:用关系运算符将表达式连接起来的式子
?优先级:(<<=>=>)>(==!=)
?结合性:自左至右;
?表达式的值:若为真,则结果为1;
若为假,则结果为0。
2、逻辑表达式:用逻辑运算符将表达式连接起来
的式子
?优先级:!>&&>||
?结合性:自左至右;
?表达式的值:若为真,则结果为1;
4 4.1 关系表达式、逻辑表达式
3. 运算符的优先级
! 高
算术运算符
关系运算符
&&和||
赋值运算符低
5 4.2.1 if 语句
If语句的三种形式
1.if(表达式)语句
这种if语句的执行过程如图:
表达式
语句假(0)
真(非0) main()
{ float x , y;
scanf(“%f ”, &x);
y = 2 * x ;
if ( x < 0 ) y = 3 -x ;
printf(“y= %6.2f”, y );
}
6
2.双分支选择语句
首先先判断表达式的值若为非0则执行语句1。若为0则执行语句2。
if (表达式)语句1 else 语句2
表达式
语句1语句2
真
假
7例如:
main()
{ float x , y;
scanf(“%f ”, &x);
if ( x < 0 ) y = 3 -x ;
else y = 2 * x ;
printf(“y= %6.2f”, y );
}
8
3.多分支选择语句
流程图
表达式1
表达式2
表达式3
表达式4
语句1
语句2语句3
语句4
语句5
真
真
真
真
假
假
假
假
if (表达式1)语句1
else if (表达式2)语句2else if (表达式3)语句3
:
else if (表达式m )语句m else 语句n
注意:
●三种形式的if语句中在if后面都有“表达式”,一般为逻
辑表达式或关系表式。
例如,if(a==b && x==y)printf (“a=b,x=y”);
在执行if语句时先对表达式求解,若表达式的值为0,按
“假”处理,若表达式的值为非0,按“真”处理,执行指定
的语句。
假如有以下if语句:if(3)printf(“O.K.”);
是合法的,执行结果输出“O.K.”,因为表达式的值为3,
按“真”处理。由此可见,表达式的类型不限于逻辑表达
式,可以是任意的数值类型(包括整型,实型、字符型、
指针型数据)。
注意:
●第二、第三种形式的if语句中,在每个else前面有一分号,
整个语句结束处有一分号。
例如:if (x>0)
print(“%f”,x);
else
各有一个分号
printf(“%f”,-x);
这是由于分号是C语言中不可缺少的部分,这个分号是if
语句中的内嵌语所要求的。如果无此分号,则出现语法错误。else子句不能作为语句单独使用它必须是if语句的一部分与if配对使用。
11注意及举例
●在if和else后面可以只含一个内嵌的操作语句(如上例),
也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。
例1:输入两个实数,按其由小到大的次序输出这两个数.
程序如下:
main()
{
float a,b,t;
scanf (“%f,%f”,&a,&b);
if (a>b)
{ t=a;a=b;b=t;}
printf (“%5.2f,%5.2f”,a,b); }运行情况如下:3.6,-3.2
-3.20,3.60
例2:输入两个数, 比较其大小,将较大的数输出。流程分析:
?(1) 输入两个数据a,b ;
?(2) 如果a>b 则输出a ;否则,输出b。
#include
main()
{
float a,b;
scanf(“%f,%f”,&a,&b);
if(a>b)printf(“%f”,a);
else printf(“%f”,b);
}
例3:多分支问题:
写一个程序完成下列功能:
1 输入一个分数score
2 score<60 输出E
3 60<=score <70 输出D
4 75<=score <80 输出C
5 80<=score <90 输出B 5 90<=score 输出A
main( )
{ int score;
sanf(“%d”,&score);
if ( score<60) printf(“%c” , ’E’);
else if ( score <70) printf(“%c” , ’D’);
else if (score <80)
printf(“%c” , ’C’);
else if (score <90)
printf(“%c” , ’B’);
else
printf(“%c” , ’A’); }
15例4:复杂条件选择
问题: 输入两个字符ch1和ch2,
如果ch1==‘Z’ 且ch2==‘B’,
则输出“You are right ! “
main()
{ char ch1,ch2;
ch1=getchar( );
ch2=getchar( );
if ( ch1 == ‘Z’ && ch2==‘B’ )
printf( “You are right ! “ );
}
16 4.2.2 if语句的嵌套
1.在语句中嵌套if语句
在上述3种if语句结构中,当if(表达式)
或else后面的语句本身又是一个if语句结
构时,就形成了if语句的嵌套结构。
例如多分支选择结构。
if 语句的二层嵌套结构如下:if ( 表达式1)
if ( 表达式1_2)
语句1_1
else
语句1_2
else
if ( 表达式2_1)
语句2_1
else
语句2_2
例5:
编一程序,输入一个x 值,输出y 值.
y=
-1 (X<0)0 (X =0)1 (X>0)
在if 语句的嵌套结构中并不需要对称,只根据需要决定嵌套的形式。在写if 语句的嵌套结构时,要注意else 与if 的配对规则,C 规定,else 必须与最近的if 相匹配。
例5:流程图如
下
开始输入x
X<0
Y =-1
X =0
Y =0
Y =1
输出y 结束
Y
N
Y N
有以下几个程序,请判断哪个是正确的?
程序1:main()
{ int x,y;
scanf(“%d”,&x);
◆if (x<0) y=-1;
else if (x==0) y=0;
else y=1; ◆
printf(“x=%d,y=%d/n”,x,y);
}
程序2:将上面程序的if语句(第4-6行)改为:
if (x>=0)
if (x>0) y=1;
else y=0;
else y=-1;
第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、!。其中优先级最高的为!,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x
第4章流程控制语句_选择结构 一、指出下列语句中的错误 1. If @x ≥ @y Print @x 2. If 10<@x<20 Set @x=@x+20 二、使用IF 语句编程 1. 计算分段函数 假设自变量x 的值为5,要求:用Set 语句或Select 语句给自变量x 赋值,请编写程序。 2. 使用Set 语句输入一个整数X ,判断X 是否能被2整除。判断结果使用Print 语句输出。 3. 使用Set 语句输入一个整数N ,判断其能否同时被3和5整除。判断结果使用Print 语句输出。 4. 火车站托运行李,按规定当行李重量不超过50公斤时,每公斤运费0.25元,超过50公斤后,超过部分按每公斤0.40元收费。输入行李重量W 公斤,计算出应付多少运费。 注意:先使用Set 语句或Select 语句给变量赋初值。 5. 任意输入一个年份,判断该年是否为闰年,输出结果。 注意:先使用Set 语句或Select 语句给变量赋初值。 6. 用Set 或Select 语句输入3个数据,判断这3个数据是否可以组成三角形,如果能够组成三角形,计算并在窗体上输出三角形的面积。构成三角形的条件是:任意两边之和大于第三边。面积公式为area= ))()((C S B S A S S ---, 其中S=(A+B+C)/2,A 、B 、C 为三条 边的长度。 7. 公用电话收费标准如下:通话时间在3分钟之内(包括3分钟),收费0.5元;3分钟以上,则每超过1分钟加收0.15元。编写一段程序,计算某人通话S 分钟,应缴多少电话费。 三、使用Case 函数编程
第四节选择结构程序设计 4.1选择程序设计举例 在编写程序中,往往要求根据某个指定的条件是否满足来决定执行的内 容?例如,购物在1000元以下的打九五折,1000元及以上的打九折? C++ 提供if语句来实现这种条件选择?如 if amount<1000 tax=0.95; //amount 代表购物总额,tax 代表折扣 else tax=0.9; 〃若amount<1000,条件满足,tax=0.95,否则tax=0.9 pay二amount*tax; //pay 为实付款 流程可以用图4.1表示? lax=0.95 lax=0,9 pay= amount* lax J~ 图4.1 4.2选择结构和if语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假) 决定执行给出的两种操作之一? 4.2.1 if语句的3种形式 1. if (表达式)语句
例如: if(x>y) coutvvxvve ndl; 这种if语句的执行过程见图4.2(a)? 2. if (表达式)语句1 else语句2 例如: if (x>y) cout?x; else coutvvy; 见图 4.2(b)? 语句 rr (a) (b) 图4.2 3. if(表达式1)语句1 else if (表达式2)语句2 elseif(表达式3)语句3 else if (表达式m)语句m else语句n流程图见图4.3? 例如: if (n umber>500) cost=0.15; else if(number>300) cost=0.10;
else if( number>100) cost=0.075; else if( nu mber>50) cost=0.05; 说明: (1)从图4.2和图4.3可以看到:3种形式的if语句都是由一个入口进来,经过对表达式”的判断,分别执行相应的语句,最后归到一个共同的出口?这种形式的程序结构称为选择结构?在C++中if语句是实现选择结构主要的语句? (2)3种形式的if语句中在if后面都有一个用括号括起来的表达式,它 是程序编写者要求程序判断的条件” 一般是逻辑表达式或关系表达式? (3)第2?第3种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号? ⑷ 在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有 多个操作语句,此时用花括号“{} 将”几个语句括起来成为一个复合语
选择结构程序设计 一、实验目的 1.熟练掌握关系表达式和逻辑表达式的使用。 2.熟练掌握嵌套的if语句和switch语句实现多分支结构程序设计。 3.掌握选择结构程序设计的方法。 4.继续熟悉跟踪调试程序的方法和过程。 二、实验内容及步骤 1.分析程序并上机运行验证结果。 #include
实验4 选择结构程序设计 一、实验目的 1.掌握C语言中逻辑量的表示和使用方法。 2.掌握if语句及switch语句的使用。 3.熟悉各种表达式作为if语句及switch语句的条件。 4.了解Turbo C程序的基本调试方法。 二、实验内容 1.验证性实验 (1)分析程序的运行结果。 ①运行下列程序,输入1-7之间的任意数字,观察程序的运行结果。 #include
第四章择路而行---选择结构程序设计 第一节路口诀择----条件语句 一、教学目标 1、掌握选择结构程序中常用的Qbasic语句。 2、掌握选择结构程序设计方法。 3、能利用选择结构程序设计解决简单的实际问题。 二、教学重点: 1.选择结构的语句及功能 2.选择结构中程序设计方法。 三、教学方法:讲授法,对比法,分组讨论法。 四、教学时间:2课时 五、教学教程: (一)引入新课:前面我们学习了顺序结构程序设计,利用顺序结构只能设计一些较简单的程序,如果要处理复杂的问题,就需要采用另外两种基本结构:选择结构和循环结构。选择结构,是一种常用的主要基本结构,是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特性是:无论分支多寡,必择其一;纵然分支众多,仅选其一。 (二)讲述新课 l 单行条件选择语句IF 1、单行结构条件语句IF…THEN…ELSE 格式:IF <条件> THEN <语句1> [ELSE <语句2>] 功能:最简单的条件选择语句,用来进行条件判断,使语句有条件的执行。 说明: 1)当<条件>为真(非零数)时,则执行<语句1>。 2)ELSE语句可以省略。 3)当<条件>为假(零)时,而且语句中有ELSE语句则执行<语句2>。 4)IF、THEN、ELSE必须在同一行上。 2、示例A、输入x的值,计算y的值。 REM 程序名为:eg1.bas INPUT “请输入x的值:”,x IF x>=0 THEN Y=1+X ELSE Y=1-2*X PRINT "Y=";Y END 例:求一元二次方程Ax2+Bx+C=0(A<>0)的实数根。 分析:写写出程序的流程图,参考流程图来写程序。 程序清单如下: INPUT A,B,C D=B*B-4*A*C IF D<0 THEN then X1=(-B+SQR(D))/(2*A) X2=(-B-SQR(D))/(2*A) PRINT “X1=”;X1, “X2=”;X2 ELSE PRINT “此方程无实根” END
实验四选择结构程序设计答案 实验时间:年月日 【实验步骤】 一、程序调试练习 1、写出下列程序的运行结果: (1)ex4_1.c #include ②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。 ③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。 程序运行结果: ①z=2 ②z=3 ③z=0 (3)ex4_3.c #include 第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max 实验四-答案--选择结构程序设计 实验四选择结构程序设计答案 实验时间:年月日【实验步骤】 一、程序调试练习 1、写出下列程序的运行结果: (1)ex4_1.c #include ①从键盘上给x、y、z分别输入2,-1,2,分析程序运行的结果。 ②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。 ③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。 程序运行结果: ①z=2 ②z=3 ③z=0 (3)ex4_3.c #include 选择结构程序设计练习题 1.逻辑运算符两侧运算对象的数据类型( ) A.只能是0和1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 2.下列运算符中优先级最高的是( ) A.< B.+ C.&& D.!= 3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( ) A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210) C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210) 4.表示图中坐标轴上阴影部分的正确表达式是( ) A.(x<=a)&&(x>=b)&&(x<=c) B.(x<=a)||(b<=x<=c) C.(x<=a)||(x>=b)&&(x<=c) D.(x<=a)&&(b<=x<=c 5.判断char型量ch是否为大写字母的正确表达式是() A.‘A’<=ch<=‘Z’ B.(ch>=‘A’)&(ch<=‘Z’) C.(ch>=‘A’)&&(ch<=‘Z’) D.(‘A’<=ch)AND(‘Z’>=ch) 6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 () A.‘x’&&‘y’ B.x<=y C.x||y+z&&!y D.!(x 7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是() A.0 B.语法错误 C.1 D.“假” 8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是() A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为() A.1 B.2 C.3 D.4 10.下列运算符中优先级最低的是( )优先级最高的是( ) A.? B.&& C.+ D.!= 实验2 选择结构程序设计 一.实验目的: 1.掌握选择控制语句的使用方法; 2.了解C程序语句的执行过程。 二.实验内容: 1.编写程序:输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)。 2.从键盘输入的正整数,判断是否能被5和7同时整除,若是,则输出Yes;否则输出No。 3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。 4.编写程序,对于给定的一个百分比制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E’(用if…else…与switch 语句两种方法实现)。 5. 企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万元到40万元之间时,高于20万元的部分,可提5%;40万元到60万元之间时,高于40万元的部分,可提成3%;60万元到100万元之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求发放奖金总数。 6. 输入某年某月某日,判断这一天是这一年的第几天。 7. 输入一个字符,请判断是字母、数字还是特殊字符。 8. 身高预测: 男性成人身高=(父亲身高+母亲身高)*0.54cm 女性成人身高=(父亲身高*0.923+母亲身高)/2cm 如果喜爱体育锻炼,那么身高可增加2%;如果有良好的饮食习惯,可增加身高1.5%。键盘输入性别、父母身高、是否爱好体育锻炼、是否有良好的饮食习惯,利用给定身高预测方法对你的身高进行预测。 9. 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式。 操作数1 运算符op 操作数2 计算表达式的值。指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 在此基础上,增加如下要求: (1)如果要求程序能进行浮点数运算,程序应该如何修改?如何比较实型变量和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? (3)如果要求连续多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么程序如何进行修改? 第四章选择结构程序设计 一、填空 1.在C语言中,表示逻辑“真”值用_________。 2.得到整型变量a的十位数字的表达式为_________。 3.表达式:(6>5>4)+(float)(3/2)的值是_________。 4.表达式:a=3,a-1‖--a,2*a的值是_________。(a是整型变量) 5.表达式:(a=2.5-2.0)+(int)2.0/3的值是_________。(a是整型变量)6.C语言编译系统在给出逻辑运算结果时,以数值_________代表“真”,以 _________代表“假”;但在判断一个量是否为“真”时,以_________代表“假”,以_________代表真。 7.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为_________,m的值为_________。 8.若有int x,y,z;且x=3,y=-4,z=5,则表达式:!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_________。 二、编程: 1.企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数? 2.输入三个整数x,y,z,请把这三个数由小到大输出。 3.输入某年某月某日,判断这一天是这一年的第几天? 4.本程序演示从键盘输入x的值,计算并打印下列分段函数的值。 y=0(x<60) y=1(60<=x<70) y=2(70<=x<80) y=3(80<=x<90) 八年级信息技术教案第四章择路而行---选择结构程序设计 第四择路而行---选择结构程序设计 第一节路口诀择----条语句 一、教学目标 1、掌握选择结构程序中常用的Qbasi语句。 2、掌握选择结构程序设计方法。 3、能利用选择结构程序设计解决简单的实际问题。 二、教学重点: 1.选择结构的语句及功能 2.选择结构中程序设计方法。 三、教学方法:讲授法,对比法,分组讨论法。 四、教学时间:2时 五、教学教程: (一)引入新:前面我们学习了顺序结构程序设计,利用顺序结构只能设计一些较简单的程序,如果要处理复杂的问题,就需要采用另外两种基本结构:选择结构和循环结构。选择结构,是一种常用的主要基本结构,是计算机科学用描述自然界和社会生活中分支现象的重要手段。其特性是:无论分支多寡,必择其一;纵然分支众多,仅选其一。 (二)讲述新 l 单行条选择语句IF 1、单行结构条语句IF…THEN…ELSE 格式:IF <条> THEN <语句1> [ELSE <语句2>] 功能:最简单的条选择语句,用进行条判断,使语句有条的执行。说明: 1)当<条>为真(非零数)时,则执行<语句1>。 2)ELSE语句可以省略。 3)当<条>为假(零)时,而且语句中有ELSE语句则执行<语句2>。 4)IF、THEN、ELSE必须在同一行上。 2、示例A、输入x的值,计算的值。 RE 程序名为:eg1bas INPUT “请输入x的值:”,x IF x>=0 THEN =1+X ELSE =1-2*X PRINT “=“; END 例:求一元二次方程Ax2+Bx+=0(A<>0)的实数根。 分析:写写出程序的流程图,参考流程图写程序。 程序清单如下: INPUT A,B, D=B*B-4*A* IF D<0 THEN then 第4章选择结构程序设计 通过本章实验作业应达目标 1.练习并熟练掌握if、switch语句使用,实现二路与多路选择结构; 本章必须上交作业 程序4_2.c、4_3.c、4_4.c、4_5.c上传至http://121.251.227.27:8080/c 实验一大小写转换 【实验目的】 熟悉关系与逻辑运算,了解if-else的顺序与嵌套层次关系。 【实验内容】 下面程序希望完成大小写字母转换功能。若输入一个大写字母,则转化为小写输出;若输入小写字母则转化为大写输出;对其他字母则原样不变输出。程序以4_1.c命名,运行程序,分别输入一次大写、一次小写字母、一次‘#’进行验证。如果程序有错,请改正。 #include 求3的平方根: 【实验提示】 本程序需要从键盘接收一个表达式,根据表达式中的运算符号实现相应的运算并将结果保存下来并输出。 C语言本身是没有乘方运算符的,可以调用数学函数pow(x,y)求x的y次方。注意一定要包含 1第4章选择结构程序设计 4.1 关系表达式及逻辑表达式 4.2 if语句 4.3 switch语句 4.4 应用举例 2020/6/29 2 选择结构是结构化程序设计中的三种基 本结构之一。在大多数程序中都会包含选 择结构。它的作用是,根据所指定的条件 是否满足,决定从给定的两组或多组操作 选择其一。 本单元重点介绍if 语句和switch语句的 一般语法形式、功能以及程序应用实例。 3 4.1 关系表达式、逻辑表达式 1、关系表达式:用关系运算符将表达式连接起来的式子 ?优先级:(<<=>=>)>(==!=) ?结合性:自左至右; ?表达式的值:若为真,则结果为1; 若为假,则结果为0。 2、逻辑表达式:用逻辑运算符将表达式连接起来 的式子 ?优先级:!>&&>|| ?结合性:自左至右; ?表达式的值:若为真,则结果为1; 4 4.1 关系表达式、逻辑表达式 3. 运算符的优先级 ! 高 算术运算符 关系运算符 &&和|| 赋值运算符低 5 4.2.1 if 语句 If语句的三种形式 1.if(表达式)语句 这种if语句的执行过程如图: 表达式 语句假(0) 真(非0) main() { float x , y; scanf(“%f ”, &x); y = 2 * x ; if ( x < 0 ) y = 3 -x ; printf(“y= %6.2f”, y ); } 6 2.双分支选择语句 首先先判断表达式的值若为非0则执行语句1。若为0则执行语句2。 if (表达式)语句1 else 语句2 表达式 语句1语句2 真 假 嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 (2)学会正确使用逻辑运算符和逻辑表达式。 (3)熟练掌握if语句的使用(包括if语句的嵌套)。 (4)熟练掌握多分支选择语句—switch语句。 (5)结合程序掌握一些简单的算法。 (6)进一步学习调试程序的方法。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时 改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提 示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正 确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容: 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 (1)有一函数: () () ()? ? ? ? ? ≥ - < ≤ - < = 10 x 11 3 10 x 1 1 2 1 x x x x y 实验五选择结构编程练习 题目: 1身高预测 每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。 设faHeight为其父身高,moHeight为其母身高,身高预测公式为: 男性成人时身高= (faHeight + moHeight) * 0.54(cm) 女性成人时身高= (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。 编程从键盘输入你的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M 表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示喜爱,输入字符N表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。 实验授课提示: 通过这个实际例子熟悉选择结构程序设计的方法,以及if语句,进一步熟悉TC集成环境的程序编辑、编译、链接、运行和调试方法。 2 简单的计算器程序 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 本实验程序是在例4.8基础上,增加如下要求: (1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?如何比较实型变量data2和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多空白符,那么程序如何修改? (3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:Do you want to continue(Y/N or y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么,程序如何修改? 实验授课提示: 通过这个实际例子熟悉选择结构程序设计的方法,以及switch语句,进一步熟悉TC集成环境的程序编辑、编译、链接、运行和调试方法。 对于第(3)题,可利用%1s格式符输入用户回答,利用do-while语句实现反复运算直到用户键入N或n。 百度文库- 让每个人平等地提升自我 习题五选择结构程序设计习题 班级:学号:姓名: 1.单项选择题 (1)选择结构程序设计的特点是 _______。 A. 自上向下逐个执行 B.根据判断条件,选择其中一个分支执行 C. 反复执行某些程序代码 D.以上都是 (2)假定所有变量均已正确定义,下列程序段运行后x 的值是 ______。 a=b=c=0,x=35; if(!a) x--; else if(b); if(c)x=3; else x=4; A.34 B.4 C.35 D.3 (3)下面的程序片段所表示的数学函数关系是 ______。 if(x<0) y= -1; else if(x>0) y=1; else y=0; (4) 下列各语句序列中,能够且仅输出整型变量a、b 中最大值的是 ()。 A. if(a>b) printf("%d\n",a); printf("%d\n",b); B. printf("%d\n",b); if(a>b) printf("%d\n",a); C. if(a>b) printf("%d\n",a); else printf("%d\n",b); D. if(a0) y=1; else if(x==0) y=0; else y= -1; printf("%d",y); A. 1 B. -1 C. 0 D. 2 (6) 程序段 int x=5,y=8,max; max=(x>y)?x:y; printf("%d",max); 的输出结果是。 A. 5 B. 8 C. 3 D. 13 (7) 程序段 int x=3,a=1;switch(x) {case 4: a++;case 3: a++;case 2: a++;case 1: a++;} printf ("%d",a); 的输出结果是。 A. 1 B. 2 C. 3 D. 4 (8)下列语句应将小写字母转换为大写字母,其中正确的是 ( )。 (ch>='a'&ch<='z') ch=ch-32; (ch>='a'&&ch<='z')ch=ch-32; 第4章选择结构 1、以下选项中,当x为大于1的奇数时,值为0的表达式是 A) x%2==0 B) x/2 C) x%2!=0 D) x%2==1 参考答案:A 【解析】算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0?B选项的值为不定值,但绝对不是0?C选项的值为真,即1?D选项的值为真,即1? 2、当变量c的值不为2、4、6时,值为"真"的表达式是 A) (c>=2 && c<=6)&&(c%2!=1) B) (c==2)||(c==4)||(c==6) C) (c>=2 && c<=6)&& !(c%2) D) (c>=2 && c<=6) || (c!=3) || (c!=5) 参考答案:D 【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真?所以只有选项D满足要求? 3、以下叙述中正确的是 A) 在C语言中,逻辑真值和假值分别对应1和0 B) 关系运算符两边的运算对象可以是C语言中任意合法的表达式 C) 对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误 D) 分支结构是根据算术表达式的结果来判断流程走向的 参考答案:B 【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x==y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。 4、下列关系表达式中,结果为"假"的是 A) 3 <= 4 B) (3 < 4) == 1 C) (3 + 4) > 6 D) (3 != 4) > 2 参考答案:D 【解析】B选项中,关系表达式(3<4)==1即1==1,结果为真; C选项中,(3+4)>6即7>6,结果为真;A选项中,3<=4结果为真。D选项中,(3!=4)>2即1>2,结果为假。因此D选项正确。 5、以下叙述中正确的是 A) 对于逻辑表达式:a++ || b++,设a的值为1,则求解表达式的值后,b的值会发生改变 B) 对于逻辑表达式:a++ && b++,设a的值为0,则求解表达式的值后,b的值会发生改变 C) else不是一条独立的语句,它只是if语句的一部分 D) 关系运算符的结果有三种:0,1,-1 参考答案:C 【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有"真"和"假"两种。因此C选项正确。c语言第4章 选择结构程序设计习题答案
实验四-答案--选择结构程序设计讲课讲稿
选择结构程序设计练习题
C语言选择结构程序设计编程题.doc
C语言 选择结构程序设计练习题
八年级信息技术教案第四章 择路而行---选择结构程序设计
第4章选择结构程序设计
第04章 选择结构程序设计
选择结构程序设计实验报告
五选择结构编程练习
习题五选择结构程序设计习题.doc
第4章 选择结构