计算机二级C语言模拟题2.docx

上传人:b****8 文档编号:10713610 上传时间:2023-02-22 格式:DOCX 页数:21 大小:24.13KB
下载 相关 举报
计算机二级C语言模拟题2.docx_第1页
第1页 / 共21页
计算机二级C语言模拟题2.docx_第2页
第2页 / 共21页
计算机二级C语言模拟题2.docx_第3页
第3页 / 共21页
计算机二级C语言模拟题2.docx_第4页
第4页 / 共21页
计算机二级C语言模拟题2.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

计算机二级C语言模拟题2.docx

《计算机二级C语言模拟题2.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言模拟题2.docx(21页珍藏版)》请在冰豆网上搜索。

计算机二级C语言模拟题2.docx

计算机二级C语言模拟题2

2018年计算机二级C语言模拟题2

(总分:

100.00,做题时间:

120分钟)

一、选择题

(每题1分,共40分)

(总题数:

40,分数:

40.00)

1.一个栈的初始状态为空。

现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是(    )。

(分数:

1.00)

 A.12345ABCDE

 B.EDCBA54321 √

 C.ABCDE12345

 D.54321EDCBA

解析:

栈按后进先出的原则组织数据,因此入栈最晚的最先出栈,因此本题答案为B)。

2.下列叙述中正确的是(    )。

(分数:

1.00)

 A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

 B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

 C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

 D.循环队列中元素的个数由队头指针和队尾指针共同决定 √

解析:

循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此A)错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此B)与C)错误,故本题答案为D)。

3.在长度为n的有序线性表中进行二分法查找,最坏情况下需要比较的次数是(  )。

(分数:

1.00)

 A.0(n)

 B.0(n²)

 C.

 √

 D.

解析:

当有序线性表为顺序存储时才能用二分法查找。

可以证明的是,对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次,因此本题答案为C)。

4.数据流图中带有箭头的线段表示的是(    )。

(分数:

1.00)

 A.控制流

 B.事件驱动

 C.模块调用

 D.数据流 √

解析:

数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流的名称,因此本题答案为D)。

5.下列叙述中正确的是(    )。

(分数:

1.00)

 A.顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的 √

 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

 C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

 D.链式存储结构比顺序存储结构节省存储空间

解析:

链式存储结构既可以针对线性结构也可以针对非线性结构,因此B)与C)错误。

链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,因此D)错误。

本题答案为A)。

6.在软件开发中,需求分析阶段可以使用的工具是(  )。

(分数:

1.00)

 A.N-S图

 B.DFD图 √

 C.PAD图

 D.程序流程图

解析:

在需求分析阶段可以使用的工具有数据流图(DFD图),数据字典(DD),判定树与判定表,因此本题答案为B)。

7.一间宿舍可住多名学生,则实体宿舍和学生之间的联系是(  )。

(分数:

1.00)

 A.一对一

 B.一对多 √

 C.多对一

 D.多对多

解析:

因为一间宿舍可以住多名学生即多名学生住在一间宿舍中,但一名学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系,因此本题答案为B)。

8.在面向对象方法中,不属于“对象”基本特点的是(  )。

(分数:

1.00)

 A.一致性 √

 B.分类性

 C.多态性

 D.标识唯一性

解析:

在面向对象方法中,对象的基本特点包括:

标识唯一性、分类性、多态性、封装性、模块独立性好。

一致性不属于对象的基本特点,因此本题答案为A)。

9.在数据管理技术发展的三个阶段中,数据共享最好的是(    )。

(分数:

1.00)

 A.人工管理阶段

 B.文件系统阶段

 C.数据库系统阶段 √

 D.三个阶段相同

解析:

数据管理技术发展至今经历了三个阶段:

人工管理阶段、文件系统阶段和数据库系统阶段。

其中最后一个阶段结构简单,逻辑性强物理性少,使用方便,在各方面的表现都最好,一直占据数据库领域的主导地位,因此本题答案为C)。

10.有三个关系R、S和T如下:

由关系R和S通过运算得到关系T,则所使用的运算为(  )。

  

(分数:

1.00)

 A.笛卡尔积 √

 B.交

 C.并

 D.自然连接

解析:

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据关系T中的有序组可知关系R与S进行的是自然连接操作,故本题答案为D)。

11.以下叙述中错误的是(  )。

 

(分数:

1.00)

 A.使用三种基本结构构成的程序只能解决简单问题 √

 B.结构化程序由顺序、分支、循环三种基本结构组成

 C.C语言是一种结构化程序设计语言

 D.结构化程序设计提倡模块化的设计方法

解析:

使用顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,因此A)选项错误。

