2015计算机二级C语言考试上机考试题及答案

来源:文书网 1.18W

  一、选择题(每小题1分,共40小题,共40分)

2015计算机二级C语言考试上机考试题及答案

1.算法的空间复杂度是指( )。

A.算法程序的长度

B.算法程序中=的指令条数

C.算法程序所占的存储空间

D.算法执行过程中所需要的存储空间

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

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

3.简单的交换排序方法是( )。

A.快速排序

B.选择排序

C.堆排序

D.冒泡排序

4.关于结构化程序设计原则和方法的描述错误的是( )。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOT0语句

D.语言中若没有控制结构,应该采用前后一致的方法来模拟

5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。

A.可重用性差

B.安全性差

C.非持久性

D.冗余性

6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

7.对如下二叉树进行后序遍历的结果为( )。

EF

FC

CF

CA

8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。

A.模块间的关系

B.系统结构部件转换成软件的过程描述

C.软件层次结构

D.软件开发过程

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

A.耦合度

B.内聚度

C.复杂度

D.数据传输特性

10.下列描述错误的是( )。

A.继承分为多重继承和单继承

B.对象之间的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。

包含DBS和DBMS

包含DB和DBS

包含DB和DBMS

D.没有任何关系

12.下列合法的声明语句是( )。

_abc=50;

le int=3+5e2.5;

do=1L:

t 3_asd=3e-3;

13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。

A.x&&Y

B.x<=Y

C.x‖y+z&&y-z

D.!((x  14.若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。

ch=’b’;

k=10:

printf("%X,%o,",ch,ch,k);

printf("k=%%dn",k);

A.因变量类型与格式描述符的类型不匹配,输出无定值

B.输出项与格式描述符个数不符,输出为0值或不定值

C.62,142,k一%d

D.62,142,k一%l0

15.有下列程序: 、

fun(int X,int y){return(x+y);)

main()

{ int a=1,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

printf("%dn",sum);

}

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

A.6

B.7

C.8

D.9

16.假定x和Y为double型,则表达式x=2,y—x+3/2的值是( )。

A.3.500000

B.3

C.2.000000

D.3.000000

17.有如下程序:

main()

{int x=1,a=0,b=0;

switch(x)

{

case 0:b++;

case l:a++;

case 2:a++;b++;

)

printf("a=%d,b=%dn",a,b);

)

该程序的输出结果是( )。

A.a=2,b=1

B.a=1,b=1

C.a=1,b=0

D.a=2,b=2

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

main()

{int i=1,j=2,k=3;

if(i++= =1&&(++j= =3= =‖k++= =3))

printf("%d%d%dn",i,J,k);

)

A.1 2 3

B.2 3 4

C.2 2 3

D.2 3 3

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

#include

main()

{ int a=0,i;

for(i=1;i<5;i++)

{ switch(i)

{ case 0:

case 3:a+=1;

case l:

case 2:a+=2;

default:a+=3;

)

printf("%d",i);

)

A.19 B.1 C.6 D.8

20.有以下程序:

main()

{int X,i;

for(i=1;i<=50;i++)

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0) .

printf("%d,i)";

)

)

输出结果是( )。

A.28

B.27

C.42

D.41

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

main()

{int a[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;

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

for(j=0;j<=i;j++)s+=a[i][j];

printf("%dn",s);

}

A.18

B.19

C.20

D.21

22.有下列程序:

main()

{ int k=5;

while(--k) printf("%d",k=1);

printf("/n");

)

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

A.1

B.2

C.4

D.死循环

23.若有定义:“int a[2][3];”,则对a数组的第i行第J列元素的正确引用为( )。

A.*(*(a+i)+j)

B.(a+i)[j]

C.*(a+i+j)

D.*(a+i)+j

24.下列能正确进行字符串赋值的是( )。

s[5]={"ABCDE"};

s[5]={’A’,’B’,’C’,’D’,’E’}; 、

*S;S="ABCDE";

*s;printf("%《",s);

25.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。

struct node

{har data;

struct node*next;)*P,*q,*r;

现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。

A.q-:>next=r->next;p--:>next=r;rm:>next=q;

B.q-:>next=r;q->next=r->next;r->next=q;

C.q-:>next=r->next;r->next=q;p->next=r;

D.q-:>next=q;p->next=r;q->next=r->next;

26.有下列程序:

main()

{int i,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++:

)

x++:

}

printf("x=%dn"x);

}

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

A.x=4

B.x=8

C.x=6

D.x=12

27.有下列程序:

int funl(double a){return a*=a;} 、

int fun2(double x,double y)

{double a=0,b=0;

a=funl(x);b=funl(y);return(int)(a+b);

)

main()

{double w;w=fun2(1.1,2.0),……}

程序执行后变量w中的值是( )。 、

A.5.21 B.5 C.5.0 D.0.0

28.有下列程序:

main()

{int i,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

printf("%dn",s);

}

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

A.45

B.20

C.25

D.36

29.有下列程序:

int fun(int n)

{if(n= =1))return l;

else

return(n+fun(n-1)):

}

