急求计算机二级考试(C语言)试题

2005年4月全国计算机二级C语言考试试题及答案

(1)数据的存储结构参考d。

(a)存储在外部存储器中的数据(b)数据占用的存储空间量。

(c)数据在计算机中的顺序存储方式(d)数据在计算机中的逻辑结构表示。

(2)下列关于栈的描述,错误的是b。

(a)堆栈是一个先进后出的优先表。

(b)堆垛只能按顺序存放。

(三)堆栈具有记忆功能。

(d)在插入和删除栈的操作中,不需要改变栈底指针。

(3)对于长度为n的线性表,在最坏的情况下,以下排序方法对应的正确比较次数为d。

(a)冒泡顺序是N/2 (B)冒泡顺序是N。

(c)快速排序是N (D)快速排序是N(N-1)/2。

(4)顺序搜索长度为n的线性表,最坏情况下所需的比较次数为c。

(A)log2n (B)n/2 (C)n (D)n+1

(5)下列对线性表的描述中,A是正确的。

a)存储空间不一定是连续的,每个元素的存储顺序是任意的。

b)存储空间不一定是连续的,前一个元素必须存储在后一个元素之前。

c)存储空间必须是连续的,并且每个前面元件必须存储在后面元件的前面。

d)存储空间必须是连续的,每个元素的存储顺序是任意的。

(6)下列关于软件测试的描述中,C是正确的。

a)软件测试的目的是证明程序是否正确。

b)软件测试的目的是使程序正确运行。

c)软件测试的目的是在程序中发现尽可能多的错误。

d)软件测试的目的是使程序符合结构化原则。

(7)为了使模块尽可能独立,需要B。

(a)模块的内聚性应尽可能高,模块之间的耦合性应尽可能强。

(b)模块的内聚性应尽可能高,模块间的耦合性应尽可能弱。

(c)模块的内聚性应尽可能低,模块之间的耦合性应尽可能弱。

(d)模块的内聚性应尽可能低,模块之间的耦合性应尽可能强。

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

(a)程序是软件;(b)软件开发不受计算机系统的限制。

(c)软件既是逻辑实体,也是物理实体。(d)软件是程序、数据和相关文档的集合。

(9)数据独立性是数据库技术的重要特征之一。所谓数据独立,指的是d。

(a)数据和程序独立储存。

(b)不同的数据存储在不同的文件中。

(c)不同的数据只能由相应的应用程序使用。

(d)以上三种说法都不正确。

(10)用树形结构表示实体间关系的模型是c。

(a)关系模型(b)网络模型(c)层级模型(d)以上三者都是。

(11)算法有五个特点。下列选项中,B不属于算法特征。

(a)贫穷(b)简单(c)可行性(d)确定性

(12)下列选项中,A是C语言的法定常数。

(一)-80。(B)-080 (C)-8e1.0 (D)-80.0e

(13)下列说法中正确的是c。

(a)用C语言实现的算法必须有输入输出操作。

(b)用C语言实现的算法可以没有输出,但必须有输入。

(C)C程序实现的算法可以没有输入,但必须有输出。

(d)C程序实现的算法可以没有输入,也没有输出。

(14)以下不能定义为用户标识符为d。

Main (B)_0 (C)_int (D)sizeof

(15)下列选项中,B不是合法常数。

(A)1.234 e04(B)1.234 E0(C)1.234 e+4(D)1.234 E0

(16)如果以下程序C可用,数字字符0的ASCII值为48。

主()

{

char a='1 ',b = ' 2

printf("%c,",b++);

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

}

程序运行后的输出结果是

(A)3,2 (B)50,2 (C)2,2 (D)2,50

(17)具有以下过程a

主()

{

int m=12,n = 34

printf("%d%d ",m++,++ n);printf("%d%d\n ",n++,++ m);

}

程序运行后的输出结果是

(A)12353514(B)12353513(C)12343514(D)12343513

(18)有以下语句:int b;char c[10];,正确的输入语句是b。

A)scanf("%d%s ",& ampb & amp;c);B) scanf("%d%s ",& ampb,c);

c)scanf("%d%s ",b,c);D)scanf("%d%s ",b,& ampc);

(19)具有以下过程a

主()

{

int m,n,p;

scanf("m=%dn=%dp=%d ",& ampm & amp;n & amp;p);

printf("%d%d%d\n ",m,n,p);

}

如果您想从键盘输入数据,使变量M中的值为123,N中的值为456,P中的值为789,那么正确的输入是

