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

下载本文档

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

文档简介

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

卷第1套

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

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

A、算法的时间复杂度与计算机的运行速度有关

B、算法的时间复杂度与运行算法时特定的输入有关

C、算法的时间复杂度与算法程序中的语句条数成正比

D、算法的时间复杂度与算法程序编制者的水平有关

标准答案:B

知识点解析:为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作

量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应

该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运

算的执行次数来度量算法的工作量。算法所执行的基本运算次数还与问题的规模有

关;对应一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。

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

A、循环队列是队列的一种链式存储结构

B、循环队列是队列的一种顺序存储结构

C、循环队列是非线性结构

D、循环队列是一种逻辑结构

标准答案:B

知识点解析:本题主要考查循环队列的概念。循环队列作为队列的一种也应该是线

性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。

3、若有以下程序段doublex=5.16894;primf("%f\n”,(int)(x*1000+0.5)/

(double)1000);则程序段的输出结果是

A、5.175000

B、5.169000

C、5.170000

D、5.168000

标准答案:B

知识点解析:(int)(x*1000+0.5)/(double)1000表达式功能,保存数据x的后三位

小数,把第四位四舍五入。

回也11频回功嬴3|

4、某系统结构图如下图所示也鲤刈应近国应庖厘国同该系统

结构图的深度是()。

A、1

B、2

C、3

D、4

标准答案:D

知识点解析:深度表示控制的层数。本题中,"某系统''为第1层,“功能1、功能

2…功能n”为第二层,“功能2.1、功能2.2、功能2.3、功能n.1、功能n.2”

为第3层,“功能2.2.1、功能2.2.2”为第4层,共4层,故深度为4。

5、软件测试的目的是()。

A、发现程序中的错误

B、发现并改正程序中的错误

C、执行测试用例

D、诊断和改正程序中的错误

标准答案:A

知识点解析:软件测试是尽可能多的发现程序中的错误,而程序调试的任务是诊断

和改正程序中的错误。软件测试贯穿整个软件生命周期,程序调试主要在开发阶

段。

6、下列不属于软件工程3个要素的是,()。

A、工具

B、过程

C、方法

D、环境

标准答案:D

知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程

项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各

个环节的控制、管理。

7、有以卜程序:#include<stdio.h>intf(intt[],intn);main(){inta[4]={1,2,

3,4),s;s=f(a,2);printR''%d\n'',s);)intf(intt[],intn){if(n>O)&&(n<

5))returnt[n+l]+f(t,n-1);elsereturn0;}程序运行后的输出结果是()。

A、4

B、7

C、10

D、6

标准答案:B

知识点解析:本题主要考查的是函数的递归调用,子函数f是一个递归函数,所以

主函数中执行“lj(a,2)怵,其执行过程是“a[3]+f(a,l)=a⑶+a⑵+f(8,0)=7”。

8、若已定义:inta[]={0,1,234,5,6,7,8,9},*p=a,i;其中giW9,则对a数组

元素不正确的引用是()c

A、a[p-a]

B、*(&alij)

C、p[i]

D、a[10]

标准答案:D

知识点解析:此题考查对•一维数组的引用。对于已定义的数组a[M],数组元素的

正确引用必须满足下标小于M且为正整数。选项D)中下标值出现溢出。

9、合法的C语言语句是()。

A、intx=y=10;

B、charc=65:

C、floatf=f+1.1;

D、doublex=12.3E2.5;

标准答案:B

知识点解析:本题主要考查变量的定义和赋值,C语言中变量的定义形式为:类型

说明符变量名:初始值:选项A中,x和y只能单独赋初值;选项B正确,定义了

一个字符变量c,初值为65;选项C错误,初值设置自身不能参与运算;选项D

中字母E后面的指数必须是整数。

