找二级C语言笔试题库

2006年4月二级C语言笔试试题

一道选择题((1)-(10)各2分,(11)-(50) 1分各* * 60分)。

以下四个选项(a),b),c)和d)只有一个是正确的。请在答题卡相应位置涂上正确选项,答案不在试卷上计分。

1)下列选项中不属于结构化编程方法的是

a)从上到下

b)逐步完善

c)模块化

d)可重复使用

2)两个或两个以上模块之间关联的紧密程度称为

a)耦合度

b)凝聚力

c)复杂性

d)数据传输特性

3)下列说法是正确的。

a)软件测试应由程序开发人员完成。

b)程序调试完毕后,一般不需要再次测试。

c)软件维护仅包括程序代码的维护。

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

4)按照“后进先出”的原则组织数据的数据结构是

a)队列

b)堆栈

c)双向链表

d)二叉树

5)下列说法是正确的。

A)线性链表是线性表的链式存储结构。

b)栈和队列是非线性结构。

c)双向链表是非线性的。

d)只有根节点的二叉树是线性结构。

6)对于下面的二叉树

后序遍历的结果如下

A) ABCDEF

B) DBEAFC

ABDECF

D) DEBFCA

7)在深度为7的完全二叉树中,叶节点的数量是

A)32

B)31

64人

D)63

8)“商品”和“顾客”这两个实体集之间的关系一般是

a)一对一

b)一对多

c)多对一

d)多对多

9)在E-R图中,用来表示实体的图形有

a)矩形

b)椭圆形

c)菱形

d)三角形

10)数据库DB、数据库系统DBS和数据库管理系统DBMS之间的关系是

a)数据库包含数据库和数据库管理系统。

B)DBMS包含DB和DBS。

c)数据库系统包括数据库和数据库管理系统。

d)没关系。

11)以下是非法用户标识符

A)j2_KEY

b)双倍

C) 4d

D) _8_

12)以下是非法的数值常数

A)011

B)lel

C) 8.0 E0.5

D) 0xabcd

13)以下是非法字符常量

A)'\018 '

B '\ " '

C) '\\ '

D) '\xcc '

14)表达式3.6-5/2+1.2+5%2的值为

A)4.3

B) 4.8

C) 3.3

D) 3.8

15)下列可以正确定义字符串的语句是

a)char str[]= { ' \ 064 ' };

b)char str = " \ x43 ";

c)char str = ";

d)char str[]= " \ 0 ";

16)下列数组定义中错误的是

a)int x[][3]= { 0 };

B) int x[2][3]={{1,2},{3,4},{5,6 } };

C) nt x[][3]={{1,2,3},{4,5,6 } };

D)int x[2][3]={1,2,3,4,5,6 };

17)如果你想从键盘上读取一个包含空格字符的字符串,你应该使用函数。

A)getc()

b)获取()

C) getchar()

d)扫描函数()

18)在接下来的四个节目中,完全正确。

a)#包含B)#包含

main();主()

{/*编程*/{/*/编程/*/

printf("编程!\ n ");} printf("编程!\ n ");}

c)#包括D)包括

主()主()

{/*/*编程*/*/{/*编程*/

printf("编程!\ n ");} printf("编程!\ n ");}

19)如果定义:float x = 1.5;int a=1,b=3,c = 2;正确的switch语句是

a)开关(x) B)开关((int)x);

{ case 1.0:printf(" * \ n ");{ case 1:printf(" * \ n ");

案例2.0:printf(" * * \ n ");}案例二:printf(" * * \ n ");}

c)开关(a+b) D)开关(a+b)

{ case 1:printf(" * \ n ");{ case 1:printf(* \ n ");

case 2+1:printf(" * * \ n ");}案例c:printf(" * * \ n ");}

20)如果每个选项中使用的变量已经正确定义,则通过return语句在fun函数中返回一个函数值。下列选项中错误的程序是

