点击查看:2017年12月计算机二级考试C语言考前提分卷汇总
一、选择题(每小题1分,共40分)
1 [单选题] 以下选项中不能在c语言程序中用作用户标识符的是( )。
A.auto
B.scanf
C.Float
D._3_14
参考答案:A
参考解析:
c语言的标识符是由字母、数字和下划线组成,第一个字符不能是数字,只能是字母或下划线;A、B、C、D都是合法的标识符;auto是C语言的关键字,不能用作用户标识符,故选项A错误;scanf是标准库函数名,可以用作用户标识符,只是在使用标识符的地方不能包含stdio.h头文件,故选项B正确;C语言的标识符区分大小写,F1oat与关键字f1oat不同,可以用作用户标识符,故选项C正确;j-14是合法的用户标识符,故选项D正确;因此答案选A。
2 [单选题] 下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计
B.软件设计是将软件需求转换为软件表示的过程
C.数据结构与数据库设计是软件设计的任务之一
D.PAD图是软件详细设计的表示工具
参考答案:A
参考解析:
详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A错误。
3 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.1002,ZhangDa,1202.0
B.1002,ChangRong,1202.0
C.1001,ChangRong,1098.0
D.1001,ZhangDa,1098.0
参考答案:D
参考解析:
本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。
4 [单选题] 下列数据结构中,不能采用顺序存储结构的是( )。
A.非完全二叉树
B.堆
C.队列
D.栈
参考答案:A
参考解析:
根据完全二叉树的性质6,满二叉树和完全二叉树可以按层序进行顺序存储,但一般的二叉树不适用。堆可以用一维数组来存储也可以用完全二叉树来直观地表示堆的结构。队列、栈本身就是顺序存储的。故本题答案为A选项。
5 [单选题] 以下关于C语言的叙述中正确的是( )。
A.C语言的数值常量中夹带空格不影响常量值的正确表示
B.C语言中的变量可以在使用之前的任何位置进行定义
C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D.C语言中的注释不可以夹在变量名或关键字的中间
参考答案:D
参考解析:
C语言的数值常量中不能夹带空格,所以A错误。C语言中的变量都必须先定义再使用,对变量的定义通常放在函数体内的前部,但也可以放在函数外部或复合语句的开头,不能随便放置,所以B错误。在C语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致,所以C错误。
6 [单选题] 若有定义:
float x=1.5;
int a=1,b=3,c=2;
则正确的switch语句是( )。
参考答案:A
参考解析:
switch语句的一般形式为: switch(表达式){
case常量表达式1:语句1;
ease常量表达式2:语句2;
default:语句n;
}
其中switch后的表达式只能是整型或字符型,故C选项错误;ease后面必须是常量表达式,所以D选项错误;switch()右括号后面不能有分号,放选项B错误,因此答案选A。
7 [单选题] 有以下程序:
运行时,若输入123450<回车>,则输出结果是( )。
A.66656
B.6566456
C.66666
D.6666656
参考答案:B
参考解析:
switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句。然后退出。所以输入l时打印65,输入2时打印6,输入3时打印64,输入4时打印5,输入5时打印6。
8 [单选题] 有以下程序:
程序执行后的输出结果是( )。
A.Prphsbn
B.Prohsbn
C.Progsbn
D.Program
参考答案:B
参考解析:
(*q)++是q所指的字符加l,q++就是指针移到下一个字符。因此B选项正确。
9 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.9,18
B.8,11
C.7,11
D.10,14
参考答案:D
参考解析:
第一次循环a的值为1,满足条件,执行b+=a,与a+=2,则b的值变为3,a的值变为3。执行a++,a的值为4,满足条件进入第二次循环,执行完循环体后b的值为7,a的值为6。执行a++,a的值为7,满足条件进入第三次循环,执行完循环体后b的值为14,a的值为9。执行a++.a的值变为10,不满足条件,循环结束。所以选择D选项。
10 [单选题] 定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。
A.-369
B.369
C.0.369
D.整数集合{1,2,3,4,5}
参考答案:B
参考解析:
只有B选项369可以用无符号整数来表示和存储。A选项-369有负号,选项C 0.369是小数都不能用无符号整数类存储。选项D是一个整数集合得用数组来存储。
11 [单选题] 若有定义:
double a=22:int i=0,k=18;
则不符合C语言规定的赋值语句是( )。
A.a:a++,i++;
B.i=(a+k)<=(i+k);
C.i=a%11;
D.i=!a;
参考答案:C
参考解析:
自增、自减操作符适用于char、short、int、long、float、double等类型,故选项A正确;赋值操作符 “=”的优先级小于比较操作符“<=”,所以选项B等价于:i=((a+k)<=(i十k));,即将后面比较操作符的结果赋值给i,故选项B也正确;“!”是逻辑非运算符,i=!a表示将a表达式的值取反,赋值给i,故选项D也正确;求模运算符“%”的操作数只能是整数,故选项C错误,因此答案选C。
12 [单选题] 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。
A.学生成绩管理系统
B.C语言编译程序
C.UNIX操作系统
D.数据库管理系统
参考答案:A
参考解析:
软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、C、D都是系统软件,只有A是应用软件。
13 [单选题] 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。
A.外模式
B.内模式
C.概念模式
D.逻辑模式
参考答案:B
参考解析:
数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。
14 [单选题] 设有语句:printf(“%2d\n”,2010);,则以下叙述正确的是( )。
A.程序运行时输出2010
B.程序运行时输出20
C.程序运行时输出10
D.指定的输出宽度不够,编译出错
参考答案:A
参考解析:
printf()函数格式化字符串的一般形式为:[标志][输出最小宽度][精度][长度]类型。对于”-\n”表示结果以十进制形式输出带符号的整数,数字2表示输出的最小宽度为2,若实际位数多于2,则按实际位数输出,所以程序输出2010,故答案选A。
15 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.2344
B.4332
C.1234
D.1123
参考答案:B
参考解析:
在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。因此B选项正确。
16 [单选题] 有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A.自然连接
B.交
C.投影
D.并
参考答案:A
参考解析:
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中元组可以判断R和S做的是自然连接操作。
17 [单选题] 有以下程序(strcat函数用于连接两个字符串):
程序运行后的输出结果是( )。
A.IJK
B.ABCDE\OFG\OIJK
C.ABCDIJK
D.EFGIJK
参考答案:C
参考解析:
a中包含两个‘\0’,遇到第一个‘\0’时就表示字符串a结束。字符串处理函数strcat(字符数组a,字符数组b),功能是连接两个字符数组中的字符串,把字符串b连接到a的后面,结果放在字符数组a中。连接时将字符串a后的‘\0’取消,只在新串最后保留一个‘\0’。本题相当于将“ABCD”和“UK”连接。因此C选项正确。
18 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.1.6.2,1,
B.8,7,3,1,
C.4,7,5,2,
D.1,6,5,7,
参考答案:D
参考解析:
首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为1、4、…、6、l。通过for语句和if语句,对二维数组各列元素进行由小到大的排序操作,程序最后通过for语句输出二维数组对角线上的元素。因此D选项正确。
19 [单选题] 下面描述中.不属于软件危机表现的是( )。
A.软件过程不规范
B.软件开发生产率低
C.软件质量难以控制
D.软件成本不断提高
参考答案:A
参考解析:
软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。
20 [单选题] 以下选项中,与k=n++完全等价的表达式是( )。
A.k=n,n=n+1
B.n=n+1,k=n
C.k=++n
D.k+=n+1
参考答案:A
参考解析:
本题考查后缀自增++运算符,n++表示n的当前值参与运算后,再自增1,所以表达式k=n++等价于k=n,n=n+1,故答案选A。
21 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.1
B.2
C.0
D.3
参考答案:C
参考解析:
因为x=1,!x为0,x=0为fa1se,所以if和e1se if的判断条件都不满足,程序运行时只执行x,y的初始化语句和printf()函数,打印出y的值为0,故答案为C。
22 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.3,3
B.1,1
C.2,3
D.1,2
参考答案:D
参考解析:
该题目中首先区别++n和n++,第一次调用f函数时,将++n(n自增1后再参与运算)作为参数进行传递,此时变量m的值为1.执行n+=m;后,n=1,将I返回主函数,并输出。第二次调用f函数时,将n++(n参与运算后再自增1)作为参数进行传递,此时变量m的值为1,执行语句n+=m;,由于n是静态存储变量,因此n=2,将2返回主函数并输出。因此D选项正确。
23 [单选题] 若有定义语句:
int X=10;
则表达式x-=x+x的值为( )。
A.10
B.-20
C.0
D.-10
参考答案:D
参考解析:
表达式x-=x+x等价于x=x-(x+x),x取值为l0,所以结果为:10-20=10,答案选D。
24 [单选题] 有以下程序:
程序运行时,输入的值在哪个范围才会有输出结果( )。
A.小于3的整数
B.不等于10的整数
C.大于3或等于10的整数
D.大于3且不等10的整数
参考答案:D
参考解析:
根据代码可知如果x的值小于等于3,执行空语句,不进行打印操作。如果x的值大于3,再判断x的值是否不等于10,如果不等于10就打印x的值,所以选择D选项。
25 [单选题] 有以下程序:
执行程序时,给变量x输入10,程序运行后的输出结果是( )。
A.55
B.54
C.65
D.45
参考答案:A
参考解析:
该程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+…+8+9+10=55。因此A选项正确。
26 [单选题] 下列关于数据库设计的叙述中,正确的是( )。
A.在需求分析阶段建立数据字典
B.在概念设计阶段建立数据字典
C.在逻辑设计阶段建立数据字典
D.在物理设计阶段建立数据字典
参考答案:A
参考解析:
数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。
27 [单选题] 有以下部分程序:
以下叙述中错误的是( )。
A.f函数中不可以出现return语句
B.在主函数中,f(5);可以正确调用f函数
C.在主函数后的其他函数可以正确调用f函数
D.f函数无返回值,应当定义成void类型
参考答案:A
参考解析:
函数说明可以放在调用函数内,如在main函数内部进行说明,则只能在main函数内部才能识别此函数。所以在main函数中,f(5)可以被正确调用,故选项B正确;由于在main()函数之前也说明了f()函数,所以在main函数后的其他函数也可以正确调用f()函数,故选项C正确;f()函数没有返回值,应该定义成void类型,故选项D正确;虽然f()函数没有返回值,为了在函数体的任意地方退出,可以使用return语句,只是return后不用加返回值,故选项A错误,因此答案为A。
28 [单选题] 以下不属于C语言整型常量的是( )。
A.0L
B.-018
C.0Xa
D.200U
参考答案:B
参考解析:
C语言中,整数可以有八进制、十进制和十六进制3种表示形式,十进制的数码取值为0~9,没有前缀;八进制的数码取值为0~7,必须以0开头,作为八进制数的前缀;十六进制的数码取值为:0~9,A~F或a~f,前缀为OX或Ox。另外,对于长整型数,使用后缀1或j来表示,无符号数使用后缀u或u来表示;O1表示十进制长整型数0,故选项A正确;OXa表示十六进制数a,即十进制数值10,故选项C正确;200U表示十进制无符号整型数200,故选项D正确;负数一般使用二进制补码形式保存在内存中,按照八进制显示时,前缀0在最前面,后面的数值由二进制补码转换成八进制,无负数符号,在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是整数。因此答案为B。
29 [单选题] 下列各排序法中,最坏情况下的时间复杂度最低的是( )。
A.希尔排序
B.快速排序
C.堆排序
D.冒泡排序
参考答案:C
参考解析:
堆排序最坏情况时间下的时间复杂度为O(nlog2n);希尔排序最坏情况时间下的时间复杂度为O(n1.5);快速排序、冒泡排序最坏情况时间下的时间复杂度为O(n2)。故本题答案为C选项。
30 [单选题] 以下关于C语言数据类型使用的叙述中错误的是( )。
A.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
B.若要保存带有多位小数的数据,可使用双精度类型
C.若只处理“真”和“假”两种逻辑值,应使用逻辑类型
D.整数类型表示的自然数是准确无误差的
参考答案:C
参考解析:
C语言中没有逻辑类型.所以C错误。若要保存带有多位小数的数据,可以用单精度类型也可以用双精度类型。处理包含不同类型的相关数据可以定义为结构体类型。整数类型可以无误差的表示自然数:
31 [单选题] 设有定义:
int k=0;
以下选项的四个表达式中与其他三个表达式的值不相同的是( )。
A.++k
B.k+=1
C.k++
D.k+1
参考答案:C
参考解析:
++k,先使k的值自增1后再使用,k++是先取得k的值再将k的值自增1.所以C选项中表达式的值为0,而其他三个表达式的值均为l,所以选择C。
32 [单选题] 下列叙述中正确的足( )。
A.循环队列是队列的一种链式存储结构
B.循环队列是队列的一种顺序存储结构
C.循环队列是非线性结构
D.循环队列是一种逻辑结构
参考答案:B
参考解析:
在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
33 [单选题] 有以下程序:
当执行程序时从键盘上输入Hello Beijing<回车>,则程序运行后的输出结果是( )。
A.hello beiJing
B.Hello Beijing
C.HELLO BElJING
D.hELLO Beijing
参考答案:C
参考解析:
主程序读取整个字符串存于S中,调用fun函数,字符指针c指向数组s。函数fun的功能是把指针c所指向的字符数组中的所有小写字符转换为大写。gets函数可以把空格作为字符串的一部分输入,以回车作为输入结束。如果*c为小写字符,则*c=*c-32(转大写)。因此C选项正确。
34 [单选题] 软件测试用例包括( )。
A.被测程序和测试规程
B.测试计划和测试数据
C.输人数据和预期输出结果
D.输入数据和输出数据
参考答案:C
参考解析:
测试用例(Test Case)是为测试设计的数据,由测试输入数据和与之对应的预期输出结构两部分组成。故本题答案为c选项。
35 [单选题] 以下叙述中正确的是( )。
A.用C语言编写的程序只能放在一个程序文件中
B.C程序书写格式严格,要求一行内只能写一个语句
C.C程序中的注释只能出现在程序的开始位置和语句的后面
D.C程序书写格式自由,一个语句可以写在多行上
参考答案:D
参考解析:
C语言编写的程序可以放置于多个程序文件中,所以A错误。C程序中的一行可以有多条语句,所以B错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C错误。
36 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.16
B.8
C.40
D.4
参考答案:B
参考解析:
本题考查位运算,题目中将4向左移一位然后重新赋值给a,4左移一位为8,程序运行结果为8,选项B正确。
37 [单选题] 设有定义:
语句时,若从键盘输入 876543.0<回车>
则a和b的值分别是( )。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
参考答案:B
参考解析:
“-”指定输入数据所占宽度为2,&是C语言中的求地址运算符。
38 [单选题] 有以下程序:
在VC6平台上编译运行,程序运行后的输出结果是( )。
A.4,8
B.4,4
C.2,4
D.10,6
参考答案:A
参考解析:
VC6平台上规定int型整数占4个字节,doub1e型占8个字节,sizeof()是取类型所占字节数的运算符,所以答案选A。
39 [单选题] 有以下程序:
程序运行后的输出结果是( )。
A.2,3,1,6,8,7,5,4,10,9,
B.3,4,2,7,9,8,6,5,11,10,
C.2,4,3,9,12,12,11,11,18,9,
D.1,2,3,6,8,7,5,4,10,9,
参考答案:C
参考解析:
题目中定义了一个结构体类型s,然后定义了一个结构体变量s并初始化,执行f函数后,将s中元素a的每个元素都加上i,这里需要注意最后一个元素没有加i,所以最终答案为C选项。
40 [单选题] 软件需求规格说明的内容不包括( )。
A.运行环境
B.软件的主要功能
C.软件的性能
D.算法详细设计
参考答案:D
参考解析:
软件需求规格说明应重点描述软件的目标,软件的功能需求、性能需求、外部接口、属性及约束条件等。功能需求是软件需求规格说明,给出软件要执行什么功能的详尽描述。性能需求是指定量的描述软件系统应满足的具体性能需求,即各种软件功能的速度、响应时间、恢复时间。外部接口指软件如何与人、系统的硬件及其他硬件和其他软件进行交互。属性是指与软件有关的质量属性,如正确性、可用性、可靠性、安全性、可维护性等。约束条件包括影响软件实现的各种设计约束,如使用的标准、编程语言、数据库完整性方针、资源限制、运行环境等方面的要求。故本题答案为D选项。
二、程序填空题(共18分)
41 [填空题]
下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数ReadText和Write-Text实现。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
参考解析:
(1)*fw (2)str
(3)str
【考点分析】
本题考查:函数定义以及文件指针;fputs函数的功能是向指定的文件写入一个字符串,其调用形式为:fputs(字符串,文件指针)。
【解题思路】
填空1:定义函数,函数的形参是一个文件类型的指针。
填空2:此处考查fputs函数的形式,应填入str。
填空3:依据printf函数的格式,输出字符串内容,即printf(”%s”,str);。
三、程序修改题(共18分)
42 [简答题]
给定程序modil.C的主函数中,将a、b、c三个结点链成一个单向链表,并给各结点的数据域赋值,函数fun()的作用是:累加链表结点数据域中的数据作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
【参考答案】 (1)int t=0;
(2)while(P)或while(p!=NULL)
(3)t=t+p- >data。
【解题思路】
(1)题目中变量t是用来存放累加和的,因此必须初始化。
(2)题目中*p是结构体,不能转化为bool型。
(3)P是指针,只能用p- >,不能用p.。
四、程序设计题(共24分)
43 [简答题]
请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
参考解析:
【参考答案】
【解题思路】
对二维敷组的行列分别循环,行优先,查找数组中元素为A或者C,分别对其进行计数。