10^有下列程序:fiin(charP[][10]){intn===0»i;for(i=0;i<7;i++)

if(p[i][0]=,T,)n++;returnn;}main()(charstr[][10]={"Mon","Tue","Wed",

"Thu",'Tri%"Sat","Sun");printf(n%d\n",fun(str));}程序执行后的输出结

果是

A、1

B、3

C、0

D、2

标准答案:D

知识点解析:本题在主函数中定义了一个字符二维数组sgHlO],并用{“Mon”,

“True”,“Wed”,“Thu”,“Fri”,“Sat”,“Sun”}初始化。函数fun(charp口[10])的功能

是统计出中p[i|[0]等于字符,「的个数。所以fun(str)的功能是统计一周七天

中英文名称首字母为“T”的个数。因为字符串“True”和“Thu”的首字符是“T",所以

n=2o

11、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为

()

A、16

B、10

C、6

D、4

标准答案:A

知识点解析:根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是

比度为2的结点多一个,所以本题中度为2的结点是5—1=4个,所以度为1的结

点的个数是25—5—4=16个。

12^若有以下程序#includemain(){inta=l,b=2,c=3»d=4,r=0;if(a!=l);else

r=l;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf(n%d\n',

r);}则程序的输出结果是

A、10

B、6

C、7

D、3

标准答案;C

知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!」不成立,执

行else分支,r=l;第二条if表达式b==2成立,执行r+=2,r==3;第三条if语句

c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行咳if

分支语句,r+=4,r=7o

13、设有定义:intx=0,*p;紧接着的赋值语句正确的是

A、*p=NULL;

B、p=NULL;

C、p=x;

D、木p=x;

标准答案:B

知识点解析:定义指针变量时,必须将指针变量初始化为NULL(为空),否则,如

果不赋给它地址,系统会随机给它分配一个地址。

14、有下列程序:#include<stdio_h>#deftneN5#defineMN+l#definefix)(x*M)

main(){intil,i2;il=f(2);i2=f(l+l);printff'%d%d\n'',ihi2);}程序的运

行结果是

A、127

B、1212

C、1111

D、117

标准答案:D

知识点解析:在本题中,定义了3个宏定义语句,分别是:#defineN5>

#defineMN+5ff#definef(x)(x*M),所以根据C语言的宏替换规则,我们可知,

f(2)=2*N+l=2*5+l=l1,f(l+l)=l+l*N+l:1+1*5+1=7o

15、运动会中一个运动项目可以有.多名运动员参加,一个运动员可以参加多个项

目。则实体项目和运动员之间的联系是

A、多对多

B、——对多

C、多对一

D、一对一

标准答案:A

知识点解析:因为一个运动项目可以有多名运动员参加,一个运动员可以参加多个

项目,所以实体项目和运动员之间的联系是多对多。所以选项A正确。

16、以下选项中函数形参不是指针的是

A、fun(int&p){...}

B、fun(inta[10]){...}

C、fun(int*a){...}

D、fun(intP[]){...}

标准答案:A

知识点解析:C语言中形参数组是指针变量,其数组中元素的个数由传递的实参数

组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项B)和D)形参

均为指针变量,选项A)的定义在C语言中不存在的。

17、若有定义typedefim*T;Ta[10];则a的定义与下面哪个语句等价

A^int*a[10];

B>int(*a)[10];

C、int*a;

D、inta[10]:

标准答案:A

知识点解析:lypedef的主要功能是为存在的类型命名,后面的代码中可以利用该

新定义的类型名定义变量,题目中定义了整型指针类型T,而后利用T定义了整型

指针数组a,含有10个元素,选项A)中定义了整型指针数组a,选项B)定义了一

个指向一维数组的指针a,选项C)定义指针变量,而选项D)为定义整型数组最常

用的形式,数组a中可以存放10个数据元素。

18、若有定义语句:intyear=2009,*p=&year;以下不能使变量year中的值增至

2010的语句是

A、(*p)++;

B、++(*p);

C、*p++;

D^*p+=l;

标准答案:c

知识点解析:由于自加运算符++的运算级高于间接运算*的运算级,所以选项A)的

表达式*p++不能使变量year中的值增至2010。

19、以卜.选项中与if(a==l)a=b;elsea++;语句功能不同的switch语句是

A、switch(a==l){case0:a=b;break;casel:a++;)

B、switch(a)(casel:a=b;break;default:a++;}

C、switch(a){default:a+-i-;break;case1:a=b;)

D、switch(a==l){casel:a=b;break;case0:a++;}

标准答案:A

知识点》析:ifelse语句的含义是,如果变量a的值等于1,则把变量b的值赋给

变量a,否则,变量a的值加1。在本题的4个选项中,与其含义不同的是选项

A,表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变

*+-.a。

20、有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;

printf("%c,%c,",*c,d);}main(){charb='a',a='A';fun(&b,a);printf("%c,%c\n",b,a);}

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

Axh,R,h,A

b,B,B,A

C、

D、a,B,a,B

标准答案:A

知识点解析:计算字符常量时一般使用其ASCII码进行运算。3+l=E,fun()中的

第一个参数为地址传参,形参的变化会影响实参的变化,所以两次输出的b值都为

字符b;第二个参数为值传参,形参变化不会影响实参,所以在函数fun。体内输

出字符,B,,函数fun()体外输出结果为字符,A1所以答案选A。

21有以下程序#inckide<stdio.h>main(){inta[]={10,20,30,40},*p=a,i;for(i=0;i<

=3;i++){a[i]=*p;p++;}printfC'%d\n",a[2]);}程序运行后的输出结果是

A、20

B、30

C、10

D、40

标准答案:B

知识点解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数

组a中的元素的值不变,

22、有以下程序#inckidemain(){intc,d;c=10|5;d=10+5;printf("%d,%d\n",c,

d);)程序的运行结果是()。

A、15,15

B、10,15

C、5,15

D、105,15

标准答案:A