A)main() B) float fun(int a,int b){……}

{……x=fun(2,10);……} main()

float fun(int a,int b){……} {……x=fun(i,j);……}

C)float fun(int,int);d)主要()

main() { float fun(int i,int j);

{……x=fun(2,10);……} ……x=fun(i,j);……}

float fun(int a,int b){……} float fun(int a,int b){……}

21)在下面给出的表达式中,与while(E)中的(E)不等价的表达式是

a)(!E=0)

b)(E & gt;0 | | E & lt0)

C) (E==0)

D) (E!=0)

22)要求通过while循环连续读取字符,读到字母n时结束循环。如果变量已经被正确定义,下面正确的程序段是

A) while((ch=getchar())!='N') printf("%c ",ch);

B) while(ch=getchar()!='N') printf("%c ",ch);

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

d)while((ch = getchar())= = ' N ')printf(" % c ",ch);

23)定义了以下功能。

利息基金(利息*利息)

{ return * p;}

fun函数的返回值是

a)不确定值

b)一个整数

c)存储在形式参数p中的值

d)形参p的地址值

24)如果有语句:double *p,a;那么可以通过scanf语句将数据正确读入输入项的程序段是

a)* p = & amp;a;scanf("%lf ",p);

b)* p = & amp;a;scanf("%f ",p);

p = & ampa;scanf("%lf ",* p);

p = & ampa;scanf("%lf ",p);

25)以下是可用的结构描述和变量定义。如图所示,指针p、Q、r Q、R分别指向链表中三个连续的节点。

结构节点

{

char数据;

结构节点* next

}*p、*q、* r;

现在需要交换Q和R所指节点的位置,同时保持链表的连续性。下列语句不能完成此操作是

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

B) p->next = r;q->;next = r-& gt;接下来;r。next = q;

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

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

26)有以下程序。

结构st

{ int x;int * y;}*pt:

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

struct st c[2]={10,a,20,b };

pt = c;

在下面的选项中,表达式的值是11。

a)* pt-& gt;y

b)pt-& gt;x

c)++ pt-& gt;x

d)(p t++)-gt;x

27)设fp是一个指向二进制文件的指针,读取这个文件的结尾,那么函数feof(fp)的返回值是

A)EOF

b)非零值

C) 0

d)空

28)有如下陈述

int a=1,b=2,c;

c=a^(b<;& lt2);

执行后,c的值为

A)6

B) 7

C) 8

D) 9

29)有以下程序

#包括

主()

{

char c1,c2,c3,c4,c5,C6;

scanf("%c%c%c%c ",& ampc 1;c2和ampc3和ampC4);

C5 = getchar();C6 = getchar();

putchar(c 1);putchar(C2);

printf("%c%c\n ",c5,C6);

}

程序运行后,如果你从键盘输入(从1列开始)

123<输入>

45678 & lt输入>

那么输出结果是

A)1267

B)1256

C) 1278

D)1245

30)如果有以下程序

主()

{ int y = 10;

while(y--);printf(" y = % d \ n " y);

}

程序运行后的输出结果是

A)y=0

B)y=-1

C) y=1

D)while构成了一个无限循环。

31)有以下步骤

主()

{

int a=0,b=0,c=0,d = 0;

if(a = 1)b = 1;c = 2;

else d = 3;

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

}

程序输出

a)0.1.2,0

B) 0,0,0,3

C)1,1,2,0

d)编译错误

32)有以下程序

主()

{

int i,j,x = 0;

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

{ x++;

for(j = 0;j & lt=3;j++)

{

如果(j%2)继续;

x++;

}

x++;

}

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

}

程序执行后的输出是

A)x=4

B) x=8

C) x=6

D) x=12

33)有以下程序

int fun 1(duo ble a){ return a * = a;}

int fun2(双x,双y)

{

双a=0,b = 0;

a = fun 1(x);b = fun 1(y);return(int)(a+b);

}