main()

{ int x;

seanf("%d",&x);x=fun(x);printf("%dn",x);

}

执行程序时,给变量x输入l0,程序的输出结果是( )。

A.55

B.54

C.65

D.45

30.有下列程序:

int fun(int x[],int n)

{ static int sum=0,i;

for(i=0;i   return sum;

}

main()

{int a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;

s=fun(a,5)+fun(b,4);printf("%dn",s);

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

A.45

B.50

C.60

D.55

31.有下列程序:

main()

f char*P[]={"3697","2584");

int i,j;long num=0;

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

{j=0;

while(p[i][j]!=’’)

{if((p[i][j]-t’)%2)num=10*num+p[j][j]-’0’;

j+=2;

)

)

printf("%dn",num);

)

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

A.35 B.37 C.39 D.3975

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

main()

{ char st[20]="hell0Ot”;

printf("%d%dn",strlen(st),sizeof(st));

}

A.9 9

B.5 20

C.13 20

D.20 20

33.若有下的定义:"int t[3][2];",能正确表示t数组元素地址的表达式是( )。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

34.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是( )。

A.文件开始

B.文件末尾

C.文件当前位置

D.以上都不对

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

#include

main()

{int i;

for(i=1;i<=10;i++)

{if(i*i>=20)&&(i*i<=lOO))

break;

}

printf("%dn",i*i);

)

A.49

B.36

C.25

D.64

36.若有定义“int b[8],*p=b;”,则p+6表示( )。

A.数组元素b[6]的值

B.数组元素b[6]的地址

C.数组元素b[7]的地址

D.数组元素b[0]的值加上6

37.设变量已正确定义,则以下能正确计算f=n!的程序是( )。

A.f=0; for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i  C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

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

#include

main()

{char a[2][4]; ,

strcpy(a。"are");strcpy(a[1],"you");

a[o][3]=’&’;

printf("%sn",a);

)

&you

D.&

39.设x=011050,则x=x&01252的值是( )。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

40.在“文件包含,,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是( )。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

  二、基本操作题(共18分)

请补充函数proc(),该函数的功能是计算下面公式SN的值:

SN=1+1/3十4/5+...+2N-1/SN-1

例如,当N=20时,SN=29.031674。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

double proc(int n)

{

double s=1.0,sl=0.0;

int k;

for(【1】;k<=n;k++)

{

sl=S;

【2】

}

return 【3】 ;

)

void main()

{

int k=0:

double sum;

system("CLS");

printf("nPlease input N=");

scanf("%d",&k);

sum=proc(k);

printf("nS=%If",sum);

)

  三、程序改错题(共24分)

下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值为l0,则应输出0.817962。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

#include

double proc(int n)

{

double y=1.0;

f|****found****

int J=1; .

int i;

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

{

j=-l*j;//****found****

y+=1/(i*i);

)

return(y);

)

void main()

{

int n=10:

system("CLS"):

printf("nThe result is%lfn",proc(n));

)

  四、程序设计题(共18分)

编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。

试题程序:

#include

#include

#include

char*proc(char(*a)[81],int num)

{

)

void main()

{

char ss[l0][81],*max;

int n,i=0;

printf("输入若干个字符串:");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")= =0)

{

i++:

gets(ssEi]);

puts(ss[i]);

)

热门标签