第四章 选择语句Word格式.docx
- 文档编号:6645392
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:21
- 大小:27.55KB
第四章 选择语句Word格式.docx
《第四章 选择语句Word格式.docx》由会员分享,可在线阅读,更多相关《第四章 选择语句Word格式.docx(21页珍藏版)》请在冰点文库上搜索。
C
【解析】本题中if(a=1)b=1;
与elsed=3;
之间多了语句c=2;
所以会出现else语句的位置错误的编译失败提示。
30.有以下程序段:
inta,b,c;
a=10;
b=50;
c=30;
if(a>
b)a=b,b=c;
c=a;
a=%db=%dc=%d\n"
,a,b,c);
程序的输出结果是( )。
A)a=10b=50c=30
B)a=10b=50c=10
C)a=10b=30c=10
D)a=50b=30c=50
【解析】本题中a>
b的条件不满足,所以不执行逗号表达式a=b,b=c;
的操作,而是执行c=a操作,即c的值为10。
32.有以下程序
{intx;
scanf("
%d"
&
x);
if(x<
=3);
else
if(x!
=10)printf("
x);
程序运行时,输入的值在哪个范围才会有输出结果
A)小于3的整数
B)不等于10的整数
C)大于3或等于10的整数
D)大于3且不等10的整数
【解析】根据代码可知如果x的值小于3,执行空语句,不进行打印操作。如果x的值大于3,再判断x的值是否不等于10,如果不等于10就打印x的值,所以选择D选项。
程序分析结果
33.若有定义语句:
char*s1="
OK"
*s2="
ok"
以下选项中,能够输出"
的语句是
A)if(strcmp(s1,s2)!
=0)puts(s2);
B)if(strcmp(s1,s2)!
=0)puts(s1);
C)if(strcmp(s1,s2)==1)puts(s1);
D)if(strcmp(s1,s2)==0)puts(s1);
【解析】strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCII码值大小),以第一个不相同的字符的大小作为比较结果。
因为'
OK'
<
'
ok'
,所以strcmp(s1,s2)为负值,只有B选项正确。
34.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母
ctype.h>
voidfun(char*p)
{
inti=0;
while(p[i])
{
if(p[i]=='
'
&
islower(p[i-1]))
p[i-1]=p[i-1]-'
a'
+'
A'
i++;
chars1[100]="
abcdEFG!
fun(s1);
%s\n"
s1);
程序运行后的输出结果是
A)abcdEFg!
B)AbCdEFg!
C)abcdEFG!
D)aBcDEFG!
【解析】调用fun函数后,实参数组名s1传给形参指针p,p也指向数组s1。
fun函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。
程序中语句p[i-1]=p[i-1]-'
即p[i-1]=p[i-1]-32,意思是将p[i-1]中的字符转换为大写。
因此D选项正确。
35.有以下程序
intf(intx)
inty;
if(x==0||x==1)return(3);
y=x*x-f(x-2);
returny;
intz;
z=f(3);
z);
程序的运行结果是
A)0
B)9
D)8
【解析】主函数中调用f函数,同时将数值3传递给变量x,执行条件与if(x==0||x==1);
此时条件不成立,跳过return(3);
,直接执行语句y=x*x-f(x-2);
这里f(x-2)为函数的递归调用,再次调用f函数,此时x=1,条件语句条件成立,返回3给f
(1),y=3*3-3=6,最后将6返回主函数,并进行输出。
因此C选项正确。
36.以下函数实现按每行8个输出w所指数组中的数据
voidfun(int*w,intn)
{inti;
for(i=0;
i<
n;
i++)
{______________
%d"
w[i]);
\n"
);
在横线处应填入的语句是
A)if(i/8==0)printf("
B)if(i/8==0)continue;
C)if(i%8==0)printf("
D)if(i%8==0)continue;
【解析】要按照每行8个输出数据的话,横线处语句的功能应该为:
当i是8的倍数时(i%8==0),输出一个换行符。
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>
!
(c%2)
D)(c>
=6)||(c!
=3)||(c!
=5)
【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真。所以只有选项D满足要求。
3。
以下叙述中正确的是
A)在C语言中,逻辑真值和假值分别对应1和0
B)关系运算符两边的运算对象可以是C语言中任意合法的表达式
C)对于浮点变量x和y,表达式:
x==y是非法的,会出编译错误
D)分支结构是根据算术表达式的结果来判断流程走向的
【解析】A选项中,在C语言中,逻辑真值对应非0;
C选项中,表达式:
x==y是合法的;
D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。
因此B选项正确。
4.下列关系表达式中,结果为"
假"
的是
A)3<
=4
B)(3<
4)==1
C)(3+4)>
6
D)(3!
=4)>
2
【解析】B选项中,关系表达式(3<
4)==1即1==1,结果为真;
C选项中,(3+4)>
6即7>
6,结果为真;
A选项中,3<
=4结果为真。
D选项中,(3!
=4)>
2即1>
2,结果为假。
5.以下叙述中正确的是(短路运算)
A)对于逻辑表达式:
a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变
B)对于逻辑表达式:
a++&
b++,设a的值为0,则求解表达式的值后,b的值会发生改变
C)else不是一条独立的语句,它只是if语句的一部分
D)关系运算符的结果有三种:
0,1,-1
【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;
D选项中,关系运算符的结果有"
和"
两种。
6.有以下程序(短路运算)
{intx=35,B;
charz='
B'
;
B=((x)&
(z<
b'
));
B);
A)1
B)0
C)35
D)66
【解析】本题重点考察逻辑运算符和关系运算符的相关知识,已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为'
。
语句B=((x)&
(z<
));
中,(x)的值为1,'
的asscii码小于'
的asscii码,所以(z<
)的值也为1,1&
1结果为1。
因此A选项正确。
7.若变量已正确定义,以下选项中非法的表达式是
A)a!
=4||'
B)'
=1/2*(x=y=20,x*3)
C)'
%4
D)'
+32
【解析】A选项中'
即表示a为字符常量,再给'
赋值1/2*(x=y=20,x*3),是不正确的。
8.与数学表达式x≥y≥z对应的C语言表达式是
A)(x>
=y)||(y>
=x)
B)(x>
=y>
=z)
C)(x>
=y)!
(y>
D)(x>
=y)&
【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<
=y和y<
=z是逻辑与的关系。
9.以下叙述中正确的是
A)逻辑"
或"
(即运算符||)的运算级别比算术运算要高
B)C语言的关系表达式:
0<
x<
10完全等价于:
(0<
x)&
(x<
10)
C)逻辑"
非"
(即运算符!
)的运算级别是最低的
D)由&
构成的逻辑表达式与由||构成的逻辑表达式都有"
短路"
现象
【解析】B选项中,(x>
0)&
(x<
10)的值是1或0,条件是x>
0并且x<
10。
但是0<
10这种写法的结果任何时候都是1;
C选项中,逻辑"
)的运算级别是最高的;
A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。
10.表示关系式x≤y≤z的C语言表达式的是
A)(x<
(y<
B)(x<
=y)||(y<
C)(x<
=y<
D)x<
11.有以下程序
voidfun(char*c)
while(*c)
if(*c>
='
&
*c<
z'
)
*c=*c-('
-'
c++;
chars[81];
gets(s);
fun(s);
puts(s);
当执行程序时从键盘上输入HelloBeijing<
回车>
,则程序的输出结果是
A)hellobeijing
B)HelloBeijing
C)HELLOBEIJING
D)hELLOBeijing
【解析】主程序读取整个字符串存于s中,调用fun函数,字符指针c指向数组s。
函数fun的功能是把指针c所指向的字符数组中的所有小写字符转换为大写。
gets函数可以把空格作为字符串的一部分输入,以回车作为输入结束。
如果*c为小写字符,则*c=*c-32(转大写)。
11.若有以下程序
{inta=6,b=0,c=0;
for(;
a&
(b==0);
)
{b+=a;
a-=c++;
%d,%d,%d\n"
a,b,c);
A)5,6,0
B)6,0,0
C)6,6,1
D)5,6,1
【解析】本题重点考察C语言中for语句和逻辑表达式,for语句的一般形式为:
for(表达式1;
表达式2;
表达式3)语句
其循环中的"
表达式1(循环变量赋初值)"
、"
表达式2(循环条件)"
表达式3(循环变量增量)"
都是选择项,即可以缺省,但"
;
不能缺省。
该题目中省略了"
for(;
){b+=a;
a-=c++;
}相当于while(a&
(b==0)){b+=a;
}。
12.有以下程序
{doublex=2.0,y;
if(x<
0.0)y=0.0;
elseif((x<
5.0)&
(!
x))y=1.0/(x+2.0);
elseif(x<
10.0)y=1.0/x;
elsey=10.0;
%f\n"
y);
A)0.000000
B)0.250000
C)0.500000
D)1.000000
【解析】本题重点考察if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if((x<
5.0)&
(!
x)),即条件为0,继续执行if(x<
10.0),条件为1,即执行y=1.0/x;
依据printf()函数输出类型中f是以小数形式输出单、双精度实数。
13.若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是
C)2
D)不知道a的值,不能确定
【解析】逻辑或"
||"
要求只要两边的运算对象有一个非零,结果就为真,虽然不知道a的值,但是若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
15.当变量c的值不为2、4、6时,值也为"
【解析】逻辑或运算符中只要有一个运算量为真结果就是真,当c>
=6条件不成立时c的值肯定不是2、3、4、5、6,所以c!
=3,与c!
=5均成立。所以D选项的结果一定为真。
16.有以下程序(短路运算)
{inta=1,b=2,c=3,d=0;
if(a==1&
b++==2)
if(b!
=2||c--!
=3)
printf("
a,b,c);
elseprintf("
A)1,3,2
B)1,3,3
C)1,2,3
D)3,2,1
【解析】else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,不再执行第二个case语句中的操作。而是进入第二个if语句条件判断,因为b!
=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c--!
=3)c的值不变,也不再执行第一个else语句。打印a的值1,b的值3,c的值3。
17.若有以下程序(短路运算)
{inta=1,b=2,c=3,d=4;
if((a=2)||(b=1))c=2;
if((c==3)&
(d=-1))a=5;
%d,%d,%d,%d\n"
a,b,c,d);
A)1,2,3,4
B)2,1,2,-1
C)5,1,2,-1
D)2,2,2,4
【解析】第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。所以结果为选项D。
18.若有以下程序(短路运算)
if((a=2)&
(b=1))c=2;
if((c==3)||(d=-1))a=5;
A)2,2,2,4
D)1,2,3,4
【解析】第一个if语句的判断条件中是逻辑与表达式,只有运算对象均非零结果才为真,执行第一个if判断条件,均为赋值表达式,第一个运算对象a=2非零,判断第二个表达式b=1也非零,所以条件成立执行c=2的赋值操作。执行第二个if判断条件中的逻辑或表达式,只要有一个对象非零结果就是真,本条件中c==3运算对象为假,所以需要判断第二个运算对象d=-1,结果为-1非零,所以条件成立,执行a=5,的操作,所以a值为5,b值为1,c值为2,d值为-1。
19.下关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A)可以是任意合法的表达式
B)只能是整数0或非0整数
C)可以是结构体类型的数据
D)只能是整数0或1
【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A)。
20.设有宏定义:
#defineIsDIV(k,n)((k%n==1)?
1:
0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&
IsDIV(m,7)
为真时所要表达的是
A)判断m是否能被5和7整除
B)判断m被5和7整除是否都余1
C)判断m被5或者7整除是否余1
D)判断m是否能被5或者7整除
【解析】本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,所需要m都能被5和7整除都余1,所以选项B正确。
21.若有定义intx,y;
并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是( )。
A)(x-y<
0||x-y>
0)
B)(x-y<
C)(x-y>
D)(x-y==0)
【解析】条件表达式:
x=表达式1?
表达式2:
表达式3的含义是:
先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。
若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。
在本题中与表达式1:
(x-y)等价的是(x-y<
0)。
22.若变量已正确定义
for(x=0,y=0;
(y!
=99&
x<
4);
x++)
则以上for循环
A)执行3次
B)执行4次
C)执行无限次
D)执行次数不定
【解析】本题重点考察for语句的循环次数,for(x=0,y=0;
(y!
=99&
4);
x++),y!
4即循环条件当y不等于99以及x<
4时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4次,B选项正确。
23.有以下程序
{inta=-2,b=0;
while(a++&
++b);
%d,%d\n"
a,b);
程序运行后输出结果是
A)0,2
B)0,3
C)1,3
D)1,2
【解析】本题重点考察while语句,变量a和b分别赋初值为-2和1,while语句的语义是:
计算表达式的值,当值为真(非0)时,执行循环体语句。
a++即a参与运算后,a的值再自增1。
++b即b自增1后再参与其它运算。
当表达式的值为0时,退出循环,最后输出a和b的值为1和2。
24.if语句的基本形式是:
if(表达式)语句,以下关于"
表达式"
值的叙述中正确的是
A)必须是逻辑值
B)必须是整数值
C)必须是正数
D)可以是任意合法的数值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四章 选择语句 第四 选择 语句