主()

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

程序执行后,变量W中的值为

A)5.21

B) 5

C) 5.0

D) 0.0

34)有以下程序

主()

{

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

for(I = 0;我& lt3;i++) printf("%d ",t[2-I][I]);

}

程序执行后的输出是

A)7 5 3

B) 3 5 7

C)3 6 9

D)7 5 1

35)有以下程序

fun(char p[][10])

{int n=0,I;

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

if(p[I][0]= = ' T ')n++;

返回n;

}

主()

{

char str[][10]={"Mon "," Tue "," Wed "," Thu "," Fri "," Sat "," Sun " };

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

}

程序执行后的输出是

A)1

B) 2

C)3

D) 0

有以下程序

主()

{

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

for(I = 0;我& lt9;I+= 2)s+= *(t+I);

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

}

程序执行后的输出是

A)45

B)20

25人

D)36

37)有以下程序

void fun1(char *p)

{

char * q;

q = p;

while(*q!='\0')

{(* q)++;q++;}

}

主()

{ char a[]={"Program"},* p;

p = & ampa[3];fun 1(p);printf("%s\n ",a);

}

程序执行后的输出是

P rohsbn

B)Prphsbn

c)方案b

d)程序

38)有以下程序

void swap(char *x,char *y)

{

char t;

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

}

主()

{

char *s1="abc ",* S2 = " 123 ";

swap(s1,S2);printf("%s,%s\n ",s1,S2);

}

程序执行后的输出是

A)123,abc

B) abc,123

公元前1年,a23年

D) 321,cba

39)有以下程序

利息基金

{

if(n==1)返回1;

其他

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

}

主()

{

int x;

scanf("%d ",& ampx);x = fun(x);printf("%d\n ",x);

}

程序执行时,向变量X输入10,程序输出结果为

A)55

B) 54

65人

D) 45

40)有以下程序

int fun(int x[],int n)

{静态int sum=0,I;

for(I = 0;I sum+= x[I];

返回总和;

}

主()

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

s=fun(a,5)+fun(b,4);printf("%d\n ",s);

}

程序执行后的输出是

A)45

B)50

60人

D)55

41)有以下步骤

主()

{

工会

char ch[2];

int d;

} s;

s . d = 0x 4321;

printf("%x,%x\n ",s.ch[0],s . ch[1]);

}

在16位编译系统上,程序执行后的输出是

a)21.43

B)43,21

43,00

21.00

42)有以下程序

主()

{

char *p[]={"3697 "," 2584 " };

int i,j;long num = 0;

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

{ j = 0;

while(p[i][j]!='\0')

{ if((p[I][j]-' 0 ')% 2)num = 10 * num+p[I][j]-' 0);

j+= 2;

} }

printf(" % d \ n " num);

}

程序执行后的输出是

A)35

B)37

C)39

3975

43)执行以下程序后,test.txt文件的内容为(如果文件能正常打开)。

#包括

主()

{

FILE * fp

char *s1="Fortran ",* s2 = " Basic

if((fp=fopen("test.txt "," wb"))==NULL)

{ printf("打不开test.txt文件\ n ");退出(1);}

fwrite(s1,7,1,FP);/*将地址s1中的7个字符写入fp指示的文件*/

fseek(fp,0L,SEEK _ SET);/*文件位置指针移动到文件的开头*/

fwrite(s2,5,1,FP);

fclose(FP);

}

a)基础扫描

b)基础Fortran

基本

D)FortranBasic

44)下列说法中错误的是

a)编译C语言源程序,生成带后缀的目标程序。obj。

B)C语言只有经过编译和链接步骤,才能形成真正可执行的二进制机器指令文件。

C)用C语言编写的程序称为源程序,以ASCII码的形式存储在文本文件中。

d)C语言中的每一条可执行语句和不可执行语句,最终都会转换成二进制的机器指令。

