二级C语言110.docx

上传人:b****3 文档编号:4011177 上传时间:2022-11-27 格式:DOCX 页数:16 大小:23.75KB
下载 相关 举报
二级C语言110.docx_第1页
第1页 / 共16页
二级C语言110.docx_第2页
第2页 / 共16页
二级C语言110.docx_第3页
第3页 / 共16页
二级C语言110.docx_第4页
第4页 / 共16页
二级C语言110.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

二级C语言110.docx

《二级C语言110.docx》由会员分享,可在线阅读,更多相关《二级C语言110.docx(16页珍藏版)》请在冰豆网上搜索。

二级C语言110.docx

二级C语言110

二级C语言-110

(总分:

100.00,做题时间:

90分钟)

一、选择题(总题数:

41,分数:

100.00)

1.以下选项中,当x为大于1的奇数时,值为0的表达式是______。

(分数:

1.00)

 A.x%2==0 √

 B.x/2

 C.x%2!

=0

 D.x%2==1

解析:

[解析]算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。

B选项的值为不定值,但绝对不是0。

C选项的值为真,即1。

D选项的值为真,即1。

2.以下叙述中正确的是______。

(分数:

2.00)

 A.在C语言中,逻辑真值和假值分别对应1和0

 B.关系运算符两边的运算对象可以是C语言中任意合法的表达式 √

 C.对于浮点变量x和y,表达式:

x==y是非法的,会出编译错误

 D.分支结构是根据算术表达式的结果来判断流程走向的

解析:

[解析]A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:

x==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。

因此B选项正确。

3.若变量已正确定义,以下选项中非法的表达式是______。

(分数:

2.00)

 A.a!

=4||"b"

 B."a"=1/2*(x=y=20,x*3) √

 C."a"%4

 D."A"+32

解析:

[解析]A选项中"a"即表示a为字符常量,再给"a"赋值1/2*(x=y=20,x*3),是不正确的。

因此B选项正确。

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)的值是______。

(分数:

2.50)

 A.1 √

 B.0

 C.2

 D.不知道a的值,不能确定

解析:

[解析]逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真,虽然不知道a的值,但是若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。

6.当变量c的值不为2、4、6时,值也为“真”的表达式是______。

(分数:

2.50)

 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) √

解析:

[解析]逻辑或运算符中只要有一个运算量为真结果就是真,当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("%d,%d,%d/n",a,b,c);

elseprintf("%d,%d,%d/n",a,b,c);

}

程序运行后的输出结果是______。

(分数:

2.50)

 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.若有以下程序:

#include<stdio.h>

main()

{inta=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);

}

则程序的输出结果是______。

(分数:

2.50)

 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.若有以下程序:

#include<stdio.h>

main()

{inta=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);

}

则程序的输出结果是______。

(分数:

2.50)

 A.2,2,2,4

 B.2,1,2,-1

 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.以下关于逻辑运算符两侧运算对象的叙述中正确的是______。

(分数:

2.50)

 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)

为真时所要表达的是______。

(分数:

2.50)

 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语言表达式的是______。

(分数:

2.50)

 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(表达式)语句,以下关于“表达式”值的叙述中正确的是______。

(分数:

2.50)

 A.必须是逻辑值

 B.必须是整数值

 C.必须是正数

 D.可以是任意合法的数值 √

解析:

[解析]if语句中的表达式可以是任意合法的数值,如常量,变量表达式。

所以D选项正确。

14.有以下计算公式:

若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是______。

(分数:

2.50)

 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);if(x<0)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.下列条件语句中,输出结果与其他语句不同的是______。

(分数:

2.50)

 A.if(a!

=0)printf("%d/n",x);elseprintf("%d/n",y);

 B.if(a==0)printf("%d/n",y);elseprintf("%d/n",x);

 C.if(a==0)printf("%d/n",x);elseprintf("%d/n",y); √

 D.if(a)printf("%d/n",x);elseprintf("%d/n",y);

解析:

[解析]A、B、D选项的含义均为a的值如果为0时打印y的值,否则打印x的值。

但是C选项的含义是:

a的值为0时打印x的值,不为0时打印y的值,与其他选项正好相反。

16.若有以下程序:

#include<stdio.h>

main()

{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;

else;if(d==4)r+=4;

printf("%d/n",r);

}

则程序的输出结果是______。

(分数:

2.50)

 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.若有以下程序:

#include<stdio.h>

main()

{inta=1,b=2,c=3,d=4,r=0;

if(a!

=1);elser=1;

if(b==2)r+=2;

if(c!

=3);r+=3;

if(d==4)r+=4;

printf("%d/n",r);

}

则程序的输出结果是______。

(分数:

2.50)

 A.3

 B.7

 C.6

 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.以下叙述中正确的是______。

(分数:

2.50)

 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.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{ease0:

a++;break;

case1:

b++;break;

}

ease2:

a++:

b++:

break;

case3:

a++;b++;

printf("a=%d,b=%d/n",a,b);

}

程序的运行结果是______。

(分数:

2.50)

 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.有以下程序段:

#include<stdio.h>

inti,n;

for(i=0;i<8;i++)

{n=rand()%5;

switch(n)

{case1:

case3:

printf("%d/n",n);break;

case2:

case4:

printf("%d/n",n);continue;

case0:

exit(0);

}

printf("%d/n",n);

}

以下关于程序段执行情况的叙述,正确的是______。