a)M = 123N=456 P = 789 B)M = 123N = 456 P = 789 C)M = 123,N = 456,P=789 D)123 456 789

(20)有以下程序b

主()

{

int a,b,d = 25

a = d/10% 9;b = a & amp& amp(-1);

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

}

程序运行后的输出结果是

A)6,1 B)2,1 C)6,0 D)2,0

(21)具有以下过程d。

主()

{

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

if(i++ = = 1 & amp;& amp(++j==3||k++==3))

printf("%d %d %d\n ",I,j,k);

}

程序运行后的输出结果是

1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3

(22)如果整数变量A,B,C,D中的值依次为:1,4,3,2。

然后条件表达式aA) 1 B)2 C)3 D)

(23)有以下程序b

主()

{

int p[8]={11,12,13,14,15,16,17,18},i=0,j = 0;

while(i++ & lt;7)if(p[I]% 2)j+= p[I];

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

}

程序运行后的输出结果是

A)42 B)45 C)56 D)60

(24)有以下程序c

主()

{

char a[7]= " A0 \ 0a 0 \ 0 ";int i,j;

I = sizeof(a);j = strlen(a);

printf("%d %d\n ",I,j);

}

程序运行后的输出结果是

A)2 2 B)7 6 C)7 2 D)6 2

(25)下列能正确定义一维数组的选项是b。

A)int a[5]={0,1,2,3,4,5 };B)char a[]={0,1,2,3,4,5 };

C)char a={'A ',' B ',' C ' };d)int a[5]= " 0123 ";

(26)有以下程序a

int f1(int x,int y){ return x & gt;y?x:y;}

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

主()

{

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

27)现有定义:char a [] = "XYZ ",b [] = {'x ',' y ',' z ' };下列说法中正确的是c。

A)数组A和B的长度相同;b)数组A的长度小于数组b的长度。

c)数组A的长度大于数组b的长度D)以上说法都不正确。

28)有以下程序d。

void f(int *x,int *y)

{

int t;

t = * x;* x = * y;* y = t;

}

主()

{

int a[8]={1,2,3,4,5,6,7,8},I,*p,* q;

p = a;q = & ampa[7];

while(p{f(p,q);p++;q-;}

for(I = 0;我& lt8;i++)printf("%d ",a[I]);

}

程序运行后的输出结果是

A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,

C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1,

29)有以下程序d。

主()

{

int a[3][3],*p,I;

p = & ampa[0][0];

for(I = 0;我& lt9;i++)p[I]= I;

for(I = 0;我& lt3;i++)printf("%d ",a[1][I]);

}

程序运行后的输出结果是

a)0 1 2 B)1 2 3 C)2 3 4D)3 4 5

(30)下列说法中错误的是a。

a)对于double类型的数组,不能直接使用数组名作为一个整体来输入或输出数组。

b)数组名代表数组所占存储区域的第一个地址,其值不可更改。

c)当程序执行过程中数组元素的下标超出定义的下标范围时,系统会给出“下标越界”的错误信息。

d)数组元素的数量可以通过赋予初始值来确定。

(31)有如下程序c。

#定义N 20

fun(int a[],int n,int m)

{int i,j;

for(I = m;我& gt= n;I-)a[I+1]= a[I];

}

主()

{

int i,a[N]={1,2,3,4,5,6,7,8,9,10 };

fun(a,2,9);

for(I = 0;我& lt5;i++)printf("%d ",a[I]);

}

程序运行后的输出结果是

a)10234 B)12344 C)12334D)12234

32)有以下程序b。

主()

{

int a[3][2]={0},(*ptr)[2],I,j;

for(I = 0;我& lt2;i++)

{ ptr = a+I;scanf("%d ",ptr);ptr++;}

for(I = 0;我& lt3;i++)

{ for(j = 0;j & lt2;j++)printf("-",a[I][j]);

printf(" \ n ");

}

}

如果运行时输入为:1 23,则输出结果为

a)错误消息B)1 0 C)1 2 D)1 0

2 0 3 0 2 0

0 0 0 0 3 0

33)有以下程序b。

prt(int *m,int n)

{ int I;

for(I = 0;我)

主()

{

int a[]={1,2,3,4,5},I;

prt(a,5);

for(I = 0;我& lt5;i++)

printf("%d ",a[I]);

}

程序运行后的输出结果是

A}1,2,3,4,5,B}2,3,4,5,6,C}3,4,5,6,7,D}2,3,4,5,1,

34)有以下程序a。

主()

