2016年计算机二级《C语言》基础模拟题及答案

应届毕业生网整理“2016年计算机二级《C语言》基础练习题及答案(15)”供考生参考。

2016年计算机二级《C语言》基础模拟题及答案

1[单选题] 一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。

A.一对一B.一对多C.多对一D.多对多

参考答案:B

参考解析:因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

2[单选题] 以下选项中合法的常量是(  )

D.123E 0.2

参考答案:C

参考解析:A选项中含有非法的空格,所以错误。c语言中十六进制常量以0x开头,所以C正确。实型常量中e的前后必须均有数据,且其后必须为整数,所以B和D错误。

3[单选题] 有以下程序:

以上程序执行后文件的内容是( )。

ingChina

参考答案:B

参考解析:本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入中,然后将写指针回到文件开头,然后写入sl字符串,那么sl字符串就将前5个字符覆盖,所以最终结果为Chinan9,选项B正确。

4[单选题]以下关于宏的叙述错误的是

A.宏名必须用大写字母构成

B.宏替换具有计算功能

C.宏替换不具有计算功能

D.宏替换不占用运行时间

参考答案:A

参考解析:宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,因此,答案为A选项。

5[单选题] 有以下程序段:

以下选项中不能正确引用字符串的是( )。

A.3B.p[3][2]D.*P

参考答案:A

参考解析:t p[3]一p[3][0]是一个字符,不是字符串,选项A错误。P[3]和str[2]和+P分别代表了ddd,eec,flaa。答案为A选项。

6[单选题] 有以下程序:

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

ing!ijing]oBeijingI

参考答案:A

参考解析:for循环的作用是每次遇到空格,将空格后面的移动到数组的最前面。因此数组最后的状态是“Bei-jing!、Og!ng!、neijing!、O”,但是pfinff(“%s”)打印遇到、0自动结束。因此,打印Beijing!。故答案为A选项。

7[单选题]下列叙述中错误的是( )。

A.数据结构中的数据元素不能是另一数据结构

B.数据结构中的数据元素可以是另一数据结构

C.空数据结构可以是线性结构也可以是非线性结构

D.非空数据结构可以没有根结点

参考答案:A

