国家二级C语言机试(选择题)模拟试卷13_第1页
国家二级C语言机试(选择题)模拟试卷13_第2页
国家二级C语言机试(选择题)模拟试卷13_第3页
国家二级C语言机试(选择题)模拟试卷13_第4页
国家二级C语言机试(选择题)模拟试卷13_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C语言机试(选择题)模拟试

卷第1套

一、选择题(本题共25题,每题1.0分,共25分。)

1、深度为5的完全二叉树的结点数不可能是()。

A、15

B、16

C、17

D、18

标准答案:A

知识点解析:对于满二叉树,叶子结点的数目等于2nLn为深度,这里就是

24=16O

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

A、二分查找法只适用于顺序存储的有序线性表

B、二分查找法适用于任何存储结构的有序线性表

C、二分查找法适用于有序循环链表

D、二分查找法适用于有序双向链表

标准答案:A

知识点解析:二分查找法(又称对分查找法)只适用于顺序存储的有序表。在此所说

的有序表是指线性表的中元素按值非递减排列(即从小到大,但允许相邻元素值相

等)C

3、以下程序运行后的输出结果是()。#include<stdio.h>main(){inti=0,j=0,

k=0,x=35;if(i)x-;elseif(j);if(k)x=3;elsex=4;prinff("%d\nn,x);}

A、4

B、34

C、3

D、35

标准答案:A

知识点解析:本题是两个并列的if语句。当imi=0;j=0,k=0,x=35时,i的逻辑值

为0,故第一个if语句的条件为假,执行else操作。又因j=0,故第二条if语句

if(j)的条件仍为假,不执行任何操作。接着顺序执行至if(k)语句,由于k=0,此if

语句的条件仍为假,执行其后的else语句,x=4,故最后x的值为4。

4、设某棵树的度为3,其中度为3、2、1的结点个数分别为3、0、4o则该树中的

叶子结点数为

A、7

B、8

C、6

D、不可能有这样的树

标准答案:A

知识点解析:树的度是由一棵树中,最大的结点的度称为“树的度”。根据题目可知

本树中没有度为2的结点。树的总结点=(度1*个数+度2*个数…)+1,这里我们设

总结点数为n,那么n=3*3+2*0+l*4+l=14。树的叶子结点数等于总结点减去所有

度不为0的结点,也就是14.3-4=7o

5、下列排序方法中,最坏情况下比较次数最少的是

A、冒泡排序

B、简单选择排序

C、直接插入排序

D、堆排序

标准答案:D

知识点解析:冒泡排序、简单选择排序和直接插入排序法在最坏的情况下比较次数

为:n(n-l)/2o而堆排序法在最坏的情况下需要比较的次数为O(nlog2n)。其中

堆排序的比较次数最少。

6、表达式3.6-5/2+1.2+5%2的值是

A、4.8

B、3.3

C、3.8

D、4.3

标准答案:C

知识点解析:表达式的计算过程为:3.6-5/2+1.2+5%

2=3.6.2+1.2+1=3.8o此题要注意5/2的结果是2,而不2.5,因为除法运

算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。

7、下列选项中不符合良好程序设计风格的是

A、源程序耍文档化

B、数据说明的次序要规范化

C、避免滥用goto语句

D、模块设计要保证高耦合、高内聚

标准答案:D

知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻

辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可

以认为,著名的“清晰第一、效率第二''的论点已成为当今主导的程序设计风格。良

好的程序设计风格主要应注重和考虑下列几个因素:①源程序文档化,包括下列

三个方面:A)符号的命名应具有一定的含义;B)正确的注释能够帮助读者理解程

序;。视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。

②数据说明的方法,包括下列三个方面:A)数据说明的次序规范化;B)说明语句

中变量安排有序化;C)使用注释来说明复杂数据的结构。③语句的结构应该简单

直接,不应该为提高效率而把语句复杂化。④输入和输出方式和风格应尽可能方

便用户的使用。

8、以下关于逻辑运算符两侧运算对象的叙述中正确的是

A、只能是整数0或非0整数

B、可以是结构体类型的数据

C、可以是任意合法的表达式

D、只能是整数。或1

标准答案:C

知识点解析:逻辑运算符两侧的运算对象叮以是任意合法的表达式。逻辑表达式的

