二级C语言110Word文档格式.docx
- 文档编号:16927239
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:23.75KB
二级C语言110Word文档格式.docx
《二级C语言110Word文档格式.docx》由会员分享,可在线阅读,更多相关《二级C语言110Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
+32
[解析]A选项中"
即表示a为字符常量,再给"
赋值1/2*(x=y=20,x*3),是不正确的。
4.与数学表达式x≥y≥z对应的C语言表达式是______。
2.50)
A.(x>=y)||(y>
=x)
B.(x>=y>=z)
C.(x>=y)!
(y>=z)
D.(x>=y)&
&
(y>=z)
[解析]本题考查关系表达式和逻辑表达式。
y大于等于x同时y小于等于z,因此x<=y和y<=z是逻辑与的关系。
因此D选项正确。
5.若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是______。
A.1
B.0
C.2
D.不知道a的值,不能确定
[解析]逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真,虽然不知道a的值,但是若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
6.当变量c的值不为2、4、6时,值也为“真”的表达式是______。
A.(c>=2&
c<=6)&
(c%2!
=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&
!
(c%2)
D.(c>=2&
c<=6)||(c!
=3)||(c!
=5)
[解析]逻辑或运算符中只要有一个运算量为真结果就是真,当c>=2&
c<=6条件不成立时c的值肯定不是2、3、4、5、6,所以c!
=3,与c!
=5均成立。
所以D选项的结果一定为真。
7.有以下程序:
#include<stdio.h>
main()
{inta=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);
elseprintf("
}
程序运行后的输出结果是______。
A.1,3,2
B.1,3,3
C.1,2,3
D.3,2,1
[解析]在if语句中,else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运箅对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,进入第二个if语句条件判断,因为b!
=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c--!
=3)c的值不变,也不再执行第一个else语句。
打印a的值1,b的值3,c的值3。
8.若有以下程序:
{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。
9.若有以下程序:
{inta=1,b=2,c=3,d=4;
if((a=2)&
(b=1))c=2;
if((c==3)||(d=-1))a=5;
A.2,2,2,4
C.5,1,2,-1
D.1,2,3,4
[解析]第一个if语句的判断条件是逻辑与表达式,只有运算对象均非零结果才为真,执行第一个if判断条件,均为赋值表达式,第一个运算对象a=2非零,判断第二个表达式b=1也非零,所以条件成立执行c=2的赋值操作。
执行第二个if判断条件中的逻辑或表达式,只要有一个对象非零结果就是真,本条件中c==3运算对象为假,所以需要判断第二个运算对象d=-1,结果为非零,所以条件成立,执行a=5,的操作,所以a值为5,b值为1,c值为2,d值为-1。
10.以下关于逻辑运算符两侧运算对象的叙述中正确的是______。
A.可以是任意合法的表达式
B.只能是整数0或非0整数
C.可以是结构体类型的数据
D.只能是整数0或1
[解析]C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A。
11.设有宏定义:
#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正确。
12.表示关系式x≤y≤z的C语言表达式的是______。
A.(x<=y)&
(y<=x)
B.(x<=y)||(y<=x)
C.(x<=y<=z)
D.x<=y)!
(y<=x)
[解析]本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<=y和y<=z是逻辑与的关系。
因此A选项正确。
13.if语句的基本形式是:
if(表达式)语句,以下关于“表达式”值的叙述中正确的是______。
A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
[解析]if语句中的表达式可以是任意合法的数值,如常量,变量表达式。
所以D选项正确。
14.有以下计算公式:
若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是______。
A.if(x>=0)y=sqrt(x);
if(x<0)y=sqrt(-x);
B.if(x>=0)y=sqrt(x);
elsey=sqrt(-x);
C.y=sqrt(x);
D.y=sqrt(x>=0?
x:
-x);
[解析]公式的要求是无论x大于等于0还是小于0,y的值都为x绝对值的开方。
选项C中如果x值小于0,则y=sqrt(x)就要出错。
本题重点考察的知识点是:
sqrt()函数。
sqrt()函数的作用是开方计算,要求输入的参数x必须大于等于0。
选项C一开始调用了sqrt(x)而没有判断x的正负,所以是错误的。
15.下列条件语句中,输出结果与其他语句不同的是______。
A.if(a!
=0)printf("
%d/n"
x);
elseprintf("
y);
B.if(a==0)printf("
y);
x);
C.if(a==0)printf("
D.if(a)printf("
elseprintf("
[解析]A、B、D选项的含义均为a的值如果为0时打印y的值,否则打印x的值。
但是C选项的含义是:
a的值为0时打印x的值,不为0时打印y的值,与其他选项正好相反。
16.若有以下程序:
{inta=1,b=2,c=3,d=4,r=0;
if(a!
=1);
elser=1;
if(b==2)r+=2;
else;
if(c!
=3)r+=3;
if(d==4)r+=4;
r);
A.10
B.7
C.6
D.3
[解析]else总是和与之最近的if配对,执行第一个if,判断条件不成立,执行elser=1;
语句。
再执行第二个if语句中的判断条件,成立,左移执行r+=2,r的值为3,再执行第三个if的判断条件,不成立,执行第7行else后面的空语句“;
”。
再执行第四个if的判断条件d==4成立,执行r+=4,r的值为7。
然后打印输出。
17.若有以下程序:
{inta=1,b=2,c=3,d=4,r=0;
if(a!
if(b==2)r+=2;
if(c!
=3);
r+=3;
if(d==4)r+=4;
A.3
B.7
D.10
[解析]第一个if语句a!
=1条件为假,所以执行elst后的语句r=1。
第二个if语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!
=3条件为假,所以不做任何操作。
执行下面的r+=3操作,r的值变为6。
判断第四个if条件,d==4条件成立,执行r+=4操作,结果为10。
18.以下叙述中正确的是______。
A.对于逻辑表达式:
a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变
B.对于逻辑表达式:
a++&
b++,设a的值为0,则求解表达式的值后,b的值会发生改变
C.else不是一条独立的语句,它只是if语句的一部分
D.关系运算符的结果有三种:
0,1,-1
[解析]B选项和A选项中,&
、||都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。
而且&
、||的优先级比++高,所以题中只需判断a的值即可知道符号表达式的真假;
D选项中,关系运算符的结果有“真”和“假”两种。
因此C选项正确。
19.有以下程序:
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{ease0:
a++;
break;
case1:
b++;
ease2:
a++:
b++:
case3:
a=%d,b=%d/n"
a,b);
程序的运行结果是______。
A.a=2,b=2
B.a=2,b=1
C.a=1,b=1
D.a=1,b=0
[解析]case常量表达式只是起语句标号作用,并不是在该处进行条件判断。
在执行switch语句时,根据switch的表达式,找到与之匹配的ease语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。
所以执行内层switch(y)时只执行了a++,此时a的值为1。
然后执行外层case2语句的a++;
b++;
a为2,b为1。
所以结果为B。
20.有以下程序段:
inti,n;
for(i=0;
i<8;
i++)
{n=rand()%5;
switch(n)
printf("
n);
case2:
case4:
n);
continue;
case0:
exit(0);
以下关于程序段执行情况的叙述,正确的是______。
A.for循环语句固定执行8次
B.当产生的随机数n为4时结束循环操作
C.当产生的随机数n为1和2时不做任何操作
D.当产生的随机数n为0时结束程序运行
在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。
简单的说break是结束整个循环体,而continue是结束单次循环。
B选项中当产生的随机数n为4时要执行打印操作。
C选项中当产生的随机数为1和2时分别执行case3与case4后面语句的内容。
由于存在break语句所以for循环不是固定执行8次,执行次数与产生的随机数n有关系。
21.若有定义:
floatx=1.5;
inta=1,b=3,c=2;
则正确的switch语句是______。
A.switch(a+b){case1:
*/n"
);
case2+1:
**/n"
}
B.switch((int)x);
{case1:
*/n"
**/n"
}
C.switch(x){case1.0:
case2.0:
D.switch(a+b){case1:
casec:
[解析]B选项中switch((int)x);
语句不应该有最后的分号。
switch(expr1),中的expr1不能用浮点类型或long类型,也不能为—个字符串,所以C错误。
case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。
22.有以下程序:
{inta[]={2,3,5,4},i;
i<4;
i++)
switch(i%2)
{case0:
switch(a[i]%2)
{case0:
a[i]++;
break;
a[i]--;
}break;
a[i]=0;
for(i=0:
i++)printf("
%d"
a[i]);
/n"
A.0304
B.2050
C.3344
D.3040
[解析]第一次循环i为0,i%2为0,执行switch(a[0]%2)中的case0语句,a[0]++,a[0]的值变成3;
第二次循环i的值为1,i%2为1,执行case1:
所以a[1]的值变成0;
第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的case1语句,a[2]--,a[2]的值变成4;
第四次循环i的值为3,i%2为1,执行case1:
a[i]=0;
所以a[3]的值变成0。
23.下列叙述中正确的是______。
A.在switch语句中,不一定使用break语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.break语句只能用于switch语句
[解析]default语句在switch语句中可以省略,所以B错误;
switch语句中并非每个case后都需要使用break语句,所以C错误;
break语句还可以用于for等循环结构中,所以D错误。
24.有以下程序:
{inty=10;
while(y--);
y=%d/n"
程序执行后的输出结果是______。
A.y=0
B.y=-1
C.y=1
D.while构成无限循研
[解析]执行y--直到值为0,由于y--是先用再减,所以退出循环时,y的值为-1。
25.有以下程序:
{intk=5;
while(--k)printf("
k-=3);
执行后的输出结果是______。
B.2
C.4
D.死循环
[解析]--k先自减再使用,所以第一次判断条件即为while(4),条件为真,打印k的值,k=4-3,结果为1;
第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。
所以选择A选项。
26.关于“while(条件表达式)循环体”,以下叙述正确的是______。
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关
[解析]while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,再执行,直到最后一次判断条件后不成立,跣出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。
27.有以下函数:
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
该函数的功能是______。
A.计算s所指字符串的长度
B.比较两个字符串的大小
C.计算s所指字符串占用内存字节的个数
D.将s所指字符串复制到字符串t中
[解析]首先char*s接受一个字符型数组的首地址,并将这个首地址赋给另—个字符型指针char*t,while(*t++)不断循环直到*t为“/0”,再将t-1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址,即字符串的首地址,所以return(t-s)便是返回字符数组中字符串的长度。
28.有以下程序:
{inta=7;
while(a--);
a);
A.0
B.-1
C.1
D.7
[解析]a--的含义是先使用后减1,所以当a的值为0时,跳出循环,但是仍要执行a--,a的值变为-1。
29.有以下函数:
intaaa(char*s)
while(*t++);
t--;
以下关于aaa函数功能叙述正确的是______。
A.将串s复制到串t
B.比较两个串的大小
C.求字符串s的长度
D.求字符串s所占字节数
[解析]本题重点考查的知识点while循环语句的应用。
aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。
当t指向结束标识处时,由于后缀++运算符的原因,它还会被再递增1,所以接下来的t--;
语句让它回到结束标识处。
最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。
30.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。
A.(E>0||E<0)
B.(E==0)
C.(!
E==0)
D.(E!
=0)
[解析]while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,因此选择B选项。
31.有以下程序:
intfun(chars[])
{intn=0;
while(*s<="
9"
*s>="
0"
){n=10*n+*s-"
;
s++;
}
return(n);
{chars[10]={"
6"
"
1"
*"
4"
};
fun(s));
A.5
B.9
C.61
D.61490
[解析]在fun函数中,while循环的功能是:
逐个取字符数组s中的字符,并判断其是否是数字。
若是则将其作为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 110