12.以下四个程序中,完全正确的是(   )。

 

(分数:

1.00)

 A.

 B.

 √

 C.

 D.

解析:

A)选项中,“mainO”函数后面不能加分号。

C语言中注释语句的注释方法是:

/*注释内容*/或//注释一行,且“/*”和“*/”不能嵌套使用,因此C)错误。

D)选项中预编译命令“include”前缺少“#”号。

因此选择B)。

13.C源程序中不能表示的数制是(  )。

(分数:

1.00)

 A.十进制

 B.八进制

 C.二进制 √

 D.十六进制

解析:

在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,因此选择C)。

14.以下选项中,能用作用户标识符的是(  )。

(分数:

1.00)

 A._0_ √

 B.8_8

 C.void

 D.unsigned

解析:

C语言中标识符由字母、下画线或数字组成,且开头必须是字母或下画线。

另外,关键字不能作为标识符。

B)选项中以数字8开头,所以错误。

C)与D)中用的是关键字void与unsigned,因此错误。

故本题答案为A)。

15.若有定义语句“intx=10;”,则表达式“x-=x+x”的值为(  )。

 

(分数:

1.00)

 A.10

 B.-20

 C.0

 D.-10 √

解析:

算术运算符“+”的优先级高于"-=",且"-="的结合方向为自右向左,因此表达式“x-=x+x”可以表不成“x=x-(x+x)=10-(10+10)=-10”,所以选择D)。

16.有以下程序

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

(分数:

1.00)

 A.1,2 √

 B.1,0

 C.3,2

 D.0,0

解析:

首先打印“b=a+b=l+0=l”的值1,此时已给b赋值为1。

然后打印“a=2*b=2*l=2”的值2。

因此结果是“1,2”。

17.有以下程序

若想通过键盘输入,使得al的值为12,a2的值为34,cl的值为字符a,c2的值为字符b,程序输出结果是12,a,34,b则正确的输入格式是(    )(□代表空格字符)。

(分数:

1.00)

 A.12口a口34口b

 B.12a34b √

 C.12,a,34,b

 D.12口a34口b

解析:

在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。

因此应按选项B)的顺序输人数据。

18.若变量已正确定义,在“if(w)printf("%d\n",k);”中,以下不可替代w的是(  )。

(分数:

1.00)

 A.a==b+c

 B.ch=getchar()

 C.a<>b+c √

 D.a++

解析:

选项C)是非法的表达式,C语言中没有“<>”运算符。

19.有以下程序

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

(分数:

1.00)

 A.a=10b=50c=10 √

 B.a=10b=50c=30

 C.a=10b=30c=10

 D.a=50b=30c=50

解析:

本题中a>b的条件不满足,因此不执行逗号表达式“a=b,b=C;”的操作,而是执行“c=a”的操作,即c的值为10。

故本题答案为A)。

20.下列叙述中正确的是(    )。

(分数:

1.00)

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

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

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

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

解析:

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

故本题答案为A)。

21.以下不构成无限循环的语句或语句组是(    )。

(分数:

1.00)

 A.

 B.

 √

 C.

 D.

解析:

选项B)中do后面的语句只执行了一次便结束了循环;A)选项中条件while(l)永远成立,因此是死循环;C)选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D)选项中for语句第二个表达式为空,因此没有判定条件,进入死循环。

因此本题答案为B)。

22.有以下程序

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

(分数:

1.00)

 A.3 √

 B.5

 C.7

 D.9

解析:

向switch语句块传送参数后,编译器会先寻找匹配的case语句块,找到后就执行该语句块,遇到break跳出;如果没有匹配的语句块,则执行default语句块。

case与default没有顺序之分。

因此第一次循环k的值为1,执行c+=k,c的值为1,再执行case2后的语句C++,c的值为2,遇到break语句跳出循环;第二次循环k的值为2,执行case2后面的语句C++,c的值为3,跳出循环。

故本题答案为A)。

23.有以下程序

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

(分数:

1.00)

 A.8

 B.10

 C.9 √

 D.7

解析:

调用“f(a,b)”函数返回3,调用“f(a,c)”函数返回6,因此外层调用“f(f(a,b),f(a,c));”,即调用“f(3,6)”函数返回9,故本题答案为C)。

24.若有定义语句“doublex,y,*px,*py;”,执行了“px=&x;py=&y;”之后,正确的输入语句是(  )。

 

(分数:

1.00)

 A.scanf("%lf%le",px,py); √

 B.scanf("%f%f"&x,&y);

 C.scan("%f%f",x,y);

 D.scanf("%lf%lf",x,y);

解析:

