国家二级(C语言)笔试模拟试卷240_第1页
国家二级(C语言)笔试模拟试卷240_第2页
国家二级(C语言)笔试模拟试卷240_第3页
国家二级(C语言)笔试模拟试卷240_第4页
国家二级(C语言)笔试模拟试卷240_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷240

一、公共基础选择题(本题共70题,每题7.0分,共

10分。)

1、为了使模块尽可能独立,要求

A、模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B、模块的内聚程度要尽量高,H各模块间的耦合程度要尽量弱

C、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

标准答案:B

知识点解析:模块的独立程度可以由两个定性标准度量:耦合性和内聚性。耦合

性是衡量不同模块彼此间互相依赖(连接)的紧密程度:内聚性是衡量一个模块内部

各个元素彼此结合的紧密程度。一般来说,要求模块之间的耦合尽可能地低,而内

聚性尽可能地高。

2、一个关系中属性个数为1时,称此关系为

A、对应关系

B、单二关系

C、一元关系

D、二元关系

标准答案:C

知识点解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。

关系的列称为属性,一个具有N个属性的关系称为N元关系。

3、数据的存储结构是指o

A、存储在外存中的数据

B、数据所占的存储空间量

C、数据在计算机中的顺序存储方式

D、数据的逻辑结构在计算机中的表示

标准答案:D

知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形

式。

4、线性表的顺序存储结构和线性表的链式存储结构分别是

A、顺序存取的存储结构、顺序存取的存储结构

B、随机存取的存储结构、顺序存取的存储结构

C、随机存取的存储结构、随机存取的存储结构

D、任意存取的存储结构、任意存取的存储结构

标准答案:B

知识点解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个

数据元素地址可通过公式LOC(ai尸LOC(al)+(i-l)L计算得到,从而实现了随机存

取。对于链式存储结构,耍对某结点进行存取,都得从链的头指针指向的结点开

始,这是一种顺序存取的存储结构。

5、已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列

A、acbcd

B、decab

C、deabc

D、cedba

标准答案:D

知识点解析♦:依据后序遍历序列可确定根结点为c;再依据中序遍历序列可知其左

子树由deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,

由中序遍历序列可知其左子树为d,右子树由ba构成,如下图所示,求得该二叉

树的前序遍历序列为选项D)。

6、线性表L=(al,a2,a3,...ai,...an),下列说法正确的是

A、每个元素都有一个直接前件和直接后件

B、线性表中至少要有一个元素

C、表中诸元素的排列顺序必须是由小到大或由大到小

D、除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和

直接后件

标准答案:D

知识点解析:线性表可以为空表;第一个元素没有直接前件,最后一个元素没有直接

后件;线性表的定义中,元素的排列并没有规定大小顺序。

7、线性表的顺序存储结构和线性表的链式存储结构分别是

A、顺序存取的存储结构、顺序存取的存储结构

B、随机存取的存储结构、顺序存取的存储结构

C、随机存取的存储结构、随机存取的存储结构

D、任意存取的存储结构、任意存取的存储结构

标准答案:B

知识点解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数

据元素地址可通过公式LOC(ai尸LOC(al)+(i-l)L计算得到,从而实现了随机存取。

对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一

种顺序存取的存储结构。

8、数据结构中,与所使用的计算机无关的是数据的

A、存储结构

B、物理结构

C、逻辑结构

D、物理和存储结构

标准答案:4

知识点解析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构

及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而

不管它在计算机中的存储表示形式。

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

A、线性表是由n个元素组成的一个有限序列

B、线性表是一种线性结构

C、线性表的所有结点有且仅有一个前件和后件

D、线性表可以是空表

标准答案:4

知识点解析:线性表是一种线性结构,由n(nNO)个元素组成,所以线性表可以是空

表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有

且只有一个前件和后件,所以C是错误的。

10、将E-R图转换为关系模式时,实体和联系都可以表示为o

A、属性

B、键

C、关系

D、域

标准答案:C

知识点解析:将E-R图转换为关系横式时,实体和联系都可以表示成关系,E-R图

中属性也可以转换成关系的属性。实体集也可以转换成关系。

二、选择题(1分)(本题共“题,每题7.0分,共〃

分。)

11、下列程序执行后的输出结果是main。{inta[3][3],*p,i;p=&a[0][0];

for(i=l;i<9;i++)p[i]=i+l;printf("%d\n",a[l][2]);}

A、3

B、6

C>9

D、随机数

C、软件既是逻辑实体,又是物理实体

D、软件是程序、数据与相关文档的集合

标准答案:D

知识点解析:计算机软件是包括程序、数据及相关文档的完整集合,软件是一种逻

辑实体,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。

16、已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk

中的值为大写字母的表达式是

A、kk>='A'&&kkv='Z'

13、!(kk>=,A,||kk<=,Z,)

C、(kk+32)>=R&&(kk+32)<=2'

D、isalpha(kk)&&(kk<91)

标准答案:B

知识点解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写

字母,只要确定它的ASCII码在,A,和2,之间就可以了,选项A)和C)符合要求。函数

isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所

以如果一个字母的ASCH码小于91,那么就能确定它是大写字母。

17、假设a和b为int型变量,则执行以下语句后b的值为().a=l;b=10:do

{b-=a;a++;}while(b-<0);

A、9

B、-2

C、-1

D、8

标准答案:D

知识点解析:当b为10时,执行b-二a,此时b为9,接着b-表达式值为9,b的

值为8,大于0,while不成立,退出循环,故选择D选项。

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

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

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

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

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

标准答案:C

知识点解析:在C语言中,可以用一个标识符来表示一个常量,称之为符号常

量。符号常量在使用之前必须先定义,其一般形式为:#dcEne标识符常量。

19、下列程序的输出结果是_____。main(){inti;for(i=l;i+l;i++){if(i>

4){printf(',%d,,,i++);break;}}printf("%d'\i++);}

A、55

B、56

C、程序错误,没有输出

D、循环条件永远为真,死循环

标准答案:2

知识之解析:本程序中有个for循环,但注意到for循环的条件是“i+1”,也就是只

要i+1的值为真(非零值均为真),就执行循环。当i=l的时候,i+1的值为真,判断

if条件不成立,执行i++,输出i的值为5o

20、下列正确的变量声明是()

A、intm;n;k;

B、unsignedintm,n,k;

C、doubleintm,n,k;

D、intm,n,k

标准答案:2

知识点解析:暂无解析

21、以下程序的输出结果是omain。{printf("%d\n”,NULL);}

A、0

B、-1

C、1

D、不确定的值(因变量无定义)

标准答案:1

知识点解析:NULL表示空,常在定义指针变量时将其值赋为NULL,表示不指向

任何地址。NULL在C语言的头文件中宏定义为0。

三、选择题(2分)(本题共20题,每题1.0分,共20

分。)

22、在printf的格式字符中,e格式字符的作用是

A、以十六进制无符号形式输出整数

B、以带符号的十进制形式输出整数

C、以指数形式输出实数

D、以字符形式输出,且只输出一个字符

标准答案:C

知识点解析:暂无解析

23、有以下程序main(){intx=0,y=0,i;for(i=l;++i){if(i%2==0){x++;continue;}

if(i%5==0){y++;break;))printf("%d,%d",x,y);}程序的输出结果是

A、2,1

B、2,2

C、2,5

D、5,2

标准答案:A

知识点解析:本题考查了conlinue和break语句在循环语句中的作用。break语句的

作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循

环。

24、下列说法正确的是()。

A、在C程序中,main()函数必须位于程序的最前面

B、在C程序中,一条语句只能写一行而不能写多行

C、C程序是以行为基本单位的

D、C语言本身没有输入输出语句

标准答案:D

知识点解析:本题涉及C语言最基本的4个知识点:①C语言程序是由函数构成

的,C程序的基本单位是函数;②每个C程序有且只有一个主函数main。,且程

序必须从main。函数开始执行,但是main。函数可以放在程序中的任意位置:⑧C

语言的书写格式是自由的,一行可以写多条语句,一条语句也可以写在不同的行

上:④C语言本身不提供输入输出语句,可以通过函数来实现输入和输出操作。

25、有以下程序main(){inti,j,x=O;for(i=0;i<2;i++)(x++;for(j=0;j<=3;j++)

{if(j%2)continue;x++;}x++;}pnntf(Mx=%d\n",x);}程序执行后的输出结果是

A、x=4

B、x=8

C、x=6

D、x=12

标准答案:B

知识点解析:此程序考察了for循环和x++。对于大循环,有两个x++,其中循环3

次,对于小循环,循环三次但是运行了两次x++,所以最后结果是6+2=8o

26、已知大写字母A的ASCH码是65,小写字母a的ASCII码是97。下列不能将

变量c中的大写字母转换为对应小写字母的语句是()。

A、c=(c-'A')%26+'a'

B、c=c+32

C、c=c-'A'+'a'

D、c=('A'+C)%26-H

标准答案:D

知识点解析:由题意可知,小写字符a和大写字符A的ASCII代码相差为32,所

以选项C)能将大写字符c的ASCn代码转换为小写字符c的ASCn代码:选项A)

和C)左侧的表达式都是大写字符c与大写字符A的差与H的ASCD代码的和就是

小写字符c的ASCH代码。而选项D)中应该是加上而不是减去尔。

27、以下程序运行后,瑜出结果是_____o#defmePT5.5#defineS(x)

PT*x*xmain(){inta=l,b=2;printf("%4.1f\n",S(a+b));}

A、49.5

B、9.5

C、22

D、45

标准答案:B

知识点解析:暂无解析

28、以下只有在使用时才为该类型变量分配内存的存储类说明是

A、auto^11static

B、auto和register

C^registerstatic

D、externregister

标准答案:B

知识点解析:暂无解析

29、设有定义语句intx[6]={2,4,6,8,5,7],*p=x,i;要求依次输出x

数组6个元素中的值,不能完成此操作的语句是。

A^for(i=0;i<6;i++)printf("%2dH,*(p++));

for(i=0;i<6;i++)printf(,,%2d",*(p+i));

C、for(i=0;i<6;i++)printf(',%2dn,*p++);

D、for(i=0;i<6;i++)printf(n%2d\

标准答案:D

知识点解析:暂无解析

30、以下对C语言函数的有关描述中,正确的是()。

A、在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

B、C函数既可以嵌套定义又可以递归调用

C、函数必须有返回值,否则不能使用函数

D、函数必须有返回值,返回值类型不定

标准答案:1

知识点解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函

数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

31、有以下程序:#include<stdio.h>intf(intn))if(n==l)return1;elsereturn

f(n-l)+l;)main(){inti,j=0;for(i=l;i<3;i++)j+=f(i);printf("%d\n",j);}程

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

A、4

B、3

C、2

D、1

标准答案:2

知识点解析:在main函数中,j的值是f⑴和f(2)的值相加的结果。f(l)=l,

f(2)=f(1)+1=2,j的值为1+2=3。

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

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

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

C、每个C程序必须在开头包含预处理命令行;#include<stdio.h>

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

标准答案:2

知识点解析:预处理命令行可以出现在C源程序的任何位置,故选项A不正确。

#includeVsldio.h>预处理命令行的意思是将stdio.h头文件插入源程序中该行命

令所在的位置,表示我们将在后续行中用到stdio.h头文件中定义的函数或类型,

若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项C不正确。C

提供的预处理功能主要有:宏定义、文件包含和条件编译三种功能,故选项D不

正确。在C语言中,预处理命令行都以"留‘开头,故应该选择及

33、已有定义:chara[]=,,xyzn,b[]={'x','y','z'};,以下叙述中正确的是

A、数组a和b的长度相同

B、a数组长度小于b数组长度

C、a数组长度大于b数组长度

D、上述说法都不对

标准答案:4

知识点解析:a数组存放的是字符串,系统会自动在字符串的最后加上一个、(T,

所以a数组的长度为4,而b数组的长度为3,故a数组长度大于b数组长度。

34、若有如下程序:main(){intx[]={14,32,65,69,78.59),*t;t=x+5;printf(H%d\n",*-

t);}则程序执行后的输出结果是()。

A、78

B、65

C、32

D、14

标准答案:1

知识点解析:执行l=x+5:使指针指向数组元素59,运算符*和-的优先级相同,

结合性为自右向左,先计算-3对t减1,使t指向数组元素78,再计算取该

地址单元的值78。

35、函数函n的返回值是()。fun(char*a,char*b){intnum=0,n=0;

while(*(a+num)!=,\O,)num++;while(b[n]){*(a+num)=b[n];num++:n++;)return

num;}

A、字符串a的长度

B、字符串b的长度

C、字符串a和b的长度之差

D、字符串a和b的长度之和

标准答案:8

知识点解析:第一个while循环是字符串a的长度,第二个while是将字符串b接

在a的后面,num在a吕长度上继续累计,为两个字符串长度之和。

36、设有如下程序:fun(float*pl,intn,float*p2,intm,float*s)(inti:*s=0.0;

for(i=0;i<n;i++)*s+=*pl++;for(i=0;i<m;i++)*s+=*p2++;)main(){float

a[]={l.l,2.2},b[]={1.0,2.0,3.0),*s=a;fun(a,2,b,3,s);printf(M%f\nH,*s);}上面程序

的输出结果是_____O

A、8.2

B、9.3

C、3.3

D、1.1

标准答案:1

知识点解析:实参指针变量s指向数组a的第一个元素,在函数fun中首先将s所

指数组a的第一个元素赋值为0.0,然后将数组a和b中的元素值依次累加到数组a

的第一个元素中。

37>有以下程序main。{inta=l5,b=21,m=0;switch(a%3)(case0:m++;

break;case1:m++;switch(b%2){default:m++:case0:m++;break;)|

printf("%d\n",m);}程序运行后的输出结果是

A、1

B、2

C、3

D、4

标准答案:1

知识点解析:在switch语句中break语句的作用是退出分支语句,若没有break语

句则一直向下执行。本题中首先计算switch后面括号里的表达式a%3,即15%3为

0;执行case。;后面的语句m++;m自加1,即m为1;遇到break语句;然后跳

出.switch语句,所以最后输出的m的值为Ic

38、有以卜程序#include〈string.h>main(intarge,char*argv[]){inti,len=0;

for(i=1;i<arge;i++)len+=strlen(argv[i]);printf(u%d\n,\len);}程序编译连接后

生成的可执行文件是exl.exe,若运行时输入带参数的命令行是:exlabedefg10

V回车,则运行的结果是

A、22

B、17

C、12

D、9

标准答案:8

知识点解析:main。函数可以带参数,并且参数只能有两个,第一个参数(arge)类

型为整型用来记下命令行的参数个数,第二个参数(argv)为一个字符型指针数组,

其各个元素用来记下命令行各参数字符串的首地址。木题执行时,arge的值为4,

在循环中依次求出algv[lhargv⑵和argv[3]指向的字符串(“abed”、“e鱼”和“10”)的

长度,并把它们加到变量len中,得到len的值9。所以最后输出的len值为9。

39、已知有结构体:structsk{inta;floatb;)data,*p;若有p=&data,则对data的成

员a的正确引用是()。

A、(*p).data.a

(*p).a;

C、p->data.a

D、p.data.a

标准答案:2

知识点解析:本题主要考查结构指针:p=&data,访问结构体的成员,可以通过结

构变量访问,HPdata.a,也可以用等价而指针形式:(*p).a和p->a来访问结构体变

量中的成员。

40、设ql和q2是指向一个float型一维数组的指针变量,k为float型变量,则不

能正确执行的语句是(),

A、k=*ql+*q2;

B、ql=k;

C、ql=q2:

D^k=*ql*(*q2);

标准答案:2

知识点解析:选项A)是将指针ql和q2所指向的变量值相加,然后赋给k;选项

B)中,float型数据和指针型数据之间不能进行赋值运算;选项C)中,是两个指针

变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。

41、设有程序段:intk=12;while(k=l)k=k-l;则下列描述中正确的是()。

A、while循环执行10次

B、循环是无限循环

C、循环体语句一次也不执行

D、循环体语句执行一次

标准答案:4

知识点解析:本题考查while循环。while循环的控制表达式k=l是个赋值表达式

而不是逻辑表达式,所以循环体一次也不执行。

四、公共基础填空题(本题共5题,每题7.0分,共5

分。)

42、测试用例包括输入值集和1】值集。

标准答案:输出

知识点解析:软件测试用例是为了有效发现软件缺陷面编写的包含测试目的、测试

步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试

的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入

值集和输出值集。测试用例是软件测试的核心。

43、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。

标准答案:45

n

知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过T遍的

从前往后扫描和2遍的从后往前扫描,需要比较次数为)-2-o

44、通常将软件产品从提出、实现、使用维护到不再使用的过程称为【】。

标准答案:软件生命周期

知识点解析:软件产品从考虑其概念开始,到该软件产品不再使用为止的整个时期

都属于软件生命周期,一般包括可行性研究与需求分析、设计、实现、测试、交付

使用以及维护等。

45、在面向对象方法中,信息隐蔽是通过对象的【】性来实现的。

标准答案:封装

知识点解析:软件工程的基本原则抱括抽象,信息隐蔽、模块化、局部化、确定

性、一致性、完备性和可验证性。信息隐蔽是指采用封装技术,将程序模块的实现

细节隐藏起来,使模块接口尽量简单。

46、一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序

遍历结果为,

标准答案:DEBFCA

知识点解析:暂无解析

五、填空题(本题共〃题,每题1.0分,共〃分。)

47、下面程序的运行结果是()。#include<stdio.h>#defineSIZE12main(){char

s[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-l);for(i=0;i<

SIZE;i++)printf("%c",s[i]);printf("\nH);}sub(char*a,inttl,intt2){charch;while(tl<

t2){ch=*(a+tl);*(a+tl)=*(a+t2);*(a+t2)=ch;tl++;t2-;))

标准答案:abcdelkjihgf

知识点解析:本题先给字符型数组s的12个元素赋值a到1共12个字母,函数

sub(char*a,intll,im⑵的功能是将数组a的从第11+1个元素到t2+l个元素进行逆

置,在主函数中调用sub(s,5,SIZE-l)函数,是将数组s的第6个元素到第12个元素

进行逆置,其他元素位置不变。

48、对数据元素之间的逻辑关系的描述是()。

标准答案:数据的逻辑结构

知识点解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个

数据元素的集合和定义在此集合中的若干关系来表示。

49、若变量a,b已定义为ini类型并分别赋值21和55,要求用printf函数以

a=21,b=55的形式输出,请写出完整的输出语句行:【】。

标准答案:printf("a=%d»b=%d'\a»b);

知识点解析:根据printf函数的格式可知输出语句应该为:printf("a=%d,b=%d",

a,b);

50>若有程序:main(){inti,j;scanq("i=%dj=%dn,&i,&j);printf("i=%d,j=%d\n",

i,j);}要求给i赋10,给j赋20,则应该从键盘输入【】。

标准答案:i=0,j=20

知识点解析:该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非

格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输

入1=尸,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。

51、以下程序的输出结果是[]omain()(ints,i;for(s=0,i=1;1<3;i++,

s+=i);printf("%d\n",s);}

标准答案:5

知识点解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空。

输出语句不在for循环体内,所以在循环执行完毕后才输出s的值。s、i的初值分

别为°和1,判断循环条件,表达式“1V3”成立,执行“i++,s+=i”后,i和s的值

分别为2和1,继续判断循环条件,表达式“2V3”成立,执行“i++,s+=j”后,i和s

的值分别为3,再次判断循环条件,表达式“3V3”不成立,循环结束。

52、关系表达式xVyVz,用C语言的表达式为【】。

标准答案:(xVy)&&(yVz)

知识点解析:xVyVz的意思是y大于x并且y小于z。在C语言中,表达“并且”

用逻辑与运算符

53>以下程序的输出结果是[]。voidfun()(static

温馨提示

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

评论

0/150

提交评论