当前位置:学者斋 >

计算机 >C语言 >

计算机二级C语言专题模拟题及答案2017

计算机二级C语言专题模拟题及答案2017

理清考试题目的重点有助于我们更快更好的掌握考试方法,下面是小编整理的计算机二级C语言专题模拟题及答案,希望对大家有用,更多消息请关注应届毕业生网。

计算机二级C语言专题模拟题及答案2017

  选择题

1.在深度为5的满二叉树叶中,叶子结点的个数为( )。

A.32

B.31

C.16

D.15

2.软件生命周期中,花费最多的阶段是( )。

A.详细设计

B.软件编码

C.软件测试

D.软件维护

3.视图设计一般有3种设计次序,下列不属于视图设计次序的是( )。

A.自顶而下

B.由内向外

C.由外向内

D.自底向上

4.下列数据结构中,能用二分法进行查找的是( )。

A.顺序存储的有序线性表

B.结性链表

C.二叉链表

D.有序线性链表

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

A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值不可改变

C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

6.以下只有在使用时才为该类型变量分配内存的存储类型说明是( )。

和static

和register

ster和static

rn和register

7.下列可作为C语言赋值的语句的是( )。

A.x一3,y=5

B.a=b=6

C.i--;

D.a,c

8.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a  A.1

B.2

C.3

D.4

9.下列叙述中错误的是( )。

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

10.以下程序执行后sum的值是( )。

main()

{ int i,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%d ",sum):

}

A.15

B.14

C.不确定

D.0

11.设j为Int型变量,则下面for循环语句的执行结果是( )。

for(j=10;j>3;j--)

{ if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.6 3

B.7 4

C.6 2

D.7 3

12.表示关系X<=Y<=Z的C语言表达式为( )。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<一Y)&(Y<一Z)

13.设有如下定义:

int arr[]={6,7,8,9,10);

int*ptr:

ptr=arr;

*(ptr2)=2;

printf("%d,%d ",*ptr,*(ptr2)):

则下列程序段的输出结果为( )。

A.8,10

B.6,8

C.7,9

D.6,2

14.设有定义语句:

int x[-6]={2,4,6,8,5,7),*p=X,i;

要求依次输出X数组6个元素中的值,不能完成此操作的语句是( )。

(i=0;i<6;i++)printf("%2d",*(p++));

(i=0;i<6;i++)printf("%2d",*(pq-i));

(i=0;i<6;i++)printf("%2d",*p++);

(i=0;i<6;i++)printf("%2d",*(p)++);

15.数字字符0的ASCII值为48,运行以下程序的输出结果是( )。

main()

( char a=’1’,b=’2’;

printf("%C,",b++);printf("%d ",b—a);}

A.3,2

B.50,2

C.2,2

D.2,50

16.设有如下定义:

int(*ptr)();

则以下叙述中正确的是( )。

是指向一维组数的指针变量

是指向int型数据的指针变量

是指向函数的指针,该函数返回一个int型数据

是一个函数名,该函数的返回值是指int型数据的指针

17.设有定义的语句:“char c1=92,c2=92;”,则以下表达式中的值为零的是( )。

A.c1^c2

B.c1&c2

C.~c2

D.c1 | c2

18.以下程序的输出结果是( )。

void fun(int*a,int i,int i)