运算结果或者为1(“真”),或者为0(“假

9、有以下程序main。{chara,b,c,d;Scanf("%C%c",&a,&b);

c=getchar();d=getchar();primf("%c%c%c%c\n”,a,b,c,d);)当执行程序

时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)12

34则输出结果是

A、12

B、1234

C、123

D、1234

标准答案:C

知识点解析:scanf和getchar函数分别从键盘上读入一个字符,因此输入12空格

34,则变量a中存放的为1,b中存放2,c中存放空格,d中存放3。

10、不合法的C语言常量是()。

A、3,141

B、'314'

C、314

D、’\x7G,,

标准答案:A

知识点解析:选项A错误,多了逗号;选项B是字符常量:选项C是整型常量:

选项D是字符常量。

11、有以下函数:intaaa(char*s){char*t=s:while(+t++);t----:return(t—

s);}以下关于aalt函数功能叙述正确的是()。

A、将串s复制到串t

B、比较两个串的大小

C、求字符串s的长度

D、求字符串s所占字节数

标准答案:C

知识点解析:本题重点考查的知识点是while循环语句的应用。aaa.()函数中,首

先定义了一个字符指针I指向形参s,然后通过一个while循环让指针I不断递增,

直到I指向字符串结束标识处。当I指向结束标识处时,由了后缀++运算符的原

因,它还会被再递增1,所以接下来的t一语句让它回到束标识处。最后返回I-

s,s还是指向字符串第一个字符处,而[指向了字符串结尾,故返回值为字符串的

长度值,因此C选项正确。

12、若有以下程序:#include<stdio.h>voidfun(mta[J,intn){inti,j,t;

for(i=l;i<n;i+=2)for(j=i+2;j<n;j+=2)if(a[i]>a[j]){t=a[i];a[i]=a[j];

a[j]=t;})main(){intc[10]={10,9,8,7,6,5,4,3,2,1},i;fun(c,

10);for(i=0;i<10;i++)printffr%d,%c[i]);printf八n");}则程序的输出结

果是()。

A、1,10,3,8,5,6,7,4,9,2,

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

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

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

标准答案:D

知识点解析:该题首先对一维数组进行初始化,c[0]到c[9]依次赋值为10到1。

fun(c,10):语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由

小到大排序,最后将排好序的新的一维数组进行输出、故D选项正确。

13、若有代数式。工一1(其中e仅代表自然对数的底数,不是变量),则以下能够正

确表示该代数式的C语言表达式是()。

A、sqrt(fabs(pow(n,x)+exp(X)))

B、sqrt(fabs(pow(n,x)+pow(x,e)))

C、sqrt(abs(nAx+eAx))

D、sqrt(fabs(pow(x,n)+exp(x)))

标准答案:A

知识点解析:B选项中函数pow(x,e)错误,应该直接使用exp(x)函数。C选项中

函数abs(Mx+eAx)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)

参数顺序错误。

14、下面选项中合法的字符常量是

A、X

B、'abc'

C、X

D、、

标准答案:C

知识点解析•:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字

符要用两个“\\”表示一个反斜杠。

15、有以下函数:intfun(char*x,char*y){inin=0;while((*x==*y)&&*x!='\0')

[x++;y++;n++:)returnn:}函数M可能是()。

A、将y所指字符串赋给x所指存储空间

B、查找x和y所指字符串中是否有、0,

C、统计x和y所指字符串中最前面连续相同的字符个数

D、统计x和y所指字符串中相同的字符个数

标准答案:c

知识点。析:本题中由循环条件可知,遇到''0'或X与y所指的字符的值不等中

的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符

个数。

16、设有定义:intk=l,m=2;floatf=7;,则以下选项中错误的表达式是

A、k=k>=k

B、-k++

C、k%int(0

D、k>=f=m

标准答案:c

知识点》析:本题考查了赋值表达式,在赋值表达式中,等号的左边必须是变量,

等号右边可以是变量、表达式或者常星。选项A)是一个赋值表达式;选项B)是一

个表达式:选项C)是计算余数表达式;选项D)错误,等号的左边不是变量。

17、以下选项中不能作为c语言合法常量的是

A、,cd'

B、0.le+6

C、\a

Aoir

标准答案:A

知识点解析:常量指的是在程序的运行过程中,其值不能被改变的量.在C语言

中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项B)0.le+6是

用指数形式表示的实型常量。在C语言中,用以“e”或“E”后一个整数来表示以10

为底的某数。以用这种形式表示实型常量时要注意C语言的语法规定,字母e或E

之前必须要有数字,且e或E后面的指数必须为整数,并且在字母e或E的前后以

及数字之间不得插入空格。选项C)中用双引号括起来表示的字符串“\a"。选项D)

中、011'表示用单引号括起来的转义字符八制进数OIK选项A)表示的字符常量

是非法的,在用单引号表示的字符常量中,只能包含一个字符,而选项A)中包含

两个字符。

18、以下叙述中正确的是

A、由&&构成的逻辑表达式与由||构成的逻辑表达式都有“短路”现象

B、C语言的关系表达式:0<x

C、逻辑“非”(即运算符!)的运算级别是最低的

D、逻辑“或”(即运算符|)的运算级别比算术运算要高

标准答案:A

知识点解析:逻辑表达式的运算比较复杂,有短路现象,也就是首先计算“逻辑与”

或者“逻辑或”运算的第一个运算量的值,根据表达式的值决定是否进行第二个量的

值的计算。“逻辑与”和“逻辑或”运算低于关系运算和算术运算。但是“逻辑非''运算

却高于算术运算。

19>有以下程序#includemain(){inta=0,b=0;/*给a赋值a=10;b=20;给b赋值*/

printf("a+b=%d\n",a+b);输出计算结果*/}程序运行后的输出结果是

A、出错

B、a+b=30

C^a+b=10

D、a+b=O

标准答案:D

知识点解析:注释语句可以在一行也可以在多行,用/*……*/或〃表示,。它不参与程

序的运行,所以a与b的值仍然为0,所以打印的结果为a+b=00

20、有以下程序#includcmain(){inti=1,k=0;for(;i<6;){switch(i%3){case0:

k++;case1:k++;break;case2:k++;continue;}i+=l;}printf("%d\n*\k);}程序的运行

情况是()“

A、形成无限循环

B、输出6

C、输出5

D、输出4

标准答案:A

知识点解析:break语句用于循环体,可以跳出当前层循环,continue语句的作用

则是跳过当前循环层余下未执行的语句,继续执行下一次循环。在该程序中当i为

2的时候执行语句"case2:k++;continue;”跳过了i自加语句"i+=l;”,所以i值不再

变化,程序陷入死循环,答案选A.

21、有下列程序:inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=

6;t+=a++;)else{inta=7;t+=a++;)returnt+a++;}main(){ints=

a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序运行后的输出

结果是

A、28

B、24

C、32

D、36

标准答案:A

知识点解析:程序中定义了全局整型变量a=4。在intf(inln)函数中定义了局部静

态整型变量并进行了初始化即staticinta=5。在intf(intn)函数中对n是否是偶数

进行判断,如果n是奇数,则函数的返回值为11,局部静态整型变量a=6;如果

n是偶数,则函数的返回值为12,局部静态整型变量a=6。所以在main。函数中

循环首先执行s+=f(O)语句,而f(0)返回值12,所以第一次循环结束s的值等于4

+12=16:第二次开始执行f(l)时,在f(l)中执行if(n%2){ima=6;t+=a++;}

和returnt+a++;这两条语句,这时,t=6,a=6(静态局部变量第一次循环后其

值加1值不释放,执行第二次循环量,其值仍有效),所以f(l)的返回值等于12。

再在主函数中执行s+=f(l)语句,即16+12=28。

22>有以下程序#includcintfun1(doublea){return(int)(a*=a);}intfun2(doublex,

doubley)(doublea=0,b=0;a=funl(x);b=fun1(y);return(int)(a+b);}main(){double

\¥»二仙12(1.1,2.0)他6砒”%4.23亚);}程序执行后输出结果是()o

A、5.00

B、5

C、5.21

D、0.0

标准答案:A

知识点解析:考查函数的嵌套调用。

w=fun2(1.1,2.0)=(int)(a+b)=(int)(funl(l.l)+fun1(2.0))=(int)(1.1*1.1+2.0*2.0)=5,所以

答案选A。