知识点解析:10的二进制数为1010,5的二进制数为0101,101010101=1111,对

应十进制数为15,所以答案选A。

23、以下叙述中正确的是

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

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

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

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

标准答案:D

知识点解析:B选项中,(x>0)&&(x〈10)的值是1或0,条件是x>0并且xV

10o但是0<xV10这种写法的结果任何时候都是1;C选项中,逻辑“非"(即运

算符!)的运算级别是最高的;A选项中,算术运算符优先级较高,关系和逻辑运

算符优先级较低。因此D选项正确。

24、数据库管理系统是

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

标准答案:B

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

数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之

上的系统软件。

25、已定义以下函数intfun(int*p){retum*p;}fun函数返回值是

A、一个整数

B、不确定的值

C、形参p中存放的值

D、形参p的地址值

标准答案:A

知识点解析:返回值为由针变量指向的数据,该数据已被定义为整型。因此A选

项正确。

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

卷第2套

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

1、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如

T=RxS,则T的元组的个数为()。

A、6

B、8

C、9

D、12

标准答案:C

知识点解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛

卡儿积是一个n+m元的关系,元组个数是qxp。所以T的元组的个数为9个。

2、下列叙述中正确的是

A、有一个以上根结点的数据结构不一定是非线性结构

B、只有一个根结点的数据结构不一定是线性结构

C、循环链表是非线性结构

D、双向链表是非线性结构

标准答案:B

知识点解析:在数据结沟中,树这类的数据结构只有一个根结点,但它不是线性结

构。

3、某二叉树的前序序列为ABCDEFG,中序序歹U为DCBAEFG,则该二叉树的深

度(根结点在第1层)为()。

A、2

B、3

C、4

D、5

标准答案:C

知识点解析•:二叉树的前序序列为ABCDEFG,则A为根结点;中序序列为

DCBAEFG,可知结点D、C、B位于根结点的左子树上,结点E、F、G位于根结

点的右子树上。另外,结点B、c、D在前序序列和中序序列中顺序相反,则说明

这三个结点依次位于前一个结点的左子树上;结点E、F、G顺序未变,则说明这

三个结点依次位于前一个结点的右子树上。故二叉树深度为4o

4、在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个

数为

A、0或1

B、0

C、1

D、队列满

标准答案:A

知识点解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)

进行删除操作。而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受

限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的

链式存储也称为链队列。为了便于操作,可给链队列添加1个头结点,并令头指针

指向头结点。队列为空的判断条件是头指针和尾指针的值相同,且均指向头结点。

当队列为空(0)或1时,front=rcar。

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

A、使用3种基本结构构成的程序只能解决简单问题

8、结构化程序由顺序、分支、循环3种基本结构组成

C、C语言是一种结构化程序设计语言

D、结构化程序设计提倡模块化的设计方法

标准答案:A

知识点解析:使用顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有

问题,而不只是解决简单问题,所以A选项错误。

6、下列叙述中错误的是

A、向量是线性结构

B、非空线性结构中只有一个结点没有前件

C、非空线性结构中只有一个结点没有后件

D、只有一个根结点和一个叶子结点的结构必定是线性结构

标准答案:D

知识点解析:线性结构是n个数据元素的有序(次序)集合。①集合中必存在唯一的

一个“第一个元素”;②集合中必存在唯一的一个“最后的元素”;③除最后元素之

外,其它数据元素均有唯一的“后件”:④除第一元素之外,其它数据元素均有唯

一的“前件”。相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应

多个直接前驱和多个后继。向量符合线性结构特点。非线性结构也会存在只有一个

根结点和叶子结点的情况c

7、下列各排序法中,最坏情况下的时间复杂度最低的是

A、堆排序

B、快速排序

C、希尔排序

D、冒泡排序

标准答案:A

知识点解析:堆排序法,最坏情况需要O(nlog2n)次比较。相比以上几种“除希尔排

序法外”,堆排序法的时间复杂度最小,故选项A正确。

8、以下程序的输出结果是()。#includevoidprt(int*x,int*y,int*z){printf("%

d,%d,%d\n",++*x,++*y,*(z++));)main(){inta=IO,b=40»c=20;

prt(&a,&b,&c);prt(&a,&b,&c);}

A、11,42,3112,22,41

B、11,41,2012,42,20

C、11,21,4011,21,21

D、11,41,2112,42,22

标准答案:B

知识点解析:本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函

数"prt(&a,&b,&c);”,此函数中的输出语句“printf(”%d,%d,%d\n”,++*x,

