求2010年3月计算机二级C语言笔试复习资料。

一、选择题(每题2分,70分* * *)

1.(1)下列数据结构中,属于非线性结构的有

a)循环队列

b)链式队列

c)二叉树

d)皮带链堆栈

A B C D

2.

(2)在下列数据结构中,可以按照“先入后出”原则访问数据的有

a)循环队列

b)堆栈

c)队列

d)二叉树

A B C D

3.

(3)对于循环队列,下列说法是正确的

a)组长指针是固定的。

b)头指针必须大于尾指针。

c)头指针必须小于尾指针。

d)头指针可以大于尾指针,也可以小于尾指针。

A B C D

4.

(4)算法的空间复杂度是指

a)算法执行期间所需的计算机存储空间。

b)算法处理的数据量

c)算法程序中语句或指令的数量

d)算法执行期间所需的临时工作单元的数量。

A B C D

5.

(5)软件设计中划分模块的一个标准是

a)低内聚力和低耦合度

b)高内聚和低耦合

c)低内聚力和高耦合度

d)高内聚和高耦合

A B C D

6.

(6)下列选项中不属于结构化程序设计原理的是

a)可以包装

b)从上到下

c)模块化

d)逐步完善

A B C D

7.(7)软件的详细设计产生以下图表:

图片是

N-S图

b)焊盘图

c)程序流程图

D)E-R图

A B C D

8.

(8)数据库管理系统是

a)操作系统的一部分

b)操作系统支持的系统软件

c)编译系统

d)操作系统

A B C D

9.

(9)在E-R图中,用来表示实体连接的图形是

a)椭圆形

b)矩形

c)菱形

d)三角形

A B C D

10.(10)R、S和T有如下三种关系:

其中,关系T由关系R和S通过某种运算得到,该运算为

a)选择

b)投影

c)薪酬

d)以及

A B C D

11.(11)以下说法正确。

a)编程的任务是编写程序代码,并在计算机上调试。

b)编程的任务是确定所用的数据结构。

c)编程的任务是确定使用的算法。

d)以上三种说法都不完整。

A B C D

12.(12)在下列选项中,可以用作用户标识符的是

a)无效

b)8-8

C)_0_

d)未签名

A B C D

13.(13)阅读以下程序

# include & ltstdio.h & gt

主()

{ int casefloat printF

Printf("请输入2个数字:");

scanf("%d %f ",& amp案例& ampprintF);

printf("%d %f\n ",case,printf);

}

程序在编译过程中产生了一个错误,错误的原因是

a)定义语句时出错。case是关键字,不能用作用户定义的标识符。

b)定义语句时出错,printF不能用作用户定义的标识符。

c)定义语句正确,scanf不能作为输入函数。

d)定义语句不知所措,printf无法输出case的值。

A B C D

14.(14)表达式:(int)((double)9/2)-(9)% 2的值为

A)0

B)3

C)4

D)5

A B C D

15.(15)如果有定义语句:int x = 10;,表达式x-=x+x的值为

答)-20

B)-10

C)0

D)10

A B C D

16.以下是可用的程序。

# include & ltstdio.h & gt

主()

{ int a=1,b = 0;

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

printf("%d ",a = 2 * b);

}

程序运行后的输出结果是

A)0,0

B)1,0

C)3,2

D)1,2

A B C D

17.(17)有一个定义:int a=1,b=2,c = 3;以下语句中的执行效果与其他三个不同。

a)如果(a & gtb) c=a,a=b,b = c;

b)如果(a & gtb){c=a,a=b,b = c;}

c)如果(a & gtb)c = a;a = b;b = c;

d)如果(a & gtb){ c = a;a = b;b = c;}

A B C D

18.以下是可用的程序。

# include & ltstdio.h & gt

主()

{ int c=0,k;

for(k = 1;k & lt3;k++)

开关(k)

{默认值:c+= k;

案例二:c++;打破;

情况四:c+= 2;打破;

}

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

}

程序运行后的输出结果是

A)3

B)5

C)7

D)9

A B C D

19.(19)在下面的程序段中,还有语句:k = a >;b?(b & gtc?1:0):0;相同的功能是

a)如果((a & gtb)和amp& amp(b & gtc))k = 1;

否则k = 0;

b)如果((a & gtb)| |(b & gt;c))k = 1;

否则k = 0;

c)如果(a & lt= b)k = 0;

else if(b & lt;= c)k = 1;

d)如果(a & gtb)k = 1;

else if(b & gt;c)k = 1;

否则k = 0;

A B C D

20.(20)有以下程序

# include & ltstdio.h & gt

主()

{ char s[]= { " 012xy " };int i,n = 0;

for(I = 0;s[i]!=0;i++)

if(s[I]& gt;一个'和amp& amps[I]& lt;= ' z ')n++;

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

}

程序运行后的输出结果是

A)0

B)2

C)3

D)5

A B C D

21.

(21)有以下程序。