{int t;

if(i   { t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;

fun(a,i,j);

}

}

main()

{ int K[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf(" ");

}

A.1,2,6,8

B.8,6,2,1

C.8,1,6,2

D.8,6,1,2

19.有以下程序:

main()

{int i,j;

for(j=10;j<11;j++)

{ for(i=9;i   if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

输出结果是( )。

A.11

B.10

C.9

D.10 11

20.有以下程序.

#include

main()

{ char c1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=get); c6=get);

putc1);putc2);

printf("%c%c ",c5,c6);

}

程序运行后,若从键盘输入(从第l列开始)

123<回车>

45678<回车>

则输出结果是( )。

A.1267

B.1256

C.1278

D.1245

21.执行下面的程序后,a的值为( )。

main()

{ int a,b;

for(a=1,b=1;a<=10;a++)

{ if(b%3==l)

{ b+=3;

continue;}

b-=5;}}

A.7

B.8

C.9

D.10

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

A.用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系

B.用E—R图只能表示实体集之间一对一的联系

C.用E—R图只能表示实体集之间一对多的联系

D.用E—R图表示的概念数据模型只能转换为关系数据模型

23。若有运算符:>、一、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。

A.%、sizeof、>、<<、=

of、%、>、=、<<

of、<<、>、%、=

of、%、<<、>、=

24.若变量a,b已正确定义,且b已正确赋值,则合法的语句是( )。

A.b=double(b);

B.(int)a=(int)b;

C.a=a++=5;

D.a=double(b);

25.执行下列程序中的输出语句后,a的值是( )。

main()

{ int a;

printf("%d ",(a=2*3,a*5,a+7));

}

A.17

B.37

C.6

D.13

26.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是( )。

main()

{ float a,b,c,t;

scanf("%f,%f,%f",&a,&b,&c);

if(a   {t=a;a=b.b=t;)

if(a   {t=a;a=c;c=t;)

it(b   {t=b;b=C;c—=;)

printf("%f %f %f ",a,b,c);

}

A.1.00

2.00

3.00

B.1.00

3.00

2.00

C.1

3

2

D.3.00000

2.00000

1.00000

27.设有程序段:

int k=12:

while(k=1)k=k一1;

则下列描述中正确的是( )。

e循环执行10次

B.循环是无限循环

C.循环体语句一次也不执行

D.循环体语句执行一次

28.在执行完下列的c语句段之后,则B的值是( )。

char a=’A’;

int b;

B=((34&&56)&&(a<’b’));

A.0

B.1

E

29.有下列函数定义:

fun(float h)

{ printf("%f,%f ",h,h*h);)

该函数的类型是( )。

类型

t类型

类型

D.函数无类型说明,定义有错

30.有下列程序段:

int n,t=1,S=0;

scanf("%d",&n);

do{s=s+t;t=t-2;while(t!=n);

为使此程序段不陷入循环,从键盘输入的数据应该是( )。

A.任意正奇数

B.任意负偶数

C.任意正偶数

D.任意负奇数

  选择题答案与解析

1.B。【解析】栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。

2.C。【解析】软件定义、软件开发、软件运行维护组成了软件的生命周期。其中软件定义阶段的主要工作是可行性研究与计划制订和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;运行维护阶段的主要工作是软件的运行及后期的维护等。

3.C。【解析】在C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16位机中(也就是在标准c 中),若int类型数据占2个字节,则float类型数据占4个字节,double类型数据占8个字节。

4.B。【解析】栈的特点是先进后出,可知el肯定是最后出栈的,因此正确答案为选项B。

5.C。【解析】数据定义语言Data Definition Language

(DDL)是SQL语言的一部分,用来定义模式、内模式和外

模式。

6.B。【解析】①以内模式为框架所组成的数据库,1物理数据库;②以概念模式为框架所组成的数据库叫概念数据库;③以外模式为框架所组成的数据库叫用户数据库。它是真实存在于计算机外存中的数据库。

7.A。【解析】在允许过程的递归调用的程序设计语言中,由于C语言中栈的特性为先进后出,因此用栈来实现递归调用中的存储分配。

8.D。【解析】程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。

9.D。【解析】本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

10.A。【解析】在c语言中,字符都是变为其对应的ASCII码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符5和字符1的ASCII码值相差仍是4。

11.A。【解析】本题考查函数值的类型。在函数调用时,尽管Y的类型是float.x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int 型,所以计算后Y的`类型是int型。

12.C。【解析】逗号表达式的解题思路是从左到右,依次求解,整个逗号表达式的值就是最后一个表达式的值。

表达式(x=3*y,x_+ 1)中,依次是x=3*y=3*5= 15,表达式x+1=16,但没有给x或y赋值,所以x还是等于15;第3个表达式x-1=15-1=14,所以y的值为14。

13.C。【解析】“%o”表示八进制无符号型输出整型数据(即不带前导O);“%x”是示以十六进制无符号型输出整型数据(即不带前导ox或OX);“%d”表示输出带符号的十进制整型数。

14.B。【解析】本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。

15.C。【解析】根据赋值运算的类型转换规则,先将double型的常量l.2转换为int型,因为x的类型是int,则X的值为1;执行语句y=(K+3.8)/5.0时,即先将整型变量X的值1转换为double型1.0,然后3.8相加得4.8,进行除法运算4.8/5.0结果为0.即变量y的值为0,d*Y的值也为0,故选C选项。

16.B。【解析】因X为2,所以!X时表达式值为0,因Y 为1,y--表达式的值为1然后自减1,y为0,所以!x || y --时表达式的值为1。

17.D。【解析】本题考查两个知识点,按位异或左移把b 左移2位化成二进制c=a(b<<2)=a^(000010<<2)= a^001000=0000001^O01000=9,故选择D。

18.A。【解析】本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0] 的值为6。

19.B。【解析】当i=0时,i<2成立,执行第一个for循环x自加为1,接着执行第二个for循环;j=0时j<=3成立,此时if不成立,执行x++后,x为2;接着j=1时,i<= 3成立,继续循环,此时if成立,continue是跳出本次循环,继续下一次循环,不再执行x++了;接着j=2时,j<=3成立,此时if不成立,执行其后的语句;当j=4时,退出第二个循环,接着执行循环外部的x++,x为4;当i=1时,i<2成立,执行第一个循环,x=5,此时接着执行循环外部的语句,即第二个循环;j=0时j<3成立,此时if不成立,x++后,x 为6,接着j为1时,j<=3成立,继续循环,此时if成立,不再执行x++了;接着J=2时,j<=3成立,此时if不成立,执行其后的x++,x为7;i=3时,j<=3成立,此时if成立,不再执行其后的语句了;当j=4时,退出第二个循环,执行循环外部的语句,最终x为8,故选B选项。

21.C。【解析】因为x=0x FFFF=11111111,因此当以整型形式输出时对应的数为一1。

22.A。【解析】实参是在调用时传递该函数的参数。故选A。

23.C。【解析】先输出a、b表示退一格,当执行到:后,光标往后退,接着输出re ’hi ’y(反斜杠后又加一个反斜杠的意思是要输出一个反斜杠),此时又执行:后,就被ou覆盖。

24.D。【解析】本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。

25.B。【解析l本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include头文件,预处理的作用就是实现宏定义和条件编译。

26.B。【解析】C语言规定,在if…else语句中,else总是与它前面的最近的if配对。

27.A。【解析】本题主要考查字符数组和指针,在c语言中,字符型数组在存放字符串时会自动在末尾加上’ ’,所以数组str有11个元素;ptr指向数组str的首地址,ptr+ 10是指向str[10],*(ptr+10)是引用str[10]的值。

28.C。【解析】本题考查swap函数,它的作用是把x、Y 所指的内容互换,其他的不变,因此当执行完调用函数后,仅仅’a’与’1’互换,其他的没有变。

29.A。【解析】本题考查指针用法,if语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

30.A。【解析】本题考查带参数宏的定义,运算符:(x) >(y)?(x):(y)当表达式为真时输出X,否则输出Y,调用(MAX(a+b,c+d))*100时,(a+b=5)>(c+d=4),输出a+b=5,所以x=5*100。

  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/cyuyan/z4x556.html