++*y,*(z++));”使得a和b的值均加1,而“*(z++『由于先执行“z++”,所以c的

值不变;第二次调用函数“prt(&a,&b,&c);”使得a和b在上一次的基础上再各

自加1(因为形参和实参进行的是地址传递),而c的值仍不变。

9、在软件生命周期中,能准确确定软件系统必须做什么和必须具备哪些功能KJ阶

段是

A、概要设计

B、详细设计

C、可行性分析

D、需求分析

标准答案:D

知识点露析:软件需求是指用户对目标软件系统在功能、行为、设计约束等方面的

期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。

10、设有定义:inlx=2;,以下表达式中,值不为6的是()。

A^2*x,x+=2

B、x++,2*x

C、X*=(l+x)

D^x*=x+l

标准答案:A

知识点解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2

的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4.所以选择A选项0

B选项中首先计算逗号表达式中第一表达式x++,此时x为3,再执行第二个表达

式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以

表示为x=x*(1+x)=2*(1+2)=6oD选项中的表达式正以表示为x=x*(x+l)=2*3=6o

11、以下叙述中正确的是

A、a表示一个字符常量

B、,\(T表示字符。

C、表达式:的结果是“假”

D、是非法的

标准答案:C

知识点解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比

较,匕不成立,值为假。而、(T表示NULL,ASCII码值为0。

12、有以下程序main(){intx=l,y=0»a=0,b=0switch(x){caseI:switch(y){case

0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;

b++;|printf("a=%d»b=%d\n",a,b);}程序的运行结果是

A、a=2,b=2

B、a=l,b=l

C>a=l,b=0

D、a=2,b=l

标准答案:D

知识点解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个

switch(x)判断,进入caseI中进行嵌套判断.如果$witch(y)也成立,a自加1,遇

到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break,结束

循环,此时a=2,b=lo

13、下列对于软件测试的描述中正确的是

A、软件测试的目的是证明程序是否正确

B、软件测试的目的是使程序运行结果正确

C、软件测试的目的是尽可能多地发现程序中的错误

D、软件测试的目的是使程序符合结构化原则

标准答案:C

知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指

很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发

现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正

确功能。

14、有以下程序main(){inta=-2,b=0;while(a++&&++b);printf("%d,%dha",

a,b);)程序运行后输出结果是

A、0,3

R、1,2

C、1,3

D、0,2

标准答案:B

知识点解析:循环体为空,共执行2次。第一次变量a初值为-2,b初值为0,表

达式a++&&++b值为1,同时a的值为b的值为1,第二次循环条件判断以

后,a的值为0,b的值2,执行循环体空,第三次判断条件表达式值为0,不执行

循环体,而a的值为1,但是表达式a++的值为0,因此不计算表达式++b的值,b

的值仍为2。

15、负责数据库中查询操作的数据库语言是

A、数据定义语言

B、数据管理语言

C、数据操纵语言

D、数据控制语言

标准答案:c

知识点露析:负责数据库中查询操作的数据库语言是数据操纵语言。

16、阅读以下程序#inckidemain(){intcase;floatprintF:printfi("请输入2个数:

");scanf("%d%F,&case,&printF);printf("%d%f\n",case,printF);}该程

序在编译时产生错误,其出错原因是

A、定义语句出错,printF不能用作用户自定义标识符

B、定义语句出错,case是关键字,不能用作用户自定义标识符

C、定义语句无错,scanf不能作为输入函数使用

D、定义语句无错,pnntt不能输出case的值

标准答案:B

知识点。析:case是C涪言中的一个关键字,不能用作用户标识符来使用,所以

这段程序代码在编译时就会出错。

17、有以卜程序段:inifun(char*s){char*P;P=s:if(*s=O)retum0;

while(*++P);return(P—S);}该段程序是用来()。

A、计算字符串所占字节数

B、实现字符串的赋值

C、计算字符串的长度

D、将字符串逆序存放

标准答案:C

知识点解析:在fun()函数中定义了指针p,首先把s地址赋给p,再通过while函

数移动指针P,当p指针指向单元为。时,退出while循环,返回此时p和s地址

之差,即字符串长度。

18、下列选项中,不是面向对象主要特征的是

A、复用

B、抽象

C、继承

D、封装

标准答案:A

知识点解析:面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析

和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设

计方法•一结构化程序设计所不能解决的代码重用问题。面向对象的编程方法具有四

个基本特征:抽象、继承、封装和多态性。故选项A正确。

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

A、/

B、%

C、&&

D、*

标准答案:B

知识点解析:%要求参与运算的运算量为整型,其他三个运算符对于参与运算的运

算量没有直接要求。

20、有下列程序:main(){inta[4][4]={{l,4,3,2),{8,6,5,7),{3,7,2,

5),{4,8,6,I)),i,j,k,t;for(i=0;i<4;i++)forlj=0;j<3;j++)for(k=j+1;

k<4;k++)iffa[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;)/*按列排序*/

for(i=0;i<4;i++)printf「%d,",a[i][i]);)程序运行后的输出结果是

A、8,7,3,1,

B、1,6,5,7,

C、4,7,5,2,

D、1,6,2,1,

标准答案:B

知识点解析:最外层的for语句的自变量i是列下标,而内部的两个for语句的自变

量i和k是行下标。所以由程序段可知,这是利用三重循环对二维数组a[4H4]的元

素按列从小到大进行排序,所以最后排完序的结果为a[4][4]={{l,4,2,1),{3,

6,3,2},{4,7,5,5},{8,8,6,7)),最后一个for语句的功能是输出数组

a[4][4]主对角线上的元素,因而输出为1,6,5,7o

21、若有以下程序,则程序的输出结果是#includeVstdio.h>main(){inta=0,

b=0,c=0;c=(a-=++a),(a+=b,b+=4');printf(H%d,%d,%d\n”,a,b»c);}

A、0,4,4

B、1,4,1

C、0,4,0

D、1,4,4

标准答案:C

知识点解析:表达式c=(a-==++a),(a+=b,b+=4)相当于逗号表达式,首先计算

c=(a-=++a),其中(a・=++a)等价于a=a・(++a),得到a的值0,c的值为0,在计算

(a+=h,h+=4)时.a和h的初值为0,计算以后,a为h为4c

22、以下关于return语句的叙述中正确的是

A、一个自定义函数中必须有一条return语句

B、一个自定义函数中可以根据不同情况设置多条return语句

C、定义成void类型的函数中可以有带返回值的rcium语句

D、没有return语句的自定义函数在执行结束时不能返回到调用处

标准答案:B

知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据

不同的情况设置多条return语句返回函数的值。

23、若有以下程序structstu{char*name,gender;intscore:);main()fstructstu

a={NULL,'m',290),b;a.name=(char*)malloc(10);strcpy(a.name,

"Zhao");b=a;b.gender=T;b.score=350;strcpy(b.name,"Qian");

printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d

\n",b.name,b.gender,b.score);}则程序的输出结果是

A、Zhao,m,290,Qian,L35O

B、Qian,L350,Qian,f,350

C、Zhao,m,290,Zhao,f,350

D、Qian,m,290,Qian,f,350

标准答案:D

知识点解析:主函数中定义结构体类型structsiu,有三个成员,第一个成员为字符

指针变量。主函数中为stu类型变量a赋值,首先为a.name成员分配存储空间,

存入数据。b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是

b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时

候,同样更改了a的name成员,而其他成员由于有单独的存储空间而不会发生改

变。

24、若有以下程序#includeinta=2;intf(intm){staticintn;n=0;n++;a++;return

n+m+a;)main(){intk;for(k=0;k<4;k++)pnntf("%d/\f(k));}则程序的输出结果是

A^4,5,6,7,

B、4,7,10,13,

C、4,6,8,10,

D、3,5,7,9,

标准答案:C

知识点解析:主函数中变量k作为for语句的循环变量,取值0、1、2、3,同时也

作为实参通过调用函数f传递给形参变量m。由于变量a是全局变量,变量n是

static静态变量,因此k=0时,f函数中,语句returnn+m+a;即1+0+3=4:k=lE寸,f

函数中,语句returnn+m+a;即2+1+3=6;k=2时,f函数中,语句returnn+m+a;即

3+2+3=8;k=3时,f函数中,语句returnn+m+a;即4+3+3=10。因此C选项正确。

25、以下叙述中正确的是

A、break语句不能用于提前结束for语句的本层循环

B、continue语句使得整个循环终止

C、使用break语句可以使流程跳出switch语句体

D、在for语句中,continue与break的效果是一样的,可以互换

标准答案:C

知识点解析:用break语句可以使程序流程跳出switch语句体,也可用break语句

在循环结构中终止循环体,从而提前结束循环,而continue语句的作用是结束本次

循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件

判断,可以理解为仅结束本次循环。

26、以下叙述中正确的是

A、函数名代表该函数的入口地址

B、所有函数均不能接受函数名作为实参传入

C、函数体中的语句不能出现对自己的调用

D、如果函数带有参数,就不能调用自己

标准答案:A

知识点解析•:函数形、实参传递的时候,要求对应位置类型一致即可,如果实参为

函数名,可以定义相应的形参为指向函数的指针变量来获得该函数的入U地址,因

此选项B错误的,在C语言中允许进行递归调用,即自己调用自己,选项C和选

项D是错误的。

27、以下程序的主函数中调用了其前面定义的fun函数#include〈stdio.h>……

main(){doublea[15],k:k=fun(a);}则以下选项中错误的fun函数首部是

A、doubletun(doublca[l5])

B、doublefun(double*a)

C、doublefun(doublea[])

D、doublefun(doublea)

标准答案:D

知识点解析:本题考查函数的定义和调用。根据对fun函数的调用可知,fun函数

的返回值为double类型的,输入参数是一个double类型的地址(指针),因此选项

D)错误。

28、若有以下程序#includetypedefstructstu{charname[10],gender;intscore;}

STU;voidf(STUa,STUB){b=a;printf("%s,%c,%d,",,b.gender,b.score);)

main(){STUa={”Zhao",'m',290},b={"QianH,T,350);f(a,b);printf(n%s,%c,%d\n",

,b.gender,b.score);}则程序的输出结果是

A、Qian,f,350,Qian,f,350

B、Zhao,m,290,Zhao,m.290

C、Zhao,m,290,QianJ,350

D、Zhao,m,290,Zhao,f,350

标准答案:C

知识点解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函

数后,会首先输出被重新复制的b值,且与a相同:而执行完f函数后,b值并不

会改变,所以还是维持原值,选项C正确。

29、有以下程序#includeVstdio.h>intfun(inta,intb){returna+b;)inain(){int

x=6,y=7,z=8,r:r=fun(fun(x,y),z—);printf(H%d\n",r);}程序运行后的

输出结果是

A、15

B、21

C、20

D、31

标准答案:B

知识点解析:本题考查函数的调用,函数fun功能为求两个数据的和。主函数中表

达式r=fun(fun(x,y),z-),首先计算内层调用fun(x,y),计算结果为13,然后外

层调用fun(13,8),结果为21。

30、若有以卜.程序intflinla[],intn){if(n>I){intt;t=f(a,n-1);returnt>a|n-

l]?t:a[n-l];)elsereturna[0];)main(){inta[]={8,2,9,1,3,6,4,7,5);

prmtfC,%d\nM,f(a,9));}则程序的输出结果是

A、9

B、1

C>8

D、5

标准答案:A

知识点解析:主函数中调用f(a,9),递归函数的调用过程如下:f(a;9)->f(a,8)-

>f(a,7)->f(a,6)->f(a,5)->f(a,4)->f(a,3)->f(a,2)->f(a,1),f(a,1)得至U

返回值为a[0],值为8,递归过程开始回归,回归过程描述如下:8>a[l],返回8-

>8>a⑵不成立,返回a[2]的值为9……因此函数f的主要功能为计算数组中的最

大值。主函数中输出最大值为9。

31、有以下程序#inckidemain(){inti=l;i=iAi;printf("%d\n",i);}程序运行后的输

出结果是

A、I

B、-1

C、0

D、7

标准答案:C

知识点解析:本题考查位运算中按位异或运算符,异或运算只有在两个比较的位不

同时其结果是1,否则结果为0,内运算符两边相同,所以结果为0,选项C正

确。

32>有以下程序:#include<stdio.h>voidfun(char*c){while(*c){if(*c>

='a'&&*cV='z')*c=*c-('a'・'A');C++;}}voidmain(){chars[81];gets(s);

fiin(s);puts(s):)当执行程序时从键盘上输入HelloReijingV同车>,则程序的输

