第4章 选择结构
第4章 选择结构程序设计
(2)switch语句,实现多分支的选择结构
4.1 选择结构和条件判断
例4.1 在例3.5的基础上对程序进行改进。题目要求
2 求 ax bx c 0 方程的根。
由键盘输入a,b,c。假设a,b,c的值任意,并不保证
b2 4ac 0
b2 4ac 0 。需要在程序中进行判别,如果
例4.3 输入3个数a,b,c,要求按由小到大的顺序输出。
解题思路:可以先用伪代码写出算法: if a>b,a和b对换 if a>c,a和c对换 if b>c,b和c对换 顺序输出a,b,c (a是a、b中的小者) (a是三者中最小者) (b是三者中次小者)
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { { { if(a>c) if(b>c) 如果 a>b,将a和b对换 } } } a是a、b中的小者 t=a; a=b; b=t; t=a; a=c; c=t; t=b; b=c; c=t;
a>b ? printf(“%d”,a): printf(“%d”,b);
4.5 条件运算符和条件表达式
例4.4 输入一个字符,判别它是否大写字母,如果是, 将它转换成小写字母;如果不是,不转换。然后输出最 后得到的字符。 解题思路:用条件表达式来处理,当字母是大写时,转 换成小写字母,否则不转换
if (disc<0) printf("This equation hav't real roots\n");
C语言程序设计第4章选择结构程序设计ppt课件
8
printf("grade is E" );
9 else if (score >=60 && score<70 )
10
printf( "grade is D");
11 else if (score >=70 && score<80 )
12
printf( "grade is C");
13 else if (score>=80 && score<90 )
printf("a,b="); scanf("%d,%d",&a,&b); if (a>b) max=a; else max=b; printf("max=%d\n",max); }
结束
8
3.if-else if-else语句
(1)语句格式:
if (表达式1) 语句1
else if (表达式2) 语句2
不再判断,顺序执 行下面的语句
21
4.2 switch语句
switch (表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n [default:语句n+1] }
注意:
1. <表达式>可以是整型或字 符型表达式; 2. case后面必须是常量表达 式,不能包含变量; 3. 每个常量表达式的值应互 不相同; 4. case语句先后顺序随意; 5.若从上至下没有找到与表 达式的值相匹配的case,含有 default子句时,执行语句n+1。
C语言第四章.选择结构程序设计
case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }
C语言 第4章 选择结构程序设计
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句
《C语言程序设计(第五版)》第4章选择结构程序的设计 PPT课件
►(b*b-4*a*c)>=0
b*b-4*a*c>=0
►z= (x>y+3)
z= x>y+3
►(a>b)= = c
a>b= =c
►a=(b!=c)
a=b!=c
当然为提高程序的可读性、可维护性你不妨多使用 括号,因为C语言中的有些优先级很容易让你不小心犯 错。
C语言程序设计
第4章 选择结构程序设计
第10页
“>”的结果为“假”,即条件不成立。
C语言程序设计
第4章 选择结构程序设计
第5页
4.1 关系运算及关系表达式
4.1.1 关系运算符及其优先次序
运算符
含义
> 大于
优先级
结合性
>= 大于或等于 这些关系运算符等优
< 小于
先级,但比下面的优 先级高
左结合性
<= 小于或等于
== 等于 != 不等于
这些关系运算符等优 先级,但比上面的优 先级低
C语言程序设计
第4章 选择结构程序设计
第4页
4.1 关系运算及关系表达式
所谓“关系运算”实际上就是“比较运算”, 即将两个数据进行比较,判定两个数据是否符合 给定的关系。例如,
► “x>y+3”中的“>”表示一个大于关系运算。 ➢如果a的值是5,b的值是1,则大于关系运算
“>”的结果为“真”,即条件成立; ➢如果a的值是2,b的值是1,则大于关系运算
因为按照自左至右的结合方向,先执行关系运算
“a>b”得值为1(“真”),再执行关系运算“1>c”, 得值为0(“假”),因此y为0。
C语言程序设计
第4章选择结构程序设计
8 t
4.3 if语句 #include <stdio.h> int main() { int a,b,c,t; scanf(“%d,%d,%d”,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf(“%d,%d,%d \n”,a,b,c); return 0; }
a≥b且a≥c 最大值为a
b≥a且b≥c 最大值为b c≥a且c≥b 最大值为c
a>=b&&a>=c 最大值为a
b>=a&&b>=c 最大值为b c>=a&&c>=b 最大值为c
4.3 if语句 #include <stdio.h> int main() { int a,b,c,max; scanf(“%d,%d,%d”,&a,&b,&c); if(a>=b&&a>=c) max=a; if(b>=a&&b>=c) max=b; if(c>=a&&c>=b) max=c; printf(“max=%d\n”,max); return 0; }
表达式1 真 假 表达式2 真 假 表达式3 真 语句1 语句2 语句3 语句4 假
多个分支的选择
4.3 if语句 例:输入学生成绩,根据成绩分等级,90分以上为 ‘A‟,80~89分为‘B‟, 70~79分为‘C‟, 60~ 69分为‘D‟, 60分以下为‘E‟。 scanf(“%f”,&score); if(score>=90) printf(“A”); else if(score>=80) printf(“B”); else if(score>=70) printf(“C”); else if(score>=60) printf(“D”); else printf(“E”);
c语言 第四章 选择结构课件
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
C语言第四章选择结构ppt课件
/* 求 x 的绝对值并赋给 y */
/* 输入 x 的值 */
/* 输出 x 的绝对值 */
/* 编译预处理:包含头文件 */
二、if ... else 语句
对这一句话“如果x>=0则y=x,如果x<0则y=-x”,可以写出以下语句:
表达式1 ? 表达式2 :表达式3
表达式1为真,结果为表达式2的值 表达式为假,结果为表达式3的结果; 运算符 “ ?:”的优先级只在逗号和赋值运算 符之前;表达式2和表达式3只可能执行一个;这是C语言中的唯一一个三目运算符;条件运算符的结合方向为“自右自左”。
例:已知a=5,b=6,c=7,d=8,n=2 ; 执行以下语句后表达式的值为多少? n的值为多少? (a < b ) ? ( c + d ) : ( + + n )
if ( 表达式1 ) if ( 表达式2 ) 语句1; else 语句2;else if ( 表达式3 ) 语句3; else 语句4;
实现if ~ else 正确配对方法:加{ }
五、条件运算符
能否把两条语句合成一句,更好地体现这种逻辑关系呢?这就是 if ...... else 语句的功能。
简单的if 语句只能表达“如果 ,那么 ”的含义,而if ...... else 语句却能表达“如果 那么 否则 ”的含义。
If ( x>=0) y=x;if (x<0) y=-x;
a>b?a:c>d?c:d
a>b?a:(c>d?c:d)
表达式值为15,n=2
六、 switch 语句
switch 语句是多分支的选择语句又称开关语句。
第四章 选择(分支)结构程序设计
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
第4章 选择结构程序设计
3.多分支选择语句
单分支和双分支if语句一般都用于两个分支的选择 结构。对于多个分支选择,可采用多分支if语句来实现。
-1 (x<0) 例:计算分段函数 y= 0 (x=0) 1 (x>0)
多分支if语句
语句形式:
if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; „ else if (表达式n) 语句n; else 语句n+1;
真
假
真
假
s=s0+200
s=s0+180
s=s0+150
s=s0+120
输出s 结束 图4.11 例4.4流程图
程序如下: #include "stdio.h" main() {float s0,s; int year; printf("Input s0,year:"); scanf("%f,%d",&s0,&year); if(year>=20) {if(s0>=2000) s=s0+200; else s=s0+180; } else {if(s0>=1500) s=s0+150; else s=s0+120; } printf("s=%f\n",s); }
输出 结束 图4.2 例4.1流程图
2.双分支if语句
if (表达式) 语句1; else 语句2;
执行过程:
首先先判断表达式的值 若为非0则执行语句1 若为0则执行语句2 if语句的双分支形式,在语法上视为一条语句。
图4.3 双分支if语句流程图
第4章 选择结构程序设计
#include <stdio.h> 4.2用if语句实现选择结构程序设计 int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a<b) { t=a; a=b; b=t; } if(a<c) { t=a; a=c; c=t; } if(b<c) 如果 b<c,将b和c对换 b是三者中的次大者 { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
用条件运算符改写if语句
• 有一种if语句,当被判别的表达式的值为 “真”或“假” 时,都执行一个赋值语 句且向同一个变量赋值 • 如:if (a>b)
max=a; else max=b;
max = (a > b) ? a : b;
条件表达式
4.2用if语句实现选择结构程序设计
4.2.2if语句的一般形式
4.1条件判断
4.1.1条件判断的含义
在现实生活中,需要进行判断和选择的情况是很 多的
• 处理这些问题,关键在于进行条件判断 • 由于程序处理问题的需要,在大多数程序中都会 包含选择结构,需要在进行下一个操作之前先进 行条件判断
4.1条件判断
4.1.1条件判断的含义
• C语言有两种选择语句:
(1)if语句,实现两个分支的选择结构
4.2用if语句实现选择结构程序设计
4.2.1用if语句实现选择结构举例
例4.3 输入3个成绩a,b,c,要求按由高 到低的顺序输出。
4.2用if语句实现选择结构程序设计
第4章 C语言选择结构程序设计
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
第4章 选择结构程序设计
exam4-2
10
4.3 if语句
4.3.3 多分支if语句
表达式1 格式 N Y if (表达式1) 语句1 表达式2 语句1; Y e l se i f ( 表达式2 ) 语句2; 语句2 Y e l s e i f (表达式3) 语句3; 语句n …… else 语句 n+1;
计算机科学系 张丽虹
12
4.3 if语句
例:编写一个收款程序,计算购买某物品的总金额。该 物品的单价为5元/公斤,购买5公斤以上打9折,购买 10公斤以上打8折,购买20公斤以上打7折,购买50公 斤以上打6折,购买100公斤以上打5折。
exam4_3.c
例:编写一个程序,根据用户输入的三角形三条边长判 定是何种三角形 ,对于有效三角形,求其面积。
功能:
计算表达式的值,与常量表达式的值比较,等于第i个值时,顺序执 行语句序列i、i+1、 …、 n+1,直到遇到break语句或右花括号}。 若与所有常量表达式值都不相等,执行语句序列n+1。
计算机科学系 张丽虹
16
4.4 switch语句
例: 从键盘上输入一个百分制成绩score,输出其等级。
#include <stdio.h> main( ) { int x; scanf ("%d",&x); if (x%2 != 0) { printf("%d is an odd \n",x) ; if (x%5==0) printf("%d is the times of 5 \n",x) ; } else printf("%d is an even \n",x) ; }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章选择结构1、以下选项中,当x为大于1的奇数时,值为0的表达式是A) x%2==0B) x/2C) x%2!=0D) 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和0B) 关系运算符两边的运算对象可以是C语言中任意合法的表达式C) 对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误D) 分支结构是根据算术表达式的结果来判断流程走向的参考答案:B【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x==y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。
因此B选项正确。
4、下列关系表达式中,结果为"假"的是A) 3 <= 4B) (3 < 4) == 1C) (3 + 4) > 6D) (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选项正确。
#include <stdio.h>main(){ int x=35, B; char z='B' ;B = (( x ) && ( z <'b' ));printf("%d\n", B );}程序运行后的输出结果是A) 1 B) 0 C) 35 D) 66参考答案:A【解析】本题重点考察逻辑运算符和关系运算符的相关知识,已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为'B'。
语句B=((x)&&(z<'b'));中,(x)的值为1,'B'的asscii码小于'b'的asscii码,所以(z<'b')的值也为1,1&&1结果为1。
因此A选项正确。
7、若变量已正确定义,以下选项中非法的表达式是A) a!=4||'b'B) 'a'=1/2*(x=y=20,x*3)C) 'a' % 4D) 'A' + 32参考答案:B【解析】A选项中'a'即表示a为字符常量,再给'a'赋值1/2*(x=y=20,x*3),是不正确的。
因此B选项正确。
8、与数学表达式x≥y≥z对应的C语言表达式是A) (x>=y)||(y>=x)B) (x>=y>=z)C) (x>=y)!(y>=z)D) (x>=y)&&(y>=z)参考答案:D【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<=y和y<=z是逻辑与的关系。
因此D选项正确。
9、以下叙述中正确的是A) 逻辑"或"(即运算符||)的运算级别比算术运算要高B) C语言的关系表达式:0<x<10完全等价于: (0<x) && (x<10)C) 逻辑"非"(即运算符!)的运算级别是最低的D) 由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象参考答案:D【解析】B选项中,(x>0)&&(x<10)的值是1或0,条件是x>0 并且x <10。
但是 0<x<10这种写法的结果任何时候都是1; C选项中,逻辑"非"(即运算符!)的运算级别是最高的;A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。
因此D选项正确。
10、表示关系式x≤y≤z的C语言表达式的是A) (x<=y)&&(y<=x)B) (x<=y)||(y<=x)C) (x<=y<=z)D) x<=y)!(y<=x)参考答案:A【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<=y和y<=z是逻辑与的关系。
因此A选项正确。
11、有以下程序#include <stdio.h>{while(*c){if( *c >= 'a' && *c <= 'z')*c =*c - ('a' - 'A');c++;}}main(){char s[81];gets(s);fun(s);puts(s);}当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是A) hello beijingB) Hello BeijingC) HELLO BEIJINGD) hELLO Beijing参考答案:C【解析】主程序读取整个字符串存于s中,调用fun函数,字符指针c指向数组s。
函数fun的功能是把指针c所指向的字符数组中的所有小写字符转换为大写。
gets函数可以把空格作为字符串的一部分输入,以回车作为输入结束。
如果*c为小写字符,则*c=*c-32(转大写)。
因此C选项正确。
12、若有以下程序#include <stdio.h>main(){ int a=6, b=0, c=0;for ( ;a&&(b==0); ){ b += a; a -= c++; }printf("%d,%d,%d\n", a,b,c);}则程序的输出结果是A) 5,6,0 B) 6,0,0 C) 6,6,1 D) 5,6,1参考答案:C【解析】本题重点考察C语言中for语句和逻辑表达式,for语句的一般形式为:for(表达式1;表达式2;表达式3) 语句其循环中的"表达式1(循环变量赋初值)"、"表达式2(循环条件)"和"表达式3(循环变量增量)"都是选择项, 即可以缺省,但";"不能缺省。
该题目中省略了"表达式1(循环变量赋初值)"和"表达式3(循环变量增量)"。
for ( ;a&&(b==0); ){b+=a;a-=c++;}相当于while(a&&(b==0)){ b+=a;a-=c++;}。
因此C选项正确。
13、有以下程序#include <stdio.h>main(){ double x=2.0, y;if( x<0.0 ) y=0.0;else if( (x<5.0) && (!x) ) y=1.0 / ( x+2.0 );else y=10.0;printf(" %f\n ", y );}程序运行后的输出结果是A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000参考答案:C【解析】本题重点考察if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if((x<5.0)&&(!x)),即条件为0,继续执行if( x<10.0 ),条件为1,即执行y=1.0 / x;。
依据printf()函数输出类型中f是以小数形式输出单、双精度实数。
因此C选项正确。
14、若a是数值类型,则逻辑表达式 (a==1)||(a!=1)的值是A) 1B) 0C) 2D) 不知道a的值,不能确定参考答案:A【解析】逻辑或"||"要求只要两边的运算对象有一个非零,结果就为真,虽然不知道a的值,但是若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。15、有以下程序#include <stdio.h>main(){ int a=1,b=2,c=3,d=0;if (a==1 && b++==2)if (b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);else printf("%d,%d,%d\n",a,b,c);else printf("%d,%d,%d\n",a,b,c);}程序运行后的输出结果是A) 1,3,2 B) 1,3,3 C) 1,2,3 D) 3,2,1参考答案:B【解析】else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,不再执行第二个case语句中的操作。而是进入第二个if语句条件判断,因为b!=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c-- !=3)c的值不变,也不再执行第一个else语句。打印a的值1,b 的值3,c的值3。16、若有以下程序#include <stdio.h>main(){ int a=1,b=2,c=3,d=4;if ((a=2) || (b=1)) c=2;if ((c==3) && (d=-1)) a=5;printf("%d,%d,%d,%d\n", a,b,c,d);}则程序的输出结果是A) 1,2,3,4B) 2,1,2,-1D) 2,2,2,4参考答案:D【解析】第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。所以结果为选项D。17、设有定义:int a=0,b=1;,以下表达式中,会产生"短路"现象,致使变量b的值不变的是A) a++ && b++B) a++ || ++bC) ++a && b++D) +a || ++b参考答案:A【解析】运算符"++"放在变量前面时,表示将变量+1,再参与其他操作,a++ && b++时,由于a值是0直接判定与运算结果为0,忽视b++的值,因此b值不发生改变,答案为A选项。