参考解析:数据元素是一个含义很广泛的概念,它是数据的`“基本单位”,在计算机中通常作为一个整体进行考虑和处理。数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合,所以数据结构中的数据元素可以是另一数据结构。满足有且只有一个根结点并且每一个结点最多有一个前件,也最多有一个后件的非空的数据结构认为是线性结构,不满足条件的结构为非线性结构。空数据结构可以是线性结构也可以是非线性结构。非空数据结构可以没有根结点,如非性线结构“图”就没有根结点。故选A选项。

8[单选题] 以下定义数组的语句中错误的是( )。

num[][3]={{1,2},3,4,5,6}; nUITI[2][4]={{1,2},{3,4},{5,6}}; num[]={1,2,3,4,5,6}; num[][4]={1,2,3,4,5,6’};

参考答案:B

参考解析:选项B中,int Irlllm[2][4]={{1,2},{3,4},{5,6}};定义数组是2行4列,但是初始化的结构是3行2列,因此初始化错误。故答案为B选项。

9[单选题] 若有以下程序

则程序的输出结果是

A.1,2B.0,2C.1,3D.2,3

参考答案:A

参考解析:第一次while判断条件中a++,先用后加,为-2不为0条件为真,执行a的自加与++b操作,a的值变为-1,b的值变为1。第二次while判断后,a的值变为0,b的值变为2。第三次while判断条件为假,但是仍要执行自加操作,即值为l,跳出循环。打印l和2。

10[单选题] 在面向对象方法中,不属于“对象”基本特点的是( )。

A.一致性B.分类性C.多态性D.标识唯一性

参考答案:A

参考解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A。

11[单选题]有以下程序

程序运行后的输出结果是

.-12

参考答案:D

参考解析:本题考查目的是运算符的结合性和优先级。首先计算a*a,结果为9,然后执行a=a-9,即3-9,结果为-6,然后执行a=(-6)+(-6),即8=的值为-12。所以选择D。

12[单选题] 有以下程序:

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

A.*2*6B.}3*5一C.}5D.*7

参考答案:D

参考解析:do……while 语句是先执行后判断,所以第一次先执行循环体,判断i%3==1的条件,由于i为5,所以余数为2,条件不成立,执行i++,i的值为6,判断while 条件为真;第二次执行循环体,同第一次循环的执行过程一样,i的值变为7,判断while条件为真;第三次执行循环体,此时i%3==1,条件成立,再判断i%5==2也成立,打印*与i的值,即*7,然后执行break语句,跳出循环。所以选择D选项。

13[单选题] 若有定义:double x;,则表达式IX=0,x+10,x+十的值是( )。

A.11.0B.10.0C.0.0D.1.0、

参考答案:C

参考解析:c 语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运笑结束后才进行右边的子表达式的运算。也麓是辽,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k++表示先运算,后自■:曹置自增运算:++k表示先自加,后运算。因此,表达式 l;O,I+10。x++的计算过程为首先赋值x=0,然后将x加l0,包是并不对x进行赋值,最后计算x++,并,根据后置自增运算的计算结果,即为 x=0.0。故答案为C选项。

14[单选题] 设有定义:

double a,b,C;

若要求通过输入分别给a,b、c输入1、2、3,输入形式如 下(注:此处口代表一个空格)

口口1.0口口2.0口口3.0<回车>则能进行正确输入的语句是

f("%If%If%If",a,b,C.;

f("%If%If%If",&a,&b,&C.;

f(”%f%f%f",&a,&b,&C.;

f("%5.1If%5.1If%5.1If",&a,&b,&C.;

参考答案:B

参考解析:本题考查scanf函数的格式化输入,scanf函数的一般形式为scanf(格式控制,变量1地址,变量2地址,…),其中,格式字符串要与数据类型保持一致,由于变量double型,所以格式字符串中应为%/if,后面应该为变量地址,所以需要加上符号“&”。所以选择 B。

15[单选题] 有以下程序

程序的输出结果是

A.8 4B.9 6C.9 4D.8 5

参考答案:A

参考解析:本题主要考查局部变量和全局变量的区别,题目中函数之外定义的d为全局变量,函数fun内定义的d为局部变量。所以执行fun函数后,打印出8,执行完d+=a++;后d变为4,所以答案为A。

16[单选题] 有以下程序:

程序输出( )。

A.编译有错B.0,0,0,3C.1,1,2,0D.0,1,2,0

参考答案:A

参考解析:c 语言规定else总是和之前与其最近的且不带else的if配对,题目中,if(a=1)b=1;C=2;默认省的else已经配对了,下一句else没有匹配,if为非法else。另外if的判断条件a=1是赋值语句,不是判断语句,此处也会产生编译错误。因此答案为A选项。

17[单选题] 以下叙述中正确的是

A.数组下标的下限是1

B.数组下标的下限由数组中第一个非零元素的位置决定

C.数组下标的下限由数组中第一个被赋值元素的位置决定

el,c2,*c3,c4[40];是合法的变量定义语句

参考答案:D

18[单选题] 有以下程序

程序的输出结果是

A.1 5 0B.3 5 7C.1 4 7D.3 6 9

参考答案:B

参考解析:程序首先初始化二维数组X[3][3],然后通过3次for循环,输出x[0][2]、x[1][1]和x[2][0]的值,即3、5、7。因此B选项正确。

19[单选题] 以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。

A.可以是任意合法的表达式

B.只能是整数0或非0整数

C.可以是结构体类型的数据

D.只能是整数0或1

参考答案:A

参考解析:C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A。

20[单选题] 设已有定义:float x;,则以下对指针变量P进行定义且赋初值的语句中正确的是( )。

*p=(float)x;

t*p=&x;

t p=&x;

t=1024;

参考答案:B

参考解析:指针是用来存放地址的变量,用(类型名+指针变量名)的形式定义。赋值时应将某个变量地址即8Ⅸ赋给指针变量,所以选择B。