出结果是

A、HELLOBEIJING

B、HelloBeijing

C、helloBeijing

D、hELLOBeijing

标准答案:A

知识点解析:子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结

果为选项A)o

33、有以下程序voidfun(intx,inty,int*c,int*d){*c=x+y;*d=x-y;}main。{int

a=4,b=3,c=0,d=0;fun(a»b,&c,&d);printf("%d%d\nM,c,d);}程序的

输出结果是

A、43

B、34

C、71

D、00

标准答案:C

知识点解析:函数fun有四个形参,功能是利用参数的地址传递来计算前两个参数

的和与差。主函数中调用fun函数c计算4+3,d计算4-3值为1。

34、以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是()。

A、char*str,name|10];str="HelloWorld1';

B、char*str,name[10];name="HelloWorld1';

C、charstrl[10J="progc",str2[10J;str2=strl;

D、charhead_line[];headjine="=============";

标准答案:A

知识点解析•:数组名表示该数组的首地址,是一个地址常量,不能对它重新赋值,

选项B)、C)、D)错误,答案选A)。

35、以下叙述中正确的是

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

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

C、include必须放在C程序的开头

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

标准答案:D

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

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

处理命令有宏定义、文件包含和条件编译三类。includeVsldio.h>命令行表示程

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

36、以下程序依次把从终端输入的字符存放到f文件中,用捍作为结束输入的标

