计算机二级c语言选择题及答案,2015年计算机二级C语言选择模拟题及答案2

第 1 页:选择题

第 5 页:参考答案 1.栈和队列的共同特点是(  )。

A.都是先进先出

B.都是先进后出

c.只允许在端点处插入和删除元素

D.没有共同点

2.数据的存储结构是指(  )。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

3.关系数据库管理系统能实现的专门关系运算包括(  )。

A.排序、索引、统计

B.选择、投影、连接

C.关联、更新、排序

D.显示、打印、制表

4.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(  )。

A.ached

B.decab

C.deabe

D.cedba

5.在单链表中,增加头结点的目的是(  )。

A.方便运算的实现

B.使单链表至少有一个结点

c.标识表结点中首结点的位置

D.说明单链表是线性的链式存储实现

6.设有二元关系R和三元关系s,下列运算合法的是(  )。

A.R∩S

B.R∪S

C.R-S

D.R×S

7.两个或两个以上模块之间联系的紧密程度称为(  )。

A.耦合性

B.内聚性

c.复杂性

D.数据传输特性

8.设a=l,b=2,c=3,d=4,则表达式:“a  A.4

B.3

C.2

D.1

9.若有定义:“int a=4,b=5;float x=3.4,y=2.1;”,则下列表达式的值为(  )。

(float)(a+b)/2+(int)x%(int)y;

A.5.5

B.55

C.5.500000

D.55.00000

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

main()

{ int a,b,d=25;

a=d/10%9;

b=a&&(一1);

printf("%d,%d\n",a,b);}

A.6,1

B.2,1

C.6,0

D.2,0

第 1 页:选择题

第 5 页:参考答案

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

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内的复合语句中定义的变量在本函数范围内有效

12.以下能正确定义二维数组的是(  )。

A.int a[][3];

B.int a[][3]={2*3);

C.int a[][3]={};

D.int a[2][3]一{{1),{2},{3,4}};

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

#include

main()

{ int a=3,b=2,C=1;

if(a  if(b<0)c=0;

else c++:

printf("%d\n",c);

}

A.2

B.0

C.1

D.不确定的值

14.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是(  )。

A.while((ch—getchar())!=’N’)printf("%c",ch);

B.while(oh=getchar()!=’N’)printf("%C",ch);

C.while(ch=getchar()==’N’)printf("%c",ch);

D.while((ch—getchar())==’N’)printf("%c",ch);

15.下列说法不正确的是(  )。

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以共用内存单元

C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D.调用函数时,实参与形参的类型必须一致

16.下列选项中不是字符常量的是(  )。

A.’\v’

B.’\x2a’

C.’a’

D."\0"

17.若已包括头文件且已有定义char sl [18],s2={"ABCDE")和int i,现要将字符串”ABCDE”赋给sl,下列语句错误的是(  )。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.sl="ABCDE";

D.for(i=0;i<6;i++)sl[i]=s2[i]

18.在位运算中,操作数每左移两位,其结果相当于(  )。

A.操作数乘以2

B.操作数除以2

c.操作数除以4

D.操作数乘以4

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

main()

{ int a=7,b=8,*P,*q,*r;

p=&a;q=&b;

r=P;P=q;q=r;

printf("%d,%d,%d,%a\n",*P,*q,a,b);

}

A.8,7,8,7

B.7,8,7,8

C.8,7,7,8

D.7,8,8,7

20.有下列程序:

fun(int x,int y)

{ static int m=0,i=2;

i+=++rn;rfl—i+x+y;return m;

}

main()

{ int j=l,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j.m);printf(”%d\n”,k);

}

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

A.5.5

B.5,11

C.11,11

D.11,5

第 1 页:选择题

第 5 页:参考答案

21.下列程序的运行结果为(  )。

#include

main()

{struct date

{int year,month,day;

}today;

printf("%d\n",sizeof(struct date));

}

A.8

B.6

C.10

D.12

22.有以下程序:

#include<

struct stu

{ int num;

char name[10]:

int age;}

void fun(struct stu*p)

{printf("%s\n",(*p).name);}

tllain()

{

struct stu students[3]={{9801,"Zhang".20},

{9802,"Wang",19},{9803,"Zhao",1 8}}

fun(students+2);

}

输出的结果是(  )。

A.Zhang

B.Zhao