因为x、y都是double型数据,所以输入时的格式字符应为%fl,所以B)与C)错误。

D)选项中“scanf("%lf%lf",x,y);”应为“scanf("%lf%lf",&x,&y);”。

故本题答案为A)。

25.若有定义语句“doublea,*p=&a;”,以下叙述中错误的是(  )。

 

(分数:

1.00)

 A.定义语句中,*p=&a提把变量a的地址作为初值赋给指针变量P

 B.定义语句中的*号是一个说明符

 C.定义语句中的P只能存放double类型变量的地址

 D.定义语句中的*号是一个间址运算符 √

解析:

在变量定义“doublea,*P=&a;”中,*号是一个指针运算符,而非间址运算符,因此D)错误。

26.以下定义数组的语句中错误的是(  )。

 

(分数:

1.00)

 A.intnum[]={1,2,3,4,5,6};

 B.intnum[][3]={{1,2},3,4,5,6};

 C.intnum[2][4]={{1,2},{3,4},{5,6}}; √

 D.intnum[][4]={l,2,3,4,5,6};

解析:

C)选项中定义的数组为2行4列,而赋值时赋成了3行,因此出错。

27.有以下程序

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

(分数:

1.00)

 A.1,2,3,4,5,6,7,8,9,0, √

 B.2,1,4,3,6,5,8,7,0,9,

 C.0,9,8,7,6,5,4,3,2,1,

 D.0,1,2,3,4,5,6,7,8,9,

解析:

函数调用中发生的数据传递是单向的,即只能把实参的值传递给形参,而不能把形参的值反向地传递给实参。

因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组c中的元素的值并没有变化,故选择A)。

28.有以下程序

当执行上述程序段,从键盘上输入555667777123后,y的值为(    )。

(分数:

1.00)

 A.566.0 √

 B.55566.0

 C.7777.0

 D.566777.0

解析:

本题考査的是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其中的格式命令可以说明最大域宽。

在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。

因此j的值为55,y的值为566.0,字符数组name的值为7777123。

故本题答案为A)。

29.有以下程序

若运行时输入:

246<回车>,则输出结果为(    )。

(分数:

1.00)

 A.200

 B.204 √

 C.240

 D.246

解析:

本题中输入的3个数据2、4、6分别赋给了x[0][0]、x[l][0]和x[2][0]。

x[0][l]仍为初始时的0,因此打印输出时的结果为B)选项。

30.下列语句组中,正确的是(    )。

(分数:

1.00)

 A.char*s;s=”Olympic"; √

 B.chars[7];s=”Olympic”;

 C.char*s;s={”Olympic”};

 D.chars[7];s={”Olympic”};

解析:

字符型指针变量可以用选项A)的赋值方法“char*S;S=”Olympic”;”,选项C)的写法“char*s,s={"Olympic"};”是错误的。

字符数组可以在定义的时候初始化“chars[]={"Olympic"};”或者“CharS[]="Olympic";”都是正确的,但是不可以在定义字符数组后,对数组名赋值(数组名是常量,代表数组首地址)。

所以选项B)和选项D)都是错误的。

对于本例,选项B)、D)中字符数组s的大小至少为8,才能存放下字符串(字符串的末尾都有结束标志'\0')。

31.有以下程序(字符a的ASCII码值为97)

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

(分数:

1.00)

 A.abc

 B.789

 C.7890 √

 D.979899

解析:

因为小写字符a、h、c的ASCII码的值分别为97、98、99,而在“do...while”循环语句中,每次对字符的ASCII码的值取余数并输出,所以分别输出7、8、9,选项B)正确。

32.有以下函数

该函数的功能是(    )。

(分数:

1.00)

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

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

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

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

解析:

首先“char*s”接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针“char*t,While(*t++)”不断循环,直到*t为'\0',再将t-1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址即字符串的首地址,所以“return(t-S)”便是返回字符数组中字符串的长度p故本题答案为C)。

33.设有如下函数定义

若执行调用语句”n=fum(3);”,则函数fun总共被调用的次数是(    )。

(分数:

1.00)

 A.3 √

 B.2

 C.4

 D.5

解析:

首先调用“n=fun(3)”,3被当作参数传递进去,进行了第一次调用,3被当作参数传进去后,程序会执行语句“elsereturnfun(k-1)+1”进行第二次调用,参数是3-1也就是2,2被当作参数传进去后,程序会执行语句“elsereturnfun(k-1)+1”进行第三次调用,参数是2-1也就是1,1被当作参数传进去后,程序会执行语句“elseif(k==l)return1”不再递归调用,因此最终结果为3次,选项A)正确。