志,则在横线处应填入的选项是#includeVsldio.h>main(){FILE*fp;charch;

fp=fopen("fnameu,"wH):while((ch=Retchar())!='#')fputc():fclose(fp):)

A、fp,ch

B、ch

C^ch,"fname"

D、ch,fp

标准答案:D

知识点解析:fputc()是以字符(字节)为单位的读写函数。每次可从文件读出或向文

件写入一个字符。使用格式为“fputc(ch,f.p);其中ch是待输出的某个字

符,它可以是一个字符常量,也可以是一个字符变量:fp是文件指针。fputc(ch,

fp)的功能是将字符ch写到文件指针fp所指的文件中。如果输出成功,fputc函数

返回所输出的字符;如果输出失败,则返回一个EOF值。EOF是在sidio.h走函

数文件中定义的符号常量,其值等于・建

37、有以下程序#include#includevoidfun(char*s){chara|10];strcpy(a,

“STRING");s=a;}main(){char*p="PROGRAM";fun(p);printf("%s\n",p);}程序

运行后的输出结果是(此处□代表空格)

A、STRING

B、STRING□□口口

C、STRING□□口

D、PROGRAM

标准答案:D

知识点解析:本题考查字符串指针作为函数参数,本题中p作为字符串指针传入

fun中,p指向的内容并没有发生变化,所以选项D正确。