{int a[]={1,2,3,4,5,6,7,8,9,0},* p;

for(p = a;p}

程序运行后的输出结果是

A)1,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,

C)0,1,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,

35)有以下程序d。

#定义第3页

void F(int x){ return(P * x * x);}

主()

{printf("%d\n ",F(3+5));}

程序运行后的输出结果是

A)192 B)29 C)25 D)编译错误。

36)有以下程序c。

主()

{ int c = 35printf("%d\n ",c & ampc);}

程序运行后的输出结果是

A)0 B)70 C)35 D)1

37)下列说法中正确的是d。

a)预处理命令行必须位于源文件的开头。

b)在源文件的一行中可以有多个预处理命令。

c)宏名必须用大写字母表示。

d)宏替换不占用程序的运行时间。

38)如果有下面的解释和定义C,

联合dt

{ int a;char b;双c;}数据;

下列说法中错误的是

A)A)数据的每个成员的起始地址是相同的。

b)变量数据占用内存的字节数等于成员c占用的字节数。

c)程序段:data . a = 5;printf("%f\n ",data . c);输出结果是5.000000。

d)数据可以用作函数的自变量。

39)在下面的语句或语句组中,能正确赋值字符串的是C。

a)char * sp;*sp= "对!";b)char s[10];s= "对!";

c)char s[10];*s= "对!";D)char *sp="right!";

40)提供以下指令c。

typedef结构ST

{龙a;int b;char c[2];}新;

以下描述中正确的是

a)上面的描述形式是非法的B)ST是结构类型。

C)NEW是一个结构类型D)NEW是一个结构变量。

41)有如下程序b。

主()

{int a=1,b;

for(b = 1;b & lt=10;b++)

{ if(a & gt;=8)破;

if(a % 2 = = 1){ a+= 5;继续;}

a-= 3;

}

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

}

程序运行后的输出结果是

A) 3 B) 4 C)5 D) 6

42)有以下程序a。

主()

{char s[]="159 ",* p;

p = s;

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

}

程序运行后的输出结果是

a)15 B)16 C)12D)59

43)具有以下功能d

乐趣(char *a,char *b)

{while((*a!= ' \ 0 ')& amp;& amp(*b!= ' \ 0 ')& amp;& amp(*a==*b))

{ a++;b++;}

return(* a-* b);

}

该功能的作用是

a)计算由a和b指示的字符串长度之间的差

B)将B表示的字符串连接到a表示的字符串。

c)将B表示的字符串连接到a表示的字符串。

d)比较由a和b表示的字符串的大小

44)有以下程序b。

主()

{int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},I,j;

for(I = 0;我& lt4;i++)

{ for(j = 0;j & lt= I;j++)printf("L ",' ');

for(j = _ _ _ _ _);j & lt4;j++)printf("M ",num[I][j]);

printf(" \ n ");

}

}

要输出数组的右上角三角形,如下所示

1 2 3 4

6 7 8

11 12

16

程序下划线中应该填写的是

A)i-1 B)i C)i+1 D)4-i

45)有以下程序d。

point(char * p){ p+= 3;}

主()

{char b[4]={'a ',' b ',' c ',' d'},* p = b;

点(p);printf("%c\n ",* p);

}

程序运行后的输出结果是

a)a)B)B)C)C)D)D)

46)如果程序中有如下解释和定义语句A。

char fun(char *);

主()

{

char *s="one ",a[5]={0},(*f1)()=fun,ch;

......

}

以下选项中fun函数的正确调用语句是

a)(* f 1)(a);b)* f 1(* s);c)乐趣(& ampa);d)ch = * f 1(s);

47)有以下结构描述和变量定义,如图。

指针p、q和r分别指向这个链表中的三个连续节点。

结构节点

{int数据;结构节点* next}*p、*q、* r;

现在需要从链表中删除Q指向的节点,保持链表的连续性。

下列不能完成指定操作的语句是d。

A)P->next = q-& gt;接下来;B)p->next = p-& gt;下一个-& gt;接下来;

c)p->next = r;d)p = q-& gt;接下来;

48)下列对结构型变量td的定义中,C是错误的。

A)typedef结构aa B)结构aa C)结构D)结构

{ int n;{ int n;{ int n;{ int n;

浮动m;浮动m;浮动m;浮动m;

} AA} td} aa} td

AA td结构aa td结构aa td

49)以下与函数fseek(fp,0L,SEEK_SET)相同的函数是d。