45)下列说法中错误的是

a)具有正确算法的程序将最终结束。

b)具有正确算法的程序可以没有输出。

c)具有正确算法的程序可以没有输入。

d)具有正确算法的程序对于相同的输入必须具有相同的结果。

46)下列说法中错误的是

A)C程序必须由一个或多个函数组成。

b)函数调用可以作为独立语句存在。

c)如果函数有返回值,必须通过return语句返回。

d)函数参数的值也可以返回相应的实参。

47)有以下定义和陈述

char str[20]="Program ",* p;

p = str

以下陈述中正确的是

A)*p等于str[0]中的值

B)str和P是一模一样的类型。

C)C)str数组的长度等于p指向的字符串的长度。

d)数组str中存储的内容与指针变量p中存储的内容相同。

48)下列说法中错误的是

a)C程序中的#include和#define行不是C语句。

b)除逗号运算符外,赋值运算符的优先级最低。

c)在c程序中,j++;+;是一个赋值语句

d)在C程序中,+、-、*、/、%是算术运算符,可用于整数和实数运算。

49)下列说法是正确的。

a)预处理命令行必须位于C源程序的开头。

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

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

d)C语言的预处理无法实现宏定义和条件编译的功能。

50)下列说法中错误的是

a)可以通过typedef添加新类型。

B) typedef可用于以新名称表示现有类型。

c)用typedef定义新的类型名后,原来的类型名仍然有效。

D) typedef可用于别名各种类型,但不能用于变量。

二:填空(每空2分,***40分)

请将每一个空白正确答案写在答题卡上序号从[1]到[20]的横线上,答案不在试卷上计分。

1)用于对长度为10的线性表进行排序。最坏的情况下,比较的次数是_ _ _ _ _ [1] _ _ _ _ _ _ _。

2)在面向对象方法中,_ _ _ _ _ _ _[2]_ _ _ _ _描述了一组具有相似属性和操作的对象。

3)在关系模型中,数据被看作一个二维表,每个二维表称为一个__[3]_____。

4)程序测试分为静态分析和动态测试,其中_ _ _ _ _ _ _ _[4]是指不执行程序,只检查程序文本,通过阅读和讨论来分析和发现程序中的错误。

5)数据独立分为逻辑独立和物理独立。当数据的存储结构发生变化时,其逻辑结构可以保持不变。所以基于逻辑结构的应用是不需要修改的,这叫做_ [5] _ _ _ _ _。

6)如果变量A和B已经定义为int类型,赋值为21和55,要求用printf函数以a = 21和b = 55的形式输出,请写一个完整的output语句__[6]____。

7)下面这个程序是用来判断A,B,C三者能否构成一个三角形。如果是可以输出,如果否可以输出。当A、B、C输入三角形的三条边时,需要同时满足三个条件才能判定A、B、C能构成三角形:A+B >;c,a+c & gt;b,b+ c & gt;答.请填空。

主()

{

浮动a、b、c;

scanf("%f%f%f ",& amp一,& ampb & amp;c);

if(_ _[7]_ _)printf(" YES \ n ");/* A,B,C可以组成一个三角形*/

else printf(" NO \ n ");/* A、B和C不能形成三角形*/

}

8)以下程序的输出结果是_ _[8]_ _ _ _ _ _ _

主()

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

for(I = 0;我& lt3;i++)s+= a[I][I]+a[I][3-I-1];

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

}

9)运行以下程序时,输入abcd,程序输出结果为:_[9]____。

insert(字符串[])

{ int I;

I = strlen(str);

while(I & gt;0)

{ str[2 * I]= str[I];str[2 * I-1]= ' * ';I-;}

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

}

主()

{ char str[40];

scanf("%s ",str);插入(字符串);

}

10)以下程序的运行结果是:_ _ _[10]_ _ _

fun(int t[],int n)