C.Wang

D.18

23.有以下程序:

viod fun(int a,int b,int C)

{ a=456:b=567;c=678;}

main()

{ int x=10,y=20,Z=30;

fun(x,y,z):

printf("%d,%d,%d\n",x,y,z);

}

输出的结果是(  )。

A.30,20,10

B.10,20,30

C.456,567,678

D.678,567,456

24.有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。

struct node

{ int data;struct node*next;)*p,*q,*r;

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是(  )。

A.p->next=q->next;

B.P-next=P->next->next;

C.p->next=r;

D.p=q->next;

25.有定义:“int a=2,b=3,c=4;”,则下列选项中值为0的表达式是(  )。

A.(!a==1)&&(!b==O)

B.(a  C.a&&b

D.a||(b+b)&&(c-a)

26.设fun()函数的定义形式为

void fun(char ch,float x){…}

则下列对函数fun的调用语句中,正确的是(  )。

A.fun("abc",3.0);

B.t=fun(’D’.16.5);

C.fun(’65’,2.8);

D.fun(32,32);

27.有下列程序:

main()

{ char p[]={’a’,’h’,’c’},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.4 4

B.3 3

C.3 4

D.4 3

28.有下列程序:

main()

{ int k=5,n=0;

while(k>0)

{switch(k)

{dcfault:break;

case 1:n=n+k;

case 2:

case 3:n+=k;

}

k--;

}

printf("%d\n".n);

}

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

A.0

B.4

C.6

D.7

29.有以下程序:

main()

{ int a[]=(2,4,6,8,10},y=0,x,*P;

p=&a[1];

for(x=1;x<3;x++) y+=p[x];

printf("%d\n,y");

}

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

A.10

B.11

C.14

D.15

30.有下列程序:

void sort(int a[],int n)

{int i,j,t;

for(i=0;i   for(j=i+1;j  if(a[i]  }

main()

{int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;

sort(aa+2,5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

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

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

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

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

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

第 1 页:选择题

第 5 页:参考答案

31.有以下程序:

#include

int abe(int u,int v);

main()

{ int a=24,b一16,c;

c=abc(a,b);

printf("%d\n",c);

}

int abc(int u,int v)

{ int w;

while(v)

{w=u%v;u=v;v=w;)

return;

}

输出结果是(  )。

A.6

B.7

C.8

D.9

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

int fl(int x,int y){return x>y?x:y;)

int f2(int x,int y){return x>y?y:x;}

main()

{ int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);}

A.4,3,7

B.3,4,7

C.5,2,7

D.2,5,7

33.语句int(*ptr)()的含义是(  )。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

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

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

34.下述程序的输出结果是(  )。

#include

main()

{ char chE2][5]一{”1234”,”5678”},*p[2];

int i,j,s=0;

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

p[i]=ch[i];

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

{s=p[i][j]一’0’;

printf("%d",s);}

}

A.6357

B.6135

C.1357

D.691357

35.下述程序的输出结果是(  )。

#include

main()

{ int a[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;

p=a ;

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

{ if(i<2)

p[1][i]=p[1][i]一1;

else

p[1][i]=1;)

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

A.8

B.7

C.12

D.9

36.若有以下说明,则(  )不是对strcpy库函数正确的调用。

strcpy库函数用于复制一个字符串:char*strl="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";

A.strcpy(str2,strl)

B.strcpy(str3,strl)

C.strcpy(strl,str2)

D.strcpy(str5,strl)

37.执行下述程序后,输出的结果是(  )。

#include

#define S(X)X*X

void main()

{int a=9,k=3,m=2;

a/=S(k+m)/s(k+m);

printf("%d",a);

}

A.1

B.4

C.9

D.0

38.已知有如下结构体:

struct sk

{int a;

float b;

}data,*p;

若有P=&data,则对data的成员a引用正确的是(  )。

A.(*p).data.a

B.(*p).a;

C.p->data.a

D.p.data.a

39.下述程序的输出结果是(  )。

#include

void main()

{int b[6]={2,4,6,8,10,12);

int*p=b,**q=&p;

printf("%d,",*(p++));

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

}

A.4,4

B.2,2

C.4,5

D.2,4

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

main()

{ int i,k,a[10],p[3];

k=5;

for(i=0:i<10;i++)a[i]=i;

for(i=0;i<3;i++)p[i]=a[i*(i+1)];

for(i=0;i<3;i++)k+=p[i]*2;

printf("%d\n",k、;

}

A.20

B.21

C.22

D.23

第 1 页:选择题

第 5 页:参考答案

选择题答案与解析

1.C。【解析】栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表,队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,在表的后端(rear)进行插入操作,队列具有先进先出(FIFO)的特点。综上所述可知,栈和队列只允许在端点处插入和删除元素。

2.B。【解析】数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。

3.B。【解析】关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。

4.D。【解析】二叉树的遍历有3种:前序、中序和后序。①前序遍历访问根结点,然后按左右顺序遍历子结点;②中序首先遍历左子树,然后访问根结点,最后遍历右子树;③后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为D。

5.A。【解析】根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

6.D。【解析】本题给出的两个关系R与S的表结构是不同的(R是二元关系,S是三元关系),它们不能进行∩、∪、一运算。而两个不同结构的关系是可以进行笛卡儿积(×)运算的。

7.A。【解析】耦合性用彩表示模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

8.D。【解析】在三目运算符中,优先级相同,按从右到左的结合性计算,a  9.C。【解析】在计算(float)(a4-b)/2时,由于通过强制类型转换将(a+b)转换成了float型,所以应先将2转换成float型,再进行计算,得4.500000。在计算(int)x%(int)y时,先将x和y通过强制类型转换成int型,再进行求余运算,结果为1。又因为4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到5.500000。类型转换的一般规则是:低级类型从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:char→int→unsigned→log→float→double。

10.B。【解析】当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)= 1,2%9=2,故a=2,故先算a/10=25/10=2。

11.D。【解析】在一个函数中的复合语中定义的变量,只能在这个复合语句范围内有效。

12.B。【解析】选项A中对于二维数组,必须通过赋值的个数来确定其长度,没有赋值则无法确定,选项C中赋的是空值,也不能确定其行下标,而选项D中定义的两行三列,而赋值的却是三行两列。

13.C。【解析】第一个if语句,先判断条件,发现a  14.A。【解析】while循环的执行过程如下:①计算while后面圆括号中表达式的值。当值为非0时,执行步骤②;当值为0时,执行步骤④。②执行循环体一次。③转去执行步骤①。④退出循环。在选项A中,表达式(ch=get- char())!=’N’表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。所以选项A为正确答案。

15.B。【解析】本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。

16.D。【解析】c语言规定,一个字符常量代表ASCII 码字符集里的一个字符,在群序中用单引号括起来,以便区分。’\v’表示的是竖向跳格:’kx2a’表示的是两位十六迸制数;’a’表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。

17.C。【解析】数组名sl是代表sl数组首地址的地址常量,因为“=”左边不能出现常量,所以s1="ABCDE"的方法是错误的。

18.D。【解析】左移n位相当于乘以2的n次幂,右移n 位相当于除以2的n次幂。

19.C。【解析】在“r=P;p=q;q=r;”三个语句是表示P 与q交换,经过交换后P指向b的地址,q指向a的地址,因此最后输出为8,7,7,8,故选择C选项。

20.B。【解析】变量m和i声明为局部静态变量,因此第1次调用fun()函数后,局部静态变量m和i的值为5和3,第l次调用结束时,它们的值不变,第2次调用时,m和i 的初始值分别为5和3,在执行“i+=m+1”后,i的值为9,因此,最终m的值为11。

第 1 页:选择题

第 5 页:参考答案

21.B。【解析】struct date中包含year、month、day这3 个整型变量,一个整型变量占2个字节;sizeof是求所占字节数的运算符。

22.B。【解析】从实参传递过去的是结构体系数组的第3个元素,所以输出的name为Zhao。

23.B。【解析】本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。

24.D。【解析】本题考查链表结点的删除,q一>next中存放的是r所指结点的首地址,将r所指结点的首地址存于p-- next中,则实现删除q所指点的功能,并保持链表连续,P所指点与r所指结点相连。

25.A。【解析】本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1 为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项8中,关系表达式a  26.C。【解析】由题目的已知条件函数fun的定义形式void fun(char ch,float x){…)可知第一个形参为字符型,所以A不符合,第二个形参为精度型,所以D不符合,函数fun 定义为void型(无论返回值型),故其没有返回值,所以选项B错误。选项C的第一个实参的类型为字符型,第二个实参的类型为单精度型,与函数fun的形式参数的类型相符合,所以选项C为正确答案。

27.C。【解析】语句char p[]={’a’,’b ’,’ c’);定义了一个一维字符数组p[],并用3个字符’a’,’b’ ,’c ’进行了初始化;而语句q[]="abe"表示定义了一个一维字符数组,并用一个字符串常量"abc"进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符’\0 ’作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。

28.D。【解析】本题主要考查while循环语句和switch case语句的使用方法。其执行步骤为:k=5时,跳出switch 语句,然后k自减1;当k=4时,跳出switch语句,然后k自减1;当k=3时,n=13+k=0+3=3,跳出switch语句,然后k自减1;当k=2时n=n+k=3+2=5,跳出switch语句,然后k自减l;当k=1时,case 1:n=n+k一5+1=6,没有break继续执行CaSe 3;n=n+k=6+1=7,跳出switch语句,然后k自减1;当k=0时,退出循环,所以输出结果为7。

29.C。【解析】由题目的语句P=&a[1]可知,P指向a 数组中下标为1的元素“4”,又因为P为指针变量,所以P [x]与*(p+x)等价,因而在for循环语句中,第一次循环P [1]指向a数组中下标为2的元素“6”,第二次循环p[2]指向a数组中下标为3的元素“8”,所以y=6+8=14,因而选项C为正确答案。

30.C。【解析】本题考查排序的使用由sort()函数的两层for循环语句可知,其二々能是把数组a口中的元素按照从大到小的顺序进行排列。在main()函数中首先定义了一维整型数组aa[10],然后调用sort(aa+2,5)实现从数组aa中下标为2的元素“3”开始.其后连续的5个元素从大到小进行排列,其余元素不变。

31.C。【解析】abc函数是求u、v的最大公约数,当v= 16时,循环成立,执行其后的语句,即w=u%v,u=v;v=w;w=24%16=8,u=16,v=8,接着返回到while中,当v=8 时,循环成立,执行其后昀语句,即w=u%v;u=v;v=w;w=16%8=0,u=8,v=0,接着再返回到while中,当v=0 时,循环不成立,退出循环。

32.A。【解析】根据函数的定义可知,如果x>Y成立,则函数f1返回x的值,函数f2返回y的值。所以fl(a,b)= 4,n(c,d)=5,f2(a,b)=3;,f2(c,d)=2,故e=f2(4,5)=4,f =f1(3,2)=3,g=4+3斗5+2-4-3=7。

33.C。【解析】本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

34.C。【解析】本题先将指针P指向二维数组ch[2] IS],相当于p[0]="1234",p[1]="5678";通过双重for循环,将P中的字符隔一个输出一个,通过“s=p[i][j]-’0’;”语句将所要输出的字符#换成相应的十进制数。

35.B。【解析】根据判断本题共进行三次for循环,第一次执行for循环,p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,[1][2] =1,最后输出的是a[o][1]+a[1][1]+a[1][2]=2+4+ 1=7。

36.C。【解析】strcpy(sl,s2)函数的功能是将字符串s2 复制到字符串s1中。要保证s1存储区能容纳下s2字符串。

37.D。【解析】本题j=要是考查带参数的宏的定义,过程如下:int a=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

38.B。【解析】本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

39.D。【解析】首先定义了一个指向一维数组b的指针P,一个指向指针P的指针变量q;输出*(p++)是先输出* p,即b[O]的值,再将指针P指向数组的下一个元素b[1];输出**q是输出指针P所指单元的内容。

40.B。【解析】第一个循环的作用是把从0~9的数赋

给a数组;第二个循环的作用是把a数组中的部分元素放到数组P中,即p[0]=a[0]=0,p[1]=a[2]=2,p[2]=a[6]= 6;第三个循环的作用是把P中的各个元素的两倍之和放到k中,即k=5+0+4+12=21。

上一页  1 2 3 4 5 6 7  下一页

相关推荐:

2014年计算机二级C语言考试上机冲刺试题及答案集

a4387e053b2a149c6260e870a77edace.gif

2014年3月计算机二级ACCESS上机试题及详解汇总

2014年计算机二级C++考试精选试题及答案汇总责任编辑 : Alice

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值