首页 > 全部 > 二级C语言 > 二级C语言选择题专项强化真题试卷31

二级C语言选择题专项强化真题试卷31

本单篇文档共7523字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 真题试卷 4942人下载
价格: 1.20 原价:¥9.60
收藏

二级C语言选择题专项强化真题试卷31

选择题

1.下列排序方法中,最坏情况下比较次数最少的是( )。(D)

A. 冒泡排序

B. 简单选择排序

C. 直接插入排序

D. 堆排序

解析:冒泡排序,简单选择排序,直接插入排序在最坏情况下的比较次数都是O(n2),而堆排序的时间复杂度为O(nlog2n)。

2.设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )。

C

解析:字符串的输入有两种方式:①scanf()函数;②get()函数。C项中,s代表输入一个字符数组而非地址,而且遇到空格时会默认字符串输入结束,所以不能读入带有空格的字符串。

3.下列与队列结构有关联的是( )。(D)

A. 函数的递归调用

B. 数组元素的引用

C. 多重循环的执行

D. 先到先服务的作业调度

解析:队列的修改是依“先进先出”的原则进行的,故D选项正确。

4.若有以下语句:

int n;float f=1 3.8;

则执行n=(int)f%3;后,n的值是( )。(A)

A. 1

B. 4

C. 4.333333

D. 4.6

解析:(int)f表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为1。

5.有以下程序:

#include<stdio.h>

typedef struct{int b,p;}A;

void f(A c)/*注意:c是结构变量名*/

{ int j;

c.b+=1;c.p+=2;

}

main()

{

int i;

A a={1,2};f(a);

printf(\\(B)

A. 2 4

B. 1 2

C. 1 4

D. 2 3

解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为12,答案选B。

6.设循环队列为Q(1:m),其初始状态为fronront=rear=m。经过一系列入队与退队为front=rear=m。经过一系列入队与退队运算后,front=15,rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为( )。(A)

A. 4

B. 6

C. m—5

D. m—6

解析:初始状态为front=rear=m,说明初始状态为空。经过一系列入队与退队运算后,front=15,rear=20,则当前共有5个元素,在最坏情况下,需要比较的次数为4次,答案选A。

7.若有以下程序:

#include<stdio.h>

char fun(char x)

{return x*x+’a’;)

main()

{

char a,b=0;

for(a=0;a<4;a+=1)

{b=fun(a);putchar(b);}

printf(\\(C)

A. abcd

B. ABEJ

C. abej

D. ABCD

解析:该题首先初始化变量a和b,通过for循环语句使得a取值为0、1、2、3,fun函数的功能是将a*a+’a’的值返回给b,即b为a、b、e、j。最后通过字符输出函数putchar()将b输出。故C选项正确。

8.以下叙述错误的是( )。(B)

A. 一个算法所包含的操作步骤应该是有限的

B. 任何能通过编译和运行的算法都一定能得到所期望的结果

C. 算法中每一条指令必须有确切的含义

D. 算法可以用各种描述方法来进行描述

解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知A,C,D选项正确。C语言中,通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。答案为B选项。

9.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是( )。(D)

A. 必须是逻辑值

B. 必须是整数值

C. 必须是正数

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

解析:if语句中的表达式可以是任意合法的数值,如常量、变量表达式。所以D选项正确。

10.有以下程序:

#include

main()

{ int i,j,m=1;

for(i=1;i<3;i++)

{for(j:3;j>0;j- -)

{if(i*j>3)break;

m *=i*j;

}

}

printf(\\(C)

A. m=4

B. m=2

C. m=6

D. m=5

解析:第一次外循环i的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j,即m的值为3;第二次j的值为2,不满足条件执行m*=i*j,即m的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。

11.有以下程序:

#include

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0:a++;break;

case 1:b++;break;

}

case 2:a++;b++;break;

case 3:a++;b++;

}

printf(\\(B)

A. a=2,b=2

B. a=2,b=1

C. a=1,b=1

D. a=1,b=0

解析:case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case 2语句的a++;b++;则a为2,b为1。所以结果为B)。

12.有以下程序:

#include

fun(int x,int y)

{static int m=0,i=2;

i+=m+1;m=i+x+y;retum m;

}

main()

{int j=1,m=1,k;

k

本文档预览:3600字符,共7523字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
二级C语言选择题专项强化真题试卷31

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号