(分数:

2.50)

 A.for循环语句固定执行8次

 B.当产生的随机数n为4时结束循环操作

 C.当产生的随机数n为1和2时不做任何操作

 D.当产生的随机数n为0时结束程序运行 √

解析:

[解析]case常量表达式只是起语句标号作用,并不是在该处进行条件判断。

在执行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语句是______。

(分数:

2.50)

 A.switch(a+b){case1:

printf("*/n");case2+1:

printf("**/n");} √

 B.switch((int)x);{case1:

printf("*/n");case2:

printf("**/n");}

 C.switch(x){case1.0:

printf("*/n");case2.0:

printf("**/n");}

 D.switch(a+b){case1:

printf("*/n");casec:

printf("**/n");}

解析:

[解析]B选项中switch((int)x);语句不应该有最后的分号。

switch(expr1),中的expr1不能用浮点类型或long类型,也不能为—个字符串,所以C错误。

case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。

22.有以下程序:

#include<stdio.h>

main()

{inta[]={2,3,5,4},i;

for(i=0;i<4;i++)

switch(i%2)

{case0:

switch(a[i]%2)

{case0:

a[i]++;break;

case1:

a[i]--;

}break;

case1:

a[i]=0;

}

for(i=0:

i<4;i++)printf("%d",a[i]);printf("/n");

}

程序运行后的输出结果是______。

(分数:

2.50)

 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[i]=0;所以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.下列叙述中正确的是______。

(分数:

2.50)

 A.在switch语句中,不一定使用break语句 √

 B.在switch语句中必须使用default

 C.break语句必须与switch语句中的case配对使用

 D.break语句只能用于switch语句

解析:

[解析]default语句在switch语句中可以省略,所以B错误;switch语句中并非每个case后都需要使用break语句,所以C错误;break语句还可以用于for等循环结构中,所以D错误。

24.有以下程序:

#include<stdio.h>

main()

{inty=10;

while(y--);printf("y=%d/n",y);

}

程序执行后的输出结果是______。

(分数:

2.50)

 A.y=0

 B.y=-1 √

 C.y=1

 D.while构成无限循研

解析:

[解析]执行y--直到值为0,由于y--是先用再减,所以退出循环时,y的值为-1。

25.有以下程序:

#include<stdio.h>

main()

{intk=5;

while(--k)printf("%d",k-=3);

printf("/n");

}

执行后的输出结果是______。

(分数:

2.50)

 A.1 √

 B.2

 C.4

 D.死循环

解析:

[解析]--k先自减再使用,所以第一次判断条件即为while(4),条件为真,打印k的值,k=4-3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。

所以选择A选项。

26.关于“while(条件表达式)循环体”,以下叙述正确的是______。

(分数:

2.50)

 A.循环体的执行次数总是比条件表达式的执行次数多一次

 B.条件表达式的执行次数总是比循环体的执行次数多一次 √

 C.条件表达式的执行次数与循环体的执行次数一样

 D.条件表达式的执行次数与循环体的执行次数无关

解析:

[解析]while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,再执行,直到最后一次判断条件后不成立,跣出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。

27.有以下函数:

intfun(char*s)

{char*t=s;

while(*t++);

return(t-s);

}

该函数的功能是______。

(分数:

2.50)

 A.计算s所指字符串的长度 √

 B.比较两个字符串的大小

 C.计算s所指字符串占用内存字节的个数

 D.将s所指字符串复制到字符串t中

解析:

[解析]首先char*s接受一个字符型数组的首地址,并将这个首地址赋给另—个字符型指针char*t,while(*t++)不断循环直到*t为“/0”,再将t-1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址,即字符串的首地址,所以return(t-s)便是返回字符数组中字符串的长度。

28.有以下程序:

#include<stdio.h>

main()

{inta=7;

while(a--);

printf("%d/n",a);

}

程序运行后的输出结果是______。

(分数:

2.50)

 A.0

 B.-1 √

 C.1

 D.7

解析:

[解析]a--的含义是先使用后减1,所以当a的值为0时,跳出循环,但是仍要执行a--,a的值变为-1。

29.有以下函数:

intaaa(char*s)

{char*t=s;

while(*t++);

t--;

return(t-s);

}

以下关于aaa函数功能叙述正确的是______。

(分数:

2.50)

 A.将串s复制到串t

 B.比较两个串的大小

 C.求字符串s的长度 √

 D.求字符串s所占字节数

解析:

[解析]本题重点考查的知识点while循环语句的应用。

aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。

当t指向结束标识处时,由于后缀++运算符的原因,它还会被再递增1,所以接下来的t--;语句让它回到结束标识处。

最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。

因此C选项正确。

30.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。

(分数:

2.50)

 A.(E>0||E<0)

 B.(E==0) √

 C.(!

E==0)

 D.(E!

=0)

解析:

[解析]while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,因此选择B选项。

31.有以下程序:

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<="9"&&*s>="0"){n=10*n+*s-"0";s++;}

return(n);

}

main()

{chars[10]={"6","1","*","4","*","9","*","0","*"};

printf("%d/n",fun(s));

}

程序的运行结果是______。

(分数:

2.50)

 A.5

 B.9

 C.61 √

 D.61490

解析:

[解析]在fun函数中,while循环的功能是:

逐个取字符数组s中的字符,并判断其是否是数字。

若是则将其作为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1