34.有以下程序

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

(分数:

1.00)

 A.9 √

 B.8

 C.7

 D.10

解析:

题目中定义的静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。

因此第一次调用函数执行“n+=a++”时,a先与n相加再进行自增运算。

n的值为4,a的值为2,且a变量执行完后空间没有释放。

再执行“s=s+f(A)”时,s的值为4,调用f(A)函数时,n的返回值为“n=3+2=5”,此时a的值为3,所以s的值为9,选项A)正确。

35.设有定义:

则以下赋值语句中错误的是(    )。

 

(分数:

1.00)

 A.data2.real=datal.unreal;

 B.data2=datal;

 C.data2.real=datal.real;

 D.data2=(2,6); √

解析:

选项中可以在声明变量的同时为data2赋值,但是“data2=(2,6)”应写作“data2={2,6}”,因此选择D)。

36.有以下程序

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

(分数:

1.00)

 A.Zhao,m,85,90,Qian,f,95,92 √

 B.Zhao,m,85,90,Zhao,m,85,90

 C.Qian,f,95,92,Qian,f,95,92

 D.Qian,f,95,92,Zhao,m,85,90

解析:

本题考査的是函数调用时的参数传递问题。

程序在调用函数时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f做的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。

因此本题答案为A)。

37.有以下程序

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

(分数:

1.00)

 A.10,9,8,7,6,5,4,3,2,1,

 B.1,2,3,4,5,6,7,8,9,10, √

 C.2,3,1,6,8,7,5,4,10,9,

 D.10,9,8,7,6,1,2,3,4,5,

解析:

本题的子函数f的功能是对结构体变量s中第二个成员数组中所有的数据进行从小到大的冒泡排序,因此结果是B)。

38.以下关于宏的叙述中正确的是(    )。

(分数:

1.00)

 A.宏替换没有数据类型限制 √

 B.宏定义必须位于源程序中所有语句之前

 C.宏名必须用大写字母表示

 D.宏调用比函数调用耗费时间

解析:

宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此B)选项中宏定义必须位于源程序中所有语句之前是错误的。

宏名一般用大写,但不是必须用大写,因此C)选项错误。

宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此D)选项错误。

39.设有以下语句

执行后,C的值为(    )。

(分数:

1.00)

 A.8

 B.7

 C.9 √

 D.6

解析:

b为2,以二进制表示为00000010,执行左移两位操作后为00001000,然后与a00000001做异或操作,结果为00001001,即十进制的9,因此C)选项正确。

40.有以下程序

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

 

(分数:

1.00)

 A.123 √

 B.12300

 C.1

 D.321

解析:

程序首先将数组a[10]中的元素1、2、3分别写人了文件dl.dat文件中,然后又将dl.dat文件中的数据123,整体写人了变量n的空间中,因此打印n时输出的数据为123,选项A)正确。

二、程序填空题

(总题数:

1,分数:

20.00)

(分数:

20)

(1).

(分数:

6)

填空项1:

__________________ (正确答案:

1.0)

解析:

在这里要给f赋初值,由计算表达式可知此空应该填1.0。

(2).

(分数:

7)

填空项1:

__________________ (正确答案:

-1)

解析:

在计算的过程中正负号是交错的,因而此空填写-1。

(3).

(分数:

7)

填空项1:

__________________ (正确答案:

t)

解析:

本题考查了复合赋值运算,由本题求表达式f(x)的值可知此空应该填写t。

三、程序改错题

(总题数:

1,分数:

20.00)

给定程序MODⅠ1.C中函数fun的功能是:

从3个红球、5个白球、6个黑球中任意取出8个作为一组输出。

在每组中,可以没有黑球,但必须要有红球和白球。

组合数作为函数值返回。

正确的组合数应该是15。

程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

 

(分数:

20)

(1).

(分数:

10)

__________________________________________________________________________________________

正确答案:

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

解析:

红球数i的总数为3,因为组合中必须有红球,所以i的值不能为0。

 

(2).

(分数:

10)

__________________________________________________________________________________________

正确答案:

(if(k>=0&&k<=6))

解析:

该if语句用来限定组合中黑球的数量,黑球的总数为6,且组合中可以没有黑球,因此判断条件应为k>=0&&k<=6。

四、程序设计题

(总题数:

1,分数:

20.00)

(分数:

20.00)

__________________________________________________________________________________________

正确答案:

解析:

在程序中输入n后,以前n项的阶乘作为分母递加,由于t是浮点型数据,所以写为复合赋值语句s+=1.0/t;。

for循环的作用是每一次循环将1.0/t与sn相加,并将值存入sn中。

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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