38、有以下程序includemain(){charc[2][5]={,,6938";'8254"),*p[2];inti,j,s=0;

for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)

s=1O*s+p[i][j]-*0*;printf?o%d\nH,s);}程序运行后的输出结果是

A、9284

B、9824

C、6982

D、6385

标准答案:D

知识点解析:本题中首先是将二维字符数组c赋值指针数组p,然后遍历p找到两

个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为

6385o

39、以下结构体类型说明和变量定义中正确的是

A^typedefstruct{intn;charc;}REC;RECtl,⑵

B、structREC;{intn;charc;};REC

C、typedefstructREC;{intn=0;charc='A';}

D、struct{intn;charc;}RFC;RFCtl,t2;

标准答案:A

知识点解析:定义结构体类型的一般形式为:slruc【结构体名{成员列表};slruct

结构体名后不能加“;”号,所以选项B、C错误,选项D中定义无名称的结构体类

型同时定义结构体变量形式应为struct”,t2;选项A为用户自定义类型,其为正确

的定义形式。

40、若有定义语句:chara=\82,;则变量a

A、说明不合法

B、包含1个字符

C、包含2个字符

D、包含3个字符

标准答案:A

知识点解析:定义语句:chara=\82,;定义字符变量a,但是赋初值时却给赋值字符

常量,因此A选项正确。

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

卷第3套

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

1、某完全二叉树按层次输出(同一层从左到右)的序列为ABCDEFGH。该完全二叉

树的前序序列为()。

A、ABCDEFGH

B、ABDHECFG

C、HDBEAFCG

D、HDEBFGCA

标准答案:B

知识点解析:完全二叉树的特点是除最后一层外,每一层上的结点数均达到最大

值:在最后一层上只缺少右边的若干结点。根据这一特点,再根据题意输出序列为

ABCDEFGH,可以得至!该二叉树的结构如下:上故此完

全二叉树的前序序列为ABDHECFGo

2^若主函数中有定义语句:inta[10],b[10],c;,在主函数前定义的fun函数首

部为:voidfun(intx[]),则以下选项中错误的调用语句是()。

A、fun(b);

B、fun(&c);

C、fiin(&a[3]);

D、fun(b[ll]);

标准答案:D

知识点解析:fun函数的形式参数应为一个数组,而b[11]是一个整型元素,参数类

型不一致,且b[ll]已经溢出,所以D选项错误。

3、线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有

A、节省存储空间

B、插入与删除运算效率高

C、便于查找

D、排序时减少元素的比较次数

标准答案:B

知识点解析:顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);

要求内存中可用存储单元的地址必须是连续的。优点是存储密度大(=1),存储

空间利用率高;缺点是插入或删除元素时不方便。链式存储时,相邻数据元素可随

意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点问

关系的指针优点是插入或删除元素时很方便效率高,使用灵活。缺点是存储密度小

(VI),存储空间利用率低,故选项B正确。

4、语句strlen(Mabcdcfiog\O\hiM)0<J^S^()o

A、4

B、6

C、11

D、12

标准答案:B

知识点解析:字符串的字符''0',它在C语言的字符串中具有特殊的意义,字符’

\0'标志字符串的结束,计算串长时,只计算字符'0'之前的字符数量,而不计

算'\0'之后有什么字符。

5、下列方法中,属于白盒法设计测试用例的方法的是()。

A、错误推测

B、因果图

C、基本路径测试

D、边界值分析

标准答案:C

知识点解析:白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测

试、基本路径测试等。

6、下列叙述中错误的是()。

A、C程序可以由一个或多个函数组成

B、C程序可以由多个程序文件组成

C、一个C语言程序只能实现一种算法

D、一个C函数可以单独作为一个C程序文件存在

标准答案:C

知识点解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函

数,所以一个C语言程序可以实现多种算法,答案选C。

7、软件测试的目的是

A、评估软件可靠性

B、发现并改正程序中的错误

C、改正程序中的错误

D、发现程序中的错误

标准答案:D

知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程

序中的错误。

8、设表的长度为20。则在最坏情况下,冒泡排序的比较次数为

A、90

B、20

C、19

D、190

标准答案:D

知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序的比较次数为

n(n-l)/2o本题中,11=20,所以20*19/2=190。所以选项D正确。