23、若变量己正确定义,有以下程序段i=0;doprimf("%d,”j);while(i++);

printf("%d\n”,i);其输出结果是

A、0,0

B、1,1

C、0,1

D、程序进入无限循环

标准答案:c

知识点解析:do…while循环的执行过程如下:①执行do后面的循环体中的语

句。②计算while后一对圆括号中表达式的值。当值为非。时,转去执行步骤

①;当值为。时,执行步骤③。③退出do…while循环。对于本题变量i的初始值

孱于“0”,接着执行do后面鬲循环彳本中的语句,输出变量i的值0。再判断while后

面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已

经变为1,所以再次输巴i的值力”。

24、有以下程序voidfun(char*s){chara[10];main(){char*p="PROGRAMH;

strcpy(a,“STRING");fun(p);s=a;)printf(M%s\n",p);}程序运行后的输出结

果是(此处□代表空格)

A、STRING□□□口

B、PROGRAM

C、STRINGODD

D、STRING

标准答案:B

知识点解析:函数fun的主要功能是把字符串“STRING",存放到字符数组a中,s

指向该字符串,函数调用结束以后,释放s和a指向的空间。主函数调用fun(p),

并不能更改D的值,因此p的指向没有改变。

25、C语言主要是借助以下哪种手段来实现程序模决化

A、定义函数

B、定义常量和外部变量

C、使用丰富的数据类型

D、使用三种基本结构语句

标准答案:A

知识点解析:C语言程序的模块化通过函数来体现,所以选择Ao

国家二级C语言机试(选择题)模拟试

卷第2套

一、选择题(本题共25题,每题1.0分,共25分。)

1、对于循环队列,下列叙述中正确的是

A、队头指针是固定不变的

B、队头指针一定大于队尾指针

C、队头指针一定小于队尾指针

D、队头指针可以大于队尾指针,也可以小于队尾指针

标准答案:D

知识点解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位

置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear

指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列

的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每

进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就

把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可

以小于队尾指针。

2、软件设计中模块划分应遵循的准则是()。

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、局内聚局耦合

标准答案:B

知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适

当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合

理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块

之间的耦合应尽可能的低,模块的内聚度应尽可能的高。

3、有以下程序:#include<stdio.h>main(){intsum=O,x=5;do{sum+=x;)

while(!-------X);printf("%d\n〃,sum);)程序的运行结果是()。

A、0

B、5

C、14

D、15

标准答案:B

知识点解析:先执行do中的表达式sum+=x,则sun尸sum+x=0+5=5,再执行

while中的表达式,结果为0,退出循环,所以运行结果是5。

4、下面4个关于C语言的结论中错误的是()。

A^可以用do...while语句实现的循环一定可以用v/hilc语句实现

B、可以用「or语句实现的循环一定可以用while语句实现

C、可以用while语句实现的循环一定可以用for语句实现

D^do...while语句与while语句的区别仅是关键字“while”出现的位置不同

标准答案:D

知识点解析:本题考查几个循环语句的关系。①do...while语句、while语句、for

语句所实现的循环可以相互替代;②do…while语句和while语句的区别是

do…while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。

5、在数据库的三级模式中,外模式(用户模式或子模式)有()。

A、3个

B、2个

C、1个

D、任意多个

标准答案:D

知识点解析:一个数据库可以有多个外模式(因为用户可有多个),但概念模式和内

模式只能有一个。

6、以下叙述中不正确的是()。

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

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

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

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

标准答案:D

知识点解析:此题考查的是变量的作用范围。选项D中,在一个函数的复合语句

中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数

体内都有效。

7、设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的

是()。

A、float*P=&;x;

B、int*P=(float)x;

C、floatp=&:x;

D、float*B=1024;

标准答案:A

知识点解析:考查指针变量的初始化。只能把对应类型的变量的地址赋值给指针,

选项B错误;定义指针时要加上“”标明该变量为一个指针变量,选项C错误;不

能把一个整数直接赋值给指针变量,选项D错误;所以答案选A。

8、以下各项中,当x为大于1的奇数时,值为0的表达式是()。

A、x%2==0

B、x/2

C、x%2!=0

D、x%2==l

标准答案:A

知识点解析:当x为大于1的奇数时,x%2==0表达式为0,所以答案为A。

9、下列选项中,当x为大于1的奇数时,值为。的表达式是()。

A、x%2==0

B、x/2

C、x%21=0

D、x%2==1

标准答案:A

知识点解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的

奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的

值为真,即loD选项的值为真,即1。

10、数据库系统的核心是

A、数据模型

B、数据库管理系统

C、数据库

D、数据库管理员

标准答案:B

知识点解析:数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责

数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。所以,数

据库管理系统是数据系统的核心。

11、若有定义和语句:inia,b;scanf(”%d,%d,",&a,&B);以下选项中的输入

数据,不能把值3赋给变量a、5赋给变量b的是

A、3,5

B、3,5,

C、3,5

D、3,5,4

标准答案:c

知识点0析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到

输入流中,不能随意加入空格等,否则无法得到正确的输入结果。

12、关于do循环体while(条件表达式);以下叙述口正确的是

A、循环体的执行次数总是比条件表达式的执行次数多一次

B、条件表达式的执行次数总是比循环体的执行次数多一次

C、条件表达式的执行次数与循环体的执行次数无关

D、条件表达式的执行次数与循环体的执行次数一样

标准答案:D

知识点解析:do-while语句先执行语句,后判断表达式的值。故do—while语句

又称“直到型”循环结构°由于是先执行后判断,因比do-while语句的循环语句至

少被执行一次,循环条件至少判断一次。

13、有以下程序段imk=0,a=l,b=2,c=3;k=ac?c:k;执行程序段后,k的值是

A、3

B、2

C、1

D、0

标准答案:B

知识点解析:本题主要考查条件表达式。k=ac?c:k中k>c为假,k的值为2。

14、下面选项中关于位运算的叙述正确的是

A、位运算符都需要两个操作数

B、左移运算的结果总是原操作数据2倍

C、右移运算时,高位总是补0

D、位运算的对象只能是整型或字符型数据

标准答案:D

知识点解析•:位运算则是以位(bit)一级进行的运算,位运算符中除“〜”以外,均为

二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不

能为实型数据。其中右移时,右端(低位)移出的二进制数含弃,左端(高位)移入的

二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补

io而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。

15、下列选项中,能够满足“只要字符串si等于字符串S2,则执行ST”要求的是

Asif(sl==s2)ST;

B>if(strcpy(sl,s2)==l)ST;

C^if(strcmp(s2,sl)==O)ST:

D、if(sl-s2==0)ST;

标准答案:C

知识点解析:在c语言中要对两个字符串的大小进行比较,就需要调用字符串比

较函数strcmpO,如果这个函数的返回值等于0,说明两个字符串相等。

16、以下叙述中正确的是

A、函数的返回值不能是结构体类型

B、函数的返回值不能是结构体指针类型

C、在调用函数时,可以将结构体变量作为实参传给函数

D、结构体数组不能作为参数传给函数

标准答案:C

知识点解析:和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的

返同值也可以是结构体类型。

17、若要实现total=l+2+3+4+5求和,以下程序段错误的是()。

A、inti=I,total=1;while(i<5){total+=i;i+=l;}

B、inti=l,total=0;while(i<=5){total+=i;i+=l;}

C^inti=0,total=0;while(i<5){i+=l;total+=i;}

D、inti=0,total=0;while(i<=5){total+=i;i+=l;}

标准答案:A

知识点解析:选项A)记录的数据是total=1+I+2+3+4,和题意不符,答案选

A)o

18、C语言程序的模块化通过以下哪个选项来实现

A、变量

B、程序行

C、函数

D、语句

标准答案:C

知识点解析:用函数作为程序模块以实现C程序的模块化,程序有多个函数构

成,每个函数可以实现一个具体的功能,实现程序的模块化设计。

19、以下叙述中正确的是

A、C语言程序总是从最前面的函数开始执行

B、C语言程序总是从main函数开始执行

C、C语言程序中main函数必须放在程序的开始位置

D、C语言程序所调用的函数必须放在main函数的前面

标准答案:B

知识点解析:C语言中一个源程序都有一个且只能有一个main函数,即主函数;

C语言规定必须用main作为主函数名。其后的一龙圆括号中可以是空的,但不能

省略。程序中的main。是主函数的起始行,也是C程序执行的起始行。每一个程

序都必须有一个且只能有一个主函数。一个C程序总是从主函数开始执行,到

main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而调用函

数的定义位置和调用没有直接关系。

20、有以卜程序#inckide#includevoidfun(int*pl,int*p2,int*s){s=

(int*)calloc(l,sizeof(int));*s=*pl+*p2;free(s):)main(){inta[2]={1,2},

b[2]={40,50),*q=a;fun(a,b,q);printf("%d\n",*q);}程序运行后的输

出结果是

A、41

B、42

C、0

D、1

标准答案:A

知识点解析:主函数定义数组a,b,q指向数组a,调用fun函数以后形参接收实

参的数据,pl和p2指向数组a和b,同时s指向数组a,在fun函数中改变了s的

指向和赋值,但是在程序调用结束之间形参空间全部释放,因此对于s的指向改动

不会对主函数参数构成影响。因此主函数中数去*q的值仍然为lo

21、以下叙述中正确的是

A、在C语言中,预处理命令行都以开头

B、预处理命令行必须位于C源程序的起始位置

C、#includc必须放在C程序的开头

D、C语言的预处理不能实现宏定义和条件编译的功能

标准答案:A

知识点解析:在C语言中,凡是以“铲’号开头的行,都称为“编译预处理”命令行。

预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预

处理命令有宏定义、文,牛包含和条件编译二类.includeVstdio.h>命令行表示程

序中要引用C标准函数库中的标准输入输出函数。

22、以下叙述中正确的是

A、打开一个己存在的文件并进行了写操作后,原有文件中的全部数据必定被祗盖

B、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能

读到第1个数据

C、C语言中的文件是流式文件,因此只能顺序存取数据

D、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

标准答案:D

知识点解析:在C语言中,有两种对文件的存取方式;顺序存取和直接存取;如

果以“a”的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新

的数据写在原有内容之后。如果以“十”的方式为读和写而打开一个文件,则既可以

对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以

从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。

23、有以下程序includemain(){FILE*f;f=fopen(',filea.txt,,,,,wn);fprintfCf/abc");

fclose⑴;)若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件

filea.txt中的内容为()。

A、abc

B、abclo

C、helloabc

D、abchello

标准答案:A

知识点解析:该程序段的作用是将字符串“abc”写入到文件filea.txt中,由于打开文

件时以只写方式打开,打开已经存在的文件会先把文件长度清0后再写入数据,所

以运行结束后,文件行ea.txt中的数据为“abc”,答案选A)。

24、下面描述中不属于数据库系统特点的是

A、数据共享

B、数据完整性

C、数据冗余度高

D、数据独立性高

标准答案:C

知火点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C

错误。

25、有如下嵌套的if语句if(a<b)if(a<c)k=a;elsek=c;elseif(b<c)k=b;elsek=c;以

下选项中与上述if语句等价的语句是

A、k=(ac)?b:c);

k=(a

C、k=(a

D、k=(a

标准答案:R

知识点解析:题目中嵌套语句的含义是当a<b且a<c成立,则将a的值赋给k,如果

国家二级C语言机试(选择题)模拟试

卷第3套

一、选择题(本题共40题,每题1.0分,共40分。)

1、下列关于栈的叙述中正确的是()。

A、栈按“先进先出”组织数据

B、栈按“先进后出”组织数据

C、只能在栈底插入数据

D、不能删除数据

标准答案:B

知识点解析:栈是只允许在栈顶进行插入和删除运算的线性表,按“先进后出”组织

数据。

2、以下叙述中正确的是()。

A、不同函数的形式参数不能使用相同名称的标识符

13、用户自己定义的函数只能调用库函数

C、实用的C语言源程序总是由一个或多个函数组成

D、在C语言的函数内部,可以定义局部嵌套函数

标准答案:C

知识点解析:函数是一个独立的模块,不同函数之间的定义相互没有影响,所以标

识符可以相同,选项A错误;除了main函数不能被其他函数调用之外,用户自定

义函数可以调用其他任意函数,选项B错误;一个C程序可以有一个或多个程序

文件,所以也可以有一个或多个函数,选项C正确;函数体内部只可以调用,但

是不可以定义其他函数,选项D错误。故答案选C。

3、设有定义:doublex=2.12;,则以下各项中不能完整输出变量x值的语句是

()。

A、prinff(〃x=%5.Of\n",x);

B、printfV'x=%f\n〃,x);

C、printR〃x=%lf\n",x);

D、printfV'x=%0.5f\n〃,x);

标准答案:A

知识点解析:本题考查printf函数的格式输出,“格式控制字符串”部分为“%『表示

按照浮点型输出.选项R正确:加入长度格式符1即“表示按照双精度浮点型

输出,选项C正确;若要控制输出精度,则需以”开头,后跟十进制整数,如

“%.2f域“%0.2P,选项D正确;控制输出宽度则是用整数表示,如“%5产,选

项A中“%5.0『表示输出宽度为5,右对齐,小数点后保留位数为0,所以结果输

出为2,不能完整输出x,答案选A。

4、在一个C源程序文件中所定义的全局变量,其作用域为()。

A、所在文件的全部范围

B、所在程序的全部范围

C、所在函数的全部范围

D、由具体定义位置和extern说明来决定范围

标准答案:D

知识点解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量

定义的位置开始,到整个源文件结束止。

5、以下叙述中正确的是()。

A、函数调用时,不必区分函数名称的大小写

B、凋用函数时,函数名必须与被调用的函数名完全一致

C、函数名允许用数字开头

D、在函数体中只能出现一次return语句

标准答案:B

知识点解析:调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参

数列表一致才能保证调用的正确性,选项B正确。C语言对大小写敏感,选项A

错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下画线

组成并且第一个字符不能为数字,选项C错工一个函数每次只能使用一个relum语

句,但是该函数体中可以有多个返回点,也就是有多条return语句,每次只从其中

一点返回,选项D错。答案选B。

6、有以下程序:#include<stdio.h>#include<stdlib.h>voidfun(int**s,int

x[2][3]){**s=*(x[l]+l);}voidmain()inta[2][3]={1,2,3,4,5,6),*P;

P=(int*)malloc(sizeof(int));fun(&p,a);printf("%d\n",*P);}程序的运行结

果是()。

A、5

B、2

C、6

D、3

标准答案:A

知识点解析:**s=*(x[l]+l);的作用是将a数组的5的地址赋给了p,故正确答案

为Ao

7、下列叙述中正确的是()。

A、一个算法的空间复杂度大,则其时间复杂度也必定大

R、一个算法的空间复杂度大,则其时间复杂度必定小

C、一个算法的时间复杂度太,则其空间复杂度必定小

D、算法的时间复杂度与空间复杂度没有直接关系

标准答案:D

知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的

时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为

Do

8、下列各项中,不属于软件设计阶段任务的是()。

A、软件总体设计

B、算法设计

C、制订软件并确认测试计划

D、数据库设计

标准答案:C

知识点解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设

计、过程设计、所以A、B、D正确,C为软件测试阶段的任务。

9、有以下程序:#include<sfdiO.h>#include<string.h>main(){char

z,,,

str[]={HellOBeijmg;printf("%d,%d\n”,strlen(str),sizeof(str));}程序的运

行结果是()。

A、13.13

B、13.14

C、13.15

D、14.15

标准答案:B

知识点解析:strlen返叵字符串的长度,结果为13;sizeof返回字符串所占存储空

间的大小,由于字符串最后要加上一个‘'0',所以结果为13+1=14。

10>有以卜程序:#include<stdio.h>main(){intsum=0,x=5;do{sum+=x;}

while(!------X);printf(〃%d\n",sum);}程序的运行结果是()。

A、0

B、5

C、14

D、15

标准答案:B

知识点解析:先执行do中的表达式sum+=x,则sum=sum+x=0+5=5,再执行

while中的表达式,结果为0,退出循环,所以运行结果是5。

11、有以下程序:#include<stdio.h>main()intj,k,a=5,b=6;i=(a=

=b)?++a:------b;j=a++;k=b:printff%d,%d,%d\n”,i,j,k);}程序的

运行结果是()。

A、7,6,5

B、5,5,5

C、7,5,5

D、5,6,5

标准答案:B

知识点解析:i=(a==b)?++a:——b;中先执行a==b,为否,根据三元运算符语

法规则,执行——b,此时b为5,赋给i,i=5;j=a++,将a=5先赋给j,再进行

a++,k=b=5,故最后输出的是5,5,5。

12>有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i+

+){x++:for(j=0;j<=3;j++){if(j%2==0)continue;x++;}x++:}

printf("x=%d\n〃,x);程序的运行结果是()。

A、x=4

B、x=6

C^x=8

D、x=12

标准答案:C

知识点解析:第一次循环:i=0,执行x++后x=l,执行内层循环j=0,由于j%

2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=l+l+l=3,跳出内层

循环,执行下一条语句x++,x=4,第二次循环:x=l时,重复上述循环,共执行

两次循环,故x最终结果是4*2=8。

13、设有:chars[5],c;,则调用函数scanf能正确给s和c读入数据的是()。

A、scanf(〃%s%c",s,c);

B>scanf("%d%c",&st&c);

C、scanR"%d%c",s,&c);

D、scanR〃%s%c",s,&c);

标准答案:D

知识点解析:s[5|中放的是字符串,故输入的类型应该是%s;c中放的是字符,故

输入的是%却要正确读入数据必须要使用s和c的地址,而s代表地就是字符数

组的首地址。

14、下列数据结构中,能够按照“先进后出”原则存取数据的是()。

A、循环队列

B、栈

C、队列

D、二叉树

标准答案:B

知识点解析:栈是按“先进后出”的原则组织数据的;队列是按“先进先出”的原则组

织数据的,因此本题答案为B。

15、没数据元素的集合D=(1,2,3,4,5),则满足下列关系R的数据结构中为

线性结构的是()。

5Xu

A、R={(1,2),(3,2),(5,1),(4,J

4>\u

B、R={(i,3),(4,1),(3,2),(5,z

3\u

C、R={(1,2),(2,4),(4,5),(2,/!

2u

D、R={(1,3),(2,4),(3,5),(1,

标准答案:B

知识点解析:A选项2的前面有1和3两个数值,带有不确定性;C选项2的后面

有4和3两个数值;D选项1的后面有3和2两个数值,所以只有B选项是线性结

构。

16、以下定义语句中正确的是()。

A^inta=b=O:

B、charA=65+1,b='b';

C、floata=1,*b=&;a,*c=&;b;

D^doublea=0.0:b=l.1:

标准答案:B

知识点解析:定义变量时不能用连等,所以A选项错误;C选项中,h是指针,c

定义为指向指针的指针才可以接受&b,所以C选项错误;D选项,h=l.1前没有

类型名,所以错误。

17、有以下程序#includeVstdio.h>main()inta=—Lb=—1;for(;++a;)+

+b;printf("%d%d\n〃,a,b);}程序运行后的输出结果是()。

A、0—1

B、00

C、—1—1

D、结果不确定

标准答案:A

知识点解析:这是对f。「循环的基本考查。其中++a是判断条件,并且是a先自增

1,再参与运算,a初值为-1,经++a后,a值为0,0相当于false,判断条件不成

立,跳过for循环后面的语句++b,直接执行printf语句,所以最后输出a的值为

0,b的值没变,还是一1。

18、在源程序的开始处加上#include〈stdio.h>进行文件引用的原因,以下叙述正

确的是()。

A、stdio.h文件中包含标准输入/输出函数的函数说明,通过引用此文件以便能

正确使用printf>scanf等函数

B、将stdio.h中标准输入/输出函数链接到编译生成的可执行文件中,以便能正

确运行

C、stdio.h中标准输入/输出函数的源程序插入到引用处,以便进行编译链接

D、将stdio.h中标准输入/输出函数的二进制代码插入到引用处,以便进行编译

链接

标准答案:A

知识点解析:h包含标准库函数头文件,很多库函数的声明都在Vdic.h这

个文件中,包含之后就可以用其中的库函数,例如printf函数,scanf函数等。

19、有以下程序:#include<stdio.h>intfun(char*s){char*p=s;

while(*p!=0)P++;return(p—s);}main(){printf("%d\n",fun("goodbye!"));(

程序的输出结果是()。

A、0

B、6

C、7

D、8

标准答案:D

知识点解析:本题主要考查函数定义及调用,以及while循环语句。执行fun函数

后,首先找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的

长度,因此本题答案为8。

20、有以下程序:#include<stdio.h>voidfun(intn,int*s){intf:if(n==1)

*s=n+l:else{fun(n一L&f);*s=f;})main(){intx=0;fun(4,&x);print4"%

d\n〃,x);}程序运行后的输出结果是()。

A、3

B、1

C、2

D、4

标准答案:C

知识点解析:本题考查函数的递归调用。将函数参数带入函数中,一步步递归即可

得到结果,结果为2。故选项C正确。

21、对长度为n的线性表作快速排序,在最坏情况下,比较次数为()。

A、n

B、n—1

C、n(n—1)

D、n(n—1)/2

标准答案:D

知识点解析:快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比

较(n—1)十(n—2)+…+l=n(n—1)/2,故D项正确。

22、以下正确的说法是()。

A、用户若需要调用标准库函数,调用前必须重新定义

B、用户可以重新定义标准库函数,但若重新定义,该函数将失去原有意义

C、用户系统根本不允许用户重新定义库函数

D、用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到

用户源文件中,系统会自动寻找该文件

标准答案:D

知识点解析:无论是标准库函数,还是别的函数.都属于函数的范畴.都允许用户

重新定义和使用,使用的时候include命令必须以“外号开头,文件名用一对双引号

或一对尖括号括起来,系统提供的头文件是以.h作为文件后缀。

23、设有定义:chars[81];inti=0;以下不能将一行(不超过80个字符)带有空格

的字符串正确读入的语句或语句组是()。

A、gets(s);

B、while((s[i++]=getchar())!=f\nr);s[i]=z\0,;

C、scanfV'%s",s);

D、do{scanR"%c",&s[i]);}while(s[i++]!='\n%s[i]='\0';

标准答案:C

知识点解析:函数scanf()输入字符串时默认空格为间隔符,所以不能输入空格,

答案选C。

24、有以下程序:#include<stdio.h>main(){inti,array[6]={1,5,0,4};

for(i=0;iV5;i++)printf(〃%d",array[i]);printf("\n");}程语运行后的输出结

果是()。

A、04040

B、15040

C、15540

D、12120

标准答案:B

知识点解析:本题主要考查一维数组的输出。由于数组中有6个元素,但初始化数

组的时候只给出4个元素,所以array[5]=0,array⑹=(),前面几位元素依次输出,

不够位数补0,所以选项B正确。

25、有以下程序:#include<stdio.h>main(){intx;for(x=3;x<6;x++)

primf((x%2)?(〃*%d〃):x);printf("\n");}程序的输出结果是()。

A、*3#4*5

B、#3*4#5

C、*3*4#5

D、*3#4#5

标准答案:A

知识点角I析:条件运算符组成条件表达式的一般形式为:表达式1?表达式2:表达

式3。其求值规则为:表达式1值为真,则以表达式2的值作为条件表达式的值,

否则以表达式3的值作为整个条件表达式的值。本题中语句printf((x%2)?("*%〃):

(〃#%d〃,x);含义为变量x对2求余,如果结果为真,则按照“*%d”出,否则按照

“#%d”出。故A选项正确。

26、设已有定义:floatX;则以下对指针变量p进行定义且赋初值的语句中正确

的是()。

A、float*P=&:x:

B、int*P=(float)x;

C、floatp=&;x;

D^float*P=1024;

标准答案:A

知识点解析:考查指针变量的初始化。只能把对应类型的变量的地址赋值给指针,

选项B错误;定义指针时要加上“*”标明该变量为一个指针变量,选项C错误;不

能把一个整数直接赋值给指针变量,选项D错误;所以答案选A。

27、下列叙述中正确的是()。

A、算法的效率只与问题的规模有关,而与数据的存储结构无关

B、算法的时间复杂度是指执行算法所需要的计算工作量

C、数据的逻辑结构与存储结构是一一对应的

D、算法的时间友杂度与空间复杂度一定相关

标准答案:B

知识点解析:采用不同的存储结构,数据处理效率是不同的,A选项错误;算法的

时间复杂度是指算法在计算机内执行时所需时间的度量,空间复杂度是指算法在计

算机内执行时所需存储空间的度量,二者不一定相关,B选项正确,D选项错误;

数据的逻辑结构在计算机存储空间的存放形式称为数据的存储结构,二者并非一一

对应,C选项错误。

28、下列对软件测试和软件调试叙述中错误的是(),

A、严格执行测试计划,排除测试的随意性

B、软件调试的目的是改正软件错误

C、软件测试不需要考虑测试成本

D、正确的执行测试用例

标准答案:C

知识点解析:软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,

其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

软件测试的目的:发现错误而执行程序的过程,是评测软件质量的重要过程和手

段。软件调试的目的是诊断并改正程序中的错误。测试必须对整个软件总体进行评

估。软件测试需要考虑测试成本,软件测试成本也要计入软件开发成本中。故C

选项不正确。

29、以下叙述中正确的是()。

A、字符变量在定义时不能赋初值

B、字符常量可以参与任何整数运算

C、同一英文字母的大写和小写形式代表的是同一个字符常量

D、转义字符用@符号开头

标准答案:B

知识点解析:A选项中,字符变量在定义时可以赋初值;C选项中,同一英文字母

的大写和小写形式代表地是不同的字符常量;D选项中,转义字符以反斜线八「开

头的“故R选项TF确.

30、有以下程序:#include<stdio.h>main(){intx=l»y=0;if(!x)y++;else

if(x==0)if(x)y+=2;elsey+=3;printf("%d'n",y);}短序运行后的输出结果是

()o

A、0

B、2

C、1

D、3

标准答案:A

知识点解析:在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执

行,y值没有发生改变,答案选A。

31、C语言程序中,运算对象必须是整型数的运算符是()。

A、&&

B、/

C、%

D、*

标准答案:c

知识点。析:%取余运算是二目运算符,且要求运算对象必须为整数,故C选项

正确。

32、有以下程序:#include<stdio.h>inta=l,b=2;voidfunl(inta,intb)

{printf("%d%d",a,b);}voidfun2(){a=3;b=4;)main(){fun1(5,6);

tun2();pHntf("%d%d\n",a,b);}程序运行后的输出结果是()。

A、5634

B、3456

C、1256

D、5612

标准答案:A

知识点解析:在一个源文件中,如果外部变量和局部变量同名,则在该局部变量的

作用域内,该外部变量会被“屏蔽”,所以函数funl。输出的是局部变量a、b的

值:56:fun2()改变的是全局变量a、b的值,输出结果为34,答案选A。

33、有以下程序段:struct{floatweight;charsex;charnamc[10];)rec»*ptr;

ptr=&rec;从键盘读入字符串给结构体变量rec的name成员,错误的输入语句是

()。

A、scanff'%s",rcc—>/name);

B、scan1"%s",ree.name);

C、scanf("%s”,(*ptr).name):

D、scanff'%s",ptr—>namc);

标准答案:A

知识点解析:本题中声明了一个结构体类型person,定义了两个结构体变量,分别

是rcc和指针变量ptr。A选项中,rcc是一个结构体变量,结构体变量访问结构成

员的方式应该是rec.name,故答案选A。

34、下列链表中,其逻辑结构属于非线性结构的是()。

A、双向链表

B、带链的栈

C、二又链表

D、循环链表

标准答案:C

知识点新斤:数据的逻辑结构是描述数据之间的关系,分为两大类:线性结构和非

线性结构。线性结构是n个数据元素的有序(次序)集合,指的是数据元素之间存在

着“一对一,,的线性关系的数据结构。常用的线性结构有:线性表、栈、队列、双队

列、数组、串。非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多

个后继。常见的非线性结构有:树(二叉树等)、图(网等)、广义表。

35、下列各项中属于黑盒测试方法的是()。

A、边界值分析

B、路径覆盖

C、语句覆盖

D、逻辑覆盖

标准答案:A

知识点解析:黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测

等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。

36、以下叙述中错误的是()。

A、非零的数值型常量有正值和负值的区分

B、常量是在程序运行过程中值不能被改变的量

C、定义符号常量必须用类型名来设定常量的类型

D、用符号名表示的常量叫符号常量

标准答案:C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论