# include & ltstdio.h & gt

主()

{ int n=2,k = 0;

而(k++ & amp;& ampn++ & gt;2);

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

}

程序运行后的输出结果是

A)0 2

B)1 3

C)5 7

D)1 2

A B C D

22.

(22)有以下定义语句,编译时会出现编译错误。

a)char a = ' a ';

b)char a = ' \ n ';

c)char a = ' aa ';

d)char a = ' \ x2d ';

A B C D

23.

(23)有以下程序

# include & ltstdio.h & gt

主()

{ char c1,C2;

c 1 = ' A '+' 8 '-" 4 ";

C2 = ' A '+' 8 '-' 5 ';

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

}

已知字母A的ASCII码是65,程序运行后的输出结果是

阿)东,68

69岁

英、德

d)输出没有固定值。

A B C D

24.

(24)有以下程序

# include & ltstdio.h & gt

无效资金(利息)

{ int d = 2;

p = d++;

printf("%d ",p);

}

主()

{ int a = 1;

好玩(一);

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

}

程序运行后的输出结果是

A)32

B)12

C)21

D)22

A B C D

25.

(25)以下函数findmax旨在查找数组中的最大值,并将其作为函数值返回。

但是程序出现了错误,导致无法实现预定的功能。

#定义MIN -2147463647

int findmax(int x[],int n)

{ int i,max

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

{ max = MIN

if(max & lt;x[I])max = x[I];

}

返回max

}

错误的原因是

a)定义语句int i,max不赋值。

b)赋值语句max = MIN最大值不应分配给最小值。

c)声明if(最大

d)赋值语句max = MIN把它放在错误的地方

A B C D

26.

(26)有以下程序

# include & ltstdio.h & gt

主()

{ int m=1,n=2,* p = & ampm,* q = & ampn,* r;

r = p;p = q;q = r;

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

}

程序运行后的输出结果是

a)1.2,1.2

B)1,2,2,1

c)21

D)2,1,1,2

A B C D

27.

(27)如果有定义的语句:int a[4][10],*p,* q[4];和0

A)p=a

B)q[i]=a[i]

C)p=a[i]

p = & amp[2][1]

A B C D

28.

(28)有以下程序

# include & ltstdio.h & gt

# include & ltstring.h & gt

主()

{ char str[][20]={ "一个*世界","一个*梦想!"},* p = str[1];

printf("%d,",strlen(p));

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

}

程序运行后的输出结果是

A)9、一个*世界

B)9,一个*梦想!

C)10,一个*梦!

D)10,一个*世界

A B C D

29.

(29)有以下程序

# include & ltstdio.h & gt

主()

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

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

开关(i%2)

{案例0:

开关(a[i]%2)

{ case 0:a[I]++;打破;

案例1:a[I]-;

}破;

案例1:a[I]= 0;

}

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

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

printf(" \ n ");

}

程序运行后的输出结果是

A)3 3 4 4

B)2 0 5 0

C)3 0 4 0

D)0 3 0 4

A B C D

30.

(30)有以下程序

# include & ltstdio.h & gt

# include & ltstring.h & gt

主()

{ char a[10]= " ABCD ";

printf("%d,%d\n ",strlen(a),sizeof(a));

}

程序运行后的输出结果是

a)7.4

b)410

C)8,8

10,10

A B C D

31.

(31)以下是C语言中字符数组的描述,其中错误为

a)不能用赋值语句将字符串赋给字符数组名。

b)可以使用input语句将整个字符串输入到字符数组中。

c)字符数组中的内容不一定是字符串。

d)字符数组只能保存字符串。

A B C D

32.

(32)以下功能的功能是

乐趣(char *a,char *b)

{ while((*b=*a)!= ' \ 0 '){ a++;b++;} }

A)将由A表示的字符串分配给由b表示的空格

b)使指针b指向a所指的字符串。

c)将由A表示的字符串与由b表示的字符串进行比较

d)检查A和b表示的字符串中是否有' \0 '

A B C D

33.

(33)提供以下功能:

void fun(int n,char *s){……}

下列函数指针的定义和赋值是正确的。

a)void(* pf)();pf =好玩;

b)void * pf();pf =好玩;

c)void * pf();* pf =好玩;

D)void (*pf)(int,char);pf = & amp好玩;

A B C D

34.(34)有以下程序

# include & ltstdio.h & gt

int f(int n);

主()

{ int a=3,s;

s = f(a);s = s+f(a);printf("%d\n ",s);

}

整数f(整数n)

{ static int a = 1;

n++ = a++;

返回n;

}

程序运行后的输出结果是

A)7

B)8

C)9

D)10

A B C D

35.

(35)有以下程序

# include & ltstdio.h & gt

#定义f(x) x*x*x

主()

{ int a=3,s,t;

s = f(a+1);t = f((a+1));

printf("%d,%d\n ",s,t);

}

程序运行后的输出结果是

A)10,64

10,10

64,10

