网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文

2017计算机二级C语言基础训练及答案

栏目: 计算机二级 / 发布于: / 人气:5.34K

想提高计算机等级考试成绩平时就要多做练习,积累做题方法和技巧,提高做题速度。以下是小编为大家整理的2017计算机二级C语言基础训练及答案,希望对大家的复习有所帮助!

2017计算机二级C语言基础训练及答案

1.按照“先进后出”原则组织数据的结构是( )。

A.队列

B.栈

C.双向链表

D.二叉树

2.下列选项中不属于软件生命周期开发阶段任务的是( )。

A.软件测试

B.概要设计

C.软件维护

D.详细设计

3.设在C语言中,float类型数据占4个字节,则double 类型数据占( )个字节。

A.1

B.2

C.8

D.4

4.如果进栈序列为el、e2、e3、e4,则可能的出栈序列是( )。

A.e3、el、e4、e2

B.e2、e4、e3、el

C.e3、e4、e2

D.任意顺序

5.数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为( )。

A.C

c

6.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是( )。

A.概念数据库

B.用户数据库

C.物理数据库

D.逻辑数据库

7.一些重要的程序设计语言(in C语言和Pascal语言) 允许过程的递归调用,而实现递归调用中的存储分配通常用( )。

A.栈

B.堆

C.数组

D.链表

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

9.有下列程序:

main()

{ int y=10;

do{y--;}while(--y);

printf("%d ",--y);

)

当执行程序时,输出的结果是( )。

A.-1

B.1

C.4

D.0

10.表达式’5’-’1’的值是( )。

A.整数4

B.字符4

c.表达式不合法

D.字符6

11.下列函数的类型是( )。

fun(double x)

{ float y;

y=3*x-4:

return y;

}

B.不确定

t

12.下列程序的运行结果是( )。

int y=5,x=14;

y=((x=3*Y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A.x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

13.若有下列定义和语句:

int u=011,v=0x11,w=11;

printf("%o,%x,%d ",u,v,w);

则输出结果是( )。

A.9,17,11

B.9,11,11

C.11,11,11

D.11,17,11

14.若有下列定义(设int类型变量占2个字节):

int i=8,j=9;

则下列语句:

printf("i=%%d,j=%%d ",i,j);

输出的结果是( )。

A.i=8,j=9

B.i=%d,j=%d

C.i=%8,j=%9

D.8,9

15.下列程序的输出的结果是( )。

main()

{ double d=3.2;int x,Y;

x=1.2;v=(x+3.8)/5.0;

printf("%d ",d*y);

}

A.3

B.3.2

C.0

D.3.07

16.设“int x=2,y=1;”,则表达式(!x|| Y--)的值是( )。

A.0

B.1

C.2

D.-1

17.设有以下语句:

int a=1,b=2,c;

c=a^(b<<2);

执行后,c的值为( )。

A.6

B.7

C.8

D.9

18.下列程序执行后的输出结果是( )。

void func(int*a,int b[])

{ b[0]=*a+b;}

main()

{ int a,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d ",b[0]);

}

A.6

B.7

C.8

D.9

19.有以下程序:

main()

{ int i,j,x=0;

for(i=0;i<2;i++)

{ x++;

for(j=0;j<=3;j++)

{if(j=0;j<=3;j++)

x++;

}

x++;

}

printf("x=%d ",x);

}

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

A.x=4

B.x=8

C.x=6

D.x=12

20.若有以下程序段,w和k都是整型变量:

w=k:

LB:if(w==0)go to LE;

W--:

printf("*")

goto LB;

LE;

则不能与上面程序段等价的循环语句是( )。

(w=k;w!=0;w--)printf("*");

(w=k;w;--w)printf("*");

C.w=k;

while(w--!=0)printf("*");

D.w=k:

w++;do{w--;printf("*");}while(w!=0);

21.下列程序执行后的`输出结果是( )。

main()

{ char x=0xFFFF;printf("%d ",x--);}

A.-32767

C.1

D.32768

22.下面的函数调用语句中func函数的实参个数是( )。

func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

A.3

B.4

C.5

D.8

23.语句“printf("akbre"’hi’you ")”;的输出结果是( )。

e’hi’y ’ou

’hiyou

’hi’you

’hi’you

24.下面程序输出的是( )。

main()

{ int t=l;fun(fun(t));}

fun(int h)

{ static int a[3]={1.2.3};

int k;

for(k=0;k<3;k++)a[k]+=a[k]-h;

for(k=0;k<3;k++)printf("%d",a[k]);

printf(" ");

return(a[h]);}

A.1,2,3,

1,5,9,

B.1,3,5,

1,3,j,

C.1,3,5,

0,4,8,

D.1,3。5,

-1,3,7,

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

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

c.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

选择题答案与解析

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头文件,预处理的作用就是实现宏定义和条件编译。