{ int i,m;

if(n==1)返回t[0];

其他

如果(n & gt=2) {m=fun(t,n-1);返回m;}

}

主()

{

int a[]={11,4,6,3,8,2,3,5,9,2 };

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

}

11)TC系统目录(文件夹)下同时有两个C程序文件T18.c和myfun.c,其中T18.c文件如下:

#包括

#包含“myfun.c”

主()

{ fun();printf(" \ n ");}

myfun.c文件如下:

虚空乐趣()

{ char s[80],c;int n = 0;

while((c=getchar())!= ' \ n ')s[n++]= c;

n-;

while(n & gt;=0) printf("%c ",s[n-]);

}

当编译连接通过,程序T18运行时,输入Thank!输出结果是:_ _ _[11]。

12)下面函数fun的作用是返回str指示的字符串中以参数C中的字符开始的后续字符串的第一个地址。比如str表示的字符串是Hello!,c中的字符是e,那么函数返回字符串:ello!第一个地址。如果str引用的字符串为空或者不包含C中的字符,则该函数返回NULL。请填空。

char *fun(char *str,char c)

{ int n = 0;char * p = str

如果(p!=空)

while(p[n]!= c & amp& ampp[n]!= ' \ 0 ')n++;

if(p[n]=='\0 '返回NULL

return(_[12]_);

}

13)下面这个程序的作用是:输出100以内(不包括100)所有能被3整除的个位数为6的整数。请填空。

主()

{ int i,j;

for(I = 0;__[13]__;i++)

{ j = I * 10+6;

if(_[14]_ _ _ _ _ _ _)继续;

printf("%d ",j);

}

}

14)下面的isprime函数的作用是判断形参A是否为素数,函数返回1,否则返回0。请填空。

int isprime(int a)

{ int I;

for(I = 2;我& lt= a/2;i++)

if(a % I = = 0)_ _ _[15]_ _ _;

__[16]___;

}

15)下面这个程序的作用是输入任意一个整数到n,然后输出n行以大写字母a开头的三角形字符数组图形,比如输入整数5时(注意:n不得大于10),程序运行结果如下:

A B C D E

F G H I

J K L

M N

O

请填写空格以完成该计划。

主()

{ int i,j,n;char ch = ' A

scanf("%d ",& ampn);

如果(n & lt11)

{

for(I = 1;我& lt= n;i++)

{ for(j = 1;j & lt= n-I+1;j++)

{ printf("%2c ",ch);

___[17]____;

}

18

}

}

else printf("n太大!\ n ");

printf(" \ n ");

}

16)下面这个程序中fun的作用就是用图中的前导节点组成一个单向链表,在节点数据字段放一个两个字符的字符串。disp的作用是显示和输出单链表中所有节点的字符串。请填写空格以完成函数disp。

#包括

Typedef结构节点/*链表节点结构*/

{ char sub[3];

结构节点* next

}节点;

Node fun(char s) /*创建一个链表*/

{ …… }

空显示(节点*h)

{

node * p;

p = h-& gt;接下来;

While(19)

{

printf("%s\n ",p-& gt;子);p = 20}

}

主()

{

Node * hd

HD = fun();disp(高清);printf(" \ n ");

}

回答

一、选择题

1-10 : DADBA DCDAC

11-20:CCADD BBBCA

21-30:CABDD CBDDD

31-40:DBCBB CACAC

41-50:ACADB DADBA

第二,填空

1、45

2.班级

3.关系

4.静态分析

5.身体独立

6、printf("a=%d,b=%d ",a,b)

7 、( a+b & gt;c)和amp& amp(a+c & gt;b)和amp& amp(b+ c & gt;答

8、30

9、a*b*c*d*

10、11

11、!克纳特

12,p+n或str+n

13、我& lt=9或I

14、j%3!=0

15、返回0

16、返回1

17、ch=ch+1

18、printf("\n ")

19、p!=空

20、p->然后