a)feof(FP)B)ftell(FP)C)fgetc(FP)D)rewind(FP)

50)有以下程序b。

#包括

void WriteStr(char *fn,char *str)

{ FILE * fp

fp=fopen(fn," w ");fputs(str,FP);fclose(FP);

}

主()

{

WriteStr("t1.dat "," start ");

WriteStr("t1.dat "," end ");

}

程序运行后,文件t1.dat中的内容为

a)开始B)结束C)开始结束D)结束

1.二叉树有18个度为2的节点,所以二叉树有_ _ _ _ _个叶节点。

答案:19

2.在面向对象的方法中,一个类的实例叫做_ _ _ _。

答案:反对

3.程序中诊断和纠正错误的工作通常被称为_ _ _ _ _。

答:调试

4.在关系数据库中,数据表示为二维表,每个二维表称为_ _ _ _ _。

回答:关系。

5.问题解决方案的正确完整描述叫做_ _ _

答案:算法

6.如果在操作过程中从键盘输入以下程序:10 20 30输出结果是_ _ _ _ _

#包括

主()

{

int i=0,j=0,k = 0;

scanf("%d%*d%d ",& amp我& ampj & amp;k);printf("%d%d%d\n ",I,j,k);

}

答案:10 30 0

7.以下程序的输出是_ _ _

#定义S(x) 4*x*x+1

主()

{

int i=6,j = 8;

printf("%d\n ",S(I+j));

}

答案:81

*8.以下程序的输出是_ _ _

主()

{int a=3,b=4,c=5,t = 99

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

}

答案:4399

9.以下程序的输出是_ _ _

主()

{

int a,b,c;

a = 10;b = 20c =(a % b & lt;1)| |(a/b & gt;1);

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

}

答案:10 20 0

10.以下程序的输出是_ _ _

主()

{char c1,C2;

for(c1='0 ',c2 = ' 9c 1 printf(" \ n ");

)

答案:0918273645

11.已知字符A的ASCII码值为65。如果从键盘输入以下程序:B33。然后

输出结果是_ _ _

#包括

主()

{char a,b;

a = getchar();scanf("%d ",& ampb);

A = A-' A '+' 0 ';b = b * 2;

printf("%c %c\n ",a,b);

}

答案:1 B

12.在下面的程序中,fun函数的作用是求一个3行4列的二维数组中每个元素的最大值。请填空。

void fun(int,int,int(*)[4],int *);

主()

{int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],I;

fun(3,4,a,b);

for(I = 0;我& lt3;i++)printf("M ",b[I]);

printf(" \ n ");

}

void fun(int m,int n,int ar[][4],int *bar)

{

int i,j,x;

for(I = 0;I { x = ar[I][0];

for(j = 0;j _ _ _ _ _ _ _ _ = x;

)

}

)

答案:bar[i]

13.下列程序的输出是_ _ _ _ _ _

void swap(int x,int y)

{ int t;

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

}

主()

{ int a=3,b = 4;

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

}

答案:4 3 3 4

14.以下程序的输出是_ _ _

#包括

void fun(char *s,int p,int k)

{ int I;

for(I = p;我)

主()

{ char s[]= " abcdefg ";

fun(s,3,strlen(s));卖出期权;

}

答案:abcfg

17.下列程序的输出是_ _ _ _ _ _

结构节点

{ int k;

结构节点*链接;

};

主()

{结构节点m[5],*p=m,* q = m+4;

int I = 0;

而(p!=q)

{ p->;k = ++ I;p++;

q->;k = i++;q-;

}

q->;k = I;

for(I = 0;我& lt5;i++)printf("%d ",m[i]。k);

printf(" \ n ");

}

答案:13431

18.下面程序中慧文的作用是检查一个字符串是否是回文。当字符串是回文时,

该函数返回字符串:yes!否则,函数返回字符串:no!,并在主函数中输出。所谓的回文是

正向和反向拼写是相同的,例如:adgda。请填空。

#包括

char *汇文(char *str)

{char *p1,* p2int i,t = 0;

p 1 = str;p2 = _ _ _ _ _ _

for(I = 0;我& lt= strlen(str)/2;i++)

if(*p1++!= * p2-){ t = 1;打破;}

if(_ _ _ _ _ _ _)return(" yes!");

else返回(“不!”);

}

主()

{ char str[50];

printf(" Input:");scanf("%s ",str);

printf(" % s \ n " ,_ _ _ _ _ _);

}

答案:18)STR+(strlen(STR)-1)

19) !t

20)汇文(字符串)