9、有以下程序main()(inti=5;do{if(i%3=l)if(i%5=2){printf(''*%d’',i);

break;|i++:}while(i!=0);printfCf);}程序的运行结果是

A、*3*5

B、*5

C、*7

D、*2*6

标准答案:C

知识点解析:由于循环变量i的初值等于5,所以第一、二次进入do…,while循

环语句时,条件语句if(i%3=l),if(i%5:=2){printR"*%d”,i);break;)不执行,

只执行i++语句。当i=7时,满足条件语句if(i%3=l),if(i%5=2){printf(”*%d”,

i);break;},所以输出*7,结束循环。

10、数据库管理系统是

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

标准答案:B

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

的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

II、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于

转换以下说法错误的是

A、一条C语句可能会被转换成多条机器指令

B、一条C语句对应转换成一条机器指令

C、一条C语句可能会被转换成零条机器指令

D、某种类型和格式的C语句被转换成机器指令的条数是固定的

标准答案:B

知识点解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01

二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语

句条数和机器指令的条数不是一对一的关系。

12、以下选项中正确的定义语句是()。

A、doublea=7,b=7;

doublea=b=7;

C、doublea;b;

D、double,a,b;

标准答案:A

知识点解析:选项B)错误,定义时不能连续赋值;选项C)错误,分号表明一句

语句的结束,所以变量b没有正确定义;选项D)错误,在定义变量的时候,类型

后面不能跟逗号。所以答案选A)。

13、设有定义“char*c;",以下选项中能够使c正确指向一个字符串的是()。

A、charstr[]=Hstring";c=str;

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

C、c=getchar();

D、*c="string":

标准答案:A

知识点解析:选项A为正确用法,先将字符串存于字符数组中,然后将数组名赋

给字符指针(数组名代表数组首地址,定义数组时为其分配确定的地址)。C选项错

误,gctcharO函数输入一个字符给字符型变量,而不是字符指针。B选项和D选项

有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在B选

项和D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存

区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符

串,可能会发生无法预知的错误。

14、下列关于二叉树的叙述中,正确的是()。

A、叶子结点总是比度为2的结点少一个

B、叶子结点总是比度为2的结点多一个

C、叶子结点数是度为2的结点数的两倍

D、度为2的结点数是度为I的结点数的两倍

标准答案:B

知识点解析•:根据二叉树的基本性质3:在任意一棵二叉树中,度为。的叶子结点

总是比度为2的结点多一个。所以选择B)。

15、软件生命周期中的活动不包括()o

A、市场调研

B、需求分析

C、软件测试

D、软件维护

标准答案:A

知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶

段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,

软件测试,运行和维护,所以选择A)。

16、若耍求从键盘读入含有空格字符的字符串,应使用函数

A、getc()

B、gets()

C、getchar()

D、scanf()

标准答案:B

知识点解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所

以用scanf()函数不能输入空格;getchar。函数用于输入字符,其调用形式为:

ch=getchar(),gelchar。函数从终端读入一个字符作为函数值,把读入的一个字符赋

给变量ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入

Emer键时,读入才开始执行。gels()函数的调用形式为:gets(slr_adr),其中sljadr

是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指

针变量。gets()函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符

为止。geic()函数的调用形式为:ch=geic(pD其中pf是文件指针。函数的功能是从

pf指定的文件中读入一个字符,并把它作为函数值返回。

17、有以下程序#includeVstdio.h>#includeVstdio.h>intfun(intn))int*p;

p=(int*)malloc(sizeof(int));*p=n;return*p;)main(){inta;a=fun(10);

printfL%d\nTa+fun(10));}程序的运行结果是

A、10

B、20

C、0

D、出错

标准答案:B

知识点解析:函数fun(intn)的功能是在内存中每次动态的申请一个整型变量的存储

空间,把整型变量n的值存入这个存储空间中。所以当在主函数中执行输出语句

时,a+fun(10)的值等于20。

18、在数据库管理系统提供的数据语言中,负责数据模式定义的是

A、数据定义语言

B、数据管理语言

C、数据操纵语言

D、数据控制语言

标准答案:A

知识点解析:数据库管理系统一般提供相应的数据语言,它们分别是:数据定义语

言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操

纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定

义与检查以及并发控制、故障恢复等功能。

19、若有定义语句:inta=3,b=2,c=l;以下选项中错误的赋值表达式是

A、a=b=c+1;

B、a=(b=4)=3;

C^a=(b=4)+c:

D、a=l+(b=c=4);

标准答案:B

知识点解析:本题主要考查赋值表达式,对于赋值表达式来说,赋值号'、二”的左边

一定为变量名,右边为一个C语言合法的表达式。

20、有以下程序#includemain。{inty=l,x,a[]={2,4,6,8»10}»*p;p=&a[l];for(x=0;x

<3;x++)y=y+*(p+x);printf("%d\n'\y);)程序运行后的输出结果是

A、1

温馨提示

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

评论

0/150

提交评论