D)64,64

A B C D

36.

(36)在下列结构的定义语句中,错误的是

a)结构顺序{ int x;int y;int z;};结构订单a;

b)结构顺序{ int x;int y;int z;}结构顺序a;

c)结构顺序{ int x;int y;int z;} n;

d)struct { int x;int y;int z;} a;

A B C D

37.(37)有一个定义:char * c;下面的选项可以使字符指针C正确地指向一个字符串。

a)char str[]= " string ";c = str

B) scanf("%s ",c);

c)c = getchar();

d)* c = " string ";

A B C D

38.

(38)有以下程序

# include & ltstdio.h & gt

# include & ltstring.h & gt

结构A

{ int a;char b[10];双c;};

struct A f(struct A t);

主()

{ struct A a={1001,"张达",1098.0 };

a = f(a);printf("%d,%s,%6.1f\n ",a.a,a.b,a . c);

}

结构f(结构A t)

{ t . a = 1002;strcpy(t.b,“常戎”);t . c = 1202.0;return t;}

程序运行后的输出结果是

a)张达1001,1098.0

B)1002,张达,1202.0

C)1001,常戎,1098.0

d)常戎1002,1202.0

A B C D

39.

(39)有以下程序

int r = 8;

printf("%d\n ",r & gt& gt1);

输出结果是

A)16

B)8

C)4

D)2

A B C D

40.

(40)下列关于C语言文件的说法正确的是

A)一个文件由一系列一次排列的数据组成,只能构成一个二进制文件。

b)文件由结构序列组成,可以是二进制文件,也可以是文本文件。

c)文件由数据序列组成,可以是二进制文件,也可以是文本文件。

d)文件由字符序列组成,只能是文本文件。

A B C D

二、填空(每空2分,* * * 30分)

1.(1)如果一棵二叉树有5个度为2的节点和3个度为1的节点,那么该二叉树有1个节点。

输入不带空格的答案:

2.

(2)程序流程图中的菱形框代表2。

输入不带空格的答案:

3.

(3)软件开发过程主要分为需求分析、设计、编码和测试四个阶段。其中,三个阶段

生成“软件需求说明书”。

输入不带空格的答案:

4.

(4)在数据库技术中,实体集之间的关系可以是一对一或一对多或多对多,所以“生”

与“选修课”的联系是4。

输入不带空格的答案:

5.

(5)人员基本信息一般包括:身份证号、姓名、性别、年龄等。它可以用作主键。

现在是5点

输入不带空格的答案:

6.

(6)如果有定义的语句:int a = 5;,表达式a++的值是6。

输入不带空格的答案:

7.

(7)如果有语句double x = 17;int y;执行y=(int)(x/5)%2时;之后,y的值是7

输入不带空格的答案:

8.

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

# include & ltstdio.h & gt

主()

{ int x = 20

printf("%d ",0 & ltx & lt20);

printf("%d\n ",0 & ltx & amp& ampx & lt20);

}

输入不带空格的答案:

9.

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

# include & ltstdio.h & gt

主()

{ int a=1,b = 7;

做{

b = b/2;a+= b;

} while(b & gt;1);

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

}

输入不带空格的答案:

10.

(10)具有以下过程。

# include & ltstdio.h & gt

主()

{ int f,f1,f2,I;

f 1 = 0;F2 = 1;

printf("%d %d ",f1,F2);

for(I = 3;我& lt=5;i++)

{ f = f 1+F2;printf("%d ",f);

f 1 = F2;F2 = f;

}

printf(" \ n ");

}

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

输入不带空格的答案:

11.

(11)有如下程序。

# include & ltstdio.h & gt

int a = 5;

无效资金(int b)

{ int a = 10;

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

}

主()

{ int c = 20

乐趣(c);a+= c;printf("%d\n ",a);

}

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

输入不带空格的答案:

12.

(12)已定义。

结构人

{ int ID字符名称[12];} p;

请发送scanf("%d ",12);语句使其完整,这样它就可以是结构变量p

成员ID正确读取数据。

输入不带空格的答案:

13.

(13)有以下步骤。

# include & ltstdio.h & gt

主()

{ char a[20]=“你好吗?”,b[20];

scanf("%s ",b);printf("%s %s\n ",a,b);

}

当程序运行时,从键盘输入:你好吗?& lt输入>

输出结果是13。

输入不带空格的答案:

14.

(14)有以下步骤。

# include & ltstdio.h & gt

typedef结构

{ int num双s;} REC

void fun 1(REC x){ x . num = 23;x.s = 88.5}

主()

{ REC a={16,90.0 };

fun 1(a);

printf("%d\n ",a . num);

}

输入不带空格的答案:

15.

(15)有以下步骤。

# include & ltstdio.h & gt

乐趣(int x)

{ if(x/2 & gt;0)好玩(x/2);

printf("%d ",x);

}

主()

{趣味(6);printf(" \ n ");}

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

输入不带空格的答案: