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

下载本文档

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

文档简介

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

卷21(共9套)

(共270题)

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

卷第1套

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

1、以下选项中关于程序模块化的叙述错误的是

A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块

B、可.采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序

C、把程序分成若干相对独立的模块,可便于编码和调试

D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序

标准答案:B

知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步

细化的设计方法把若干独立模块组装成所要求的程序。

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

A、如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息

B、即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以

不同

C、设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL:

D、指针变量之间不能用关系运算符进行比较

标准答案:A

知识点解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存

储单元,选项A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B

错。语句p=0和p=NULL是一样的,都是把一个空指针赋给指针变量p,故选项C

错。指针之间能进行关系运算,比较的是地址值的大小,选项D错。答案选A。

3、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属

于应用软件的是()。

A、编译程序

B、操作系统

C、教务管理系统

D、汇编程序

标准答案:c

知识点。析:编译软件、操作系统、汇编程序都属于系统软件,只有C选项教务

管理系统才是应用软件。

4、在快速排序法中,每经过一次数据交换(或移动)后()。

A、只能消除一个逆序

13、能消除多个逆序

C、不会产生新的逆序

D、消除的逆序个数一定比新产生的逆序个数多

标准答案:B

知识点解析:在一个排列中,如果一对数的前后位巴与大小顺序相反,即前面的数

大于后面的数,那么它们就称为一个逆序。快速排序的思想是:从线性表中选取一

个元素,设为T,将线性表中后面小于T的元素移到前面,而前面大于T的元素移

到后面,结果就将线性表分成两部分(称两个子表),T插入到其分割线的位置处,

这个过程称为线性表的分割,然后再用同样的方法对分割出的子表再进行同样的分

割。快速排序不是对两个相邻元素进行比较,可以实线通过一次交换而消除多个逆

序,但由于均与T(基准元素)比较,也可能会产生新的逆序。

5、下列选项中不属于结构化程序设计原则的是

A、可封装

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块

化、限制使用goto语句o

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

总结点数为

A、22

B、30

C、35

D、不可能有这样的树

标准答案:B

知识点解析:本题采用画图法来求出结果。首先先画出包含3个度为3的结点;然

后再添加4个度为1的结点,此时最大度为0的结点数为8。根据题目中描述的度

为0的结点数有15个,这时要在书中添加度为2的结点,直到度为0的结点数位

15o画图结束后,不管是什么样的树,总结点数都是30。

7、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属

于系统软件的是

A、编辑软件

B、操作系统

C、教务管理系统

D、浏览器

标准答案:B

知识点解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应

用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而

开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用

户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发

软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助

管理人员控制开发进程和项目管理的工具软件。

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

A、x%2==0

B、x/2

C、x%2!=0

D、x%2==l

标准答案:A

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

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

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

9、有嵌套的if语句:if(aVb)if(aVc)k二a;elsek=c:elseif(b<c=k=b;else

k=c:以下选项中与上述if语句等价的语句是()。

A、k=(a<b)?((b<c)?a:b):((b>c)?b:c);

R、k=(a<b)?((a<c)?a:c):((h<c)?h:c):

C、k=(a<b)?a:b;k=(b<c)?b:c;

D、k=(a<b)?a:b;k=(a<e)?a:c;

标准答案:B

知识点解析:题目中嵌套语句的含义是当aVb且aVc成立时,将a的值赋给匕

如果aVb成立而aVc不成立,则将c的值赋给k。如果a<h不成立而bVc成

立,则将b的值赋给k,如果aVb不成立且bVc也不成立,则将c的值赋给匕

判断条件表达式,只有B选项可以表示这个含义。

10、以下程序段中的变量已正确定义for(i=0;i<4:i++,i++)for(k=l;k<3:

k++);printf("*”);程产段的输出结果是

A、********

B、****

C、**

D、

标准答案:D

知识点解析:本题考查循环语句,题中第二个(内层)for循环之后有一个分号,意

思是每次循环中的操作为空,不执行任何操作。再循环结束后执行printf语句,即

只打出一个*。

11、若有代数式(其中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)错误,应该使用「abs()返回浮点数的绝对值。D选项中pow(x,n)

参数顺序错误。

12、以下选项中合法的常量是

A、2.7e

B、999

C、I23E0.2

D、OXab

标准答案:D

知识点解析:Oxab是十六进制表示的常量。

13、已知字符'AWJASCII代码值是65,字符变量cl的值是,ASc2的值是

则执行语句printf("%d,%d",cl,c2-2);的输出结果是

A、A,68

B、A,B

C、65,66

D、65,68

标准答案:C

知识点解析:在C语言中,字符常量在内存中占一个字节,存放的是字符的ASC

n码值。所有的字符常量都作为整型量来处理。在本题中输出语句用整型格式输出

字符时,输出的是其ASCII码值。因为字符W和TT的ASCII码值分别为65和

68,所以c2.2=68.2=66o

14^有以下说明和定义语句structstudent{intage;charnum[8];);structstudent

stu[3]={(20,"200401"),(21,"200402"),{19,“200403,'}};structstudent

*p=stu;以下选项中引用结构体变量成员的表达式错误的是

A、(p++)->num

B、P->num

C、(*p).num

D、stu[3].age

标准答案:D

知识点解析:本题考查结构体和结构体指针,stu是一个结构体数组,p是结构体

指针,且p指向stu数组,即p指向了slu数组的首元素地址。选项A)中p++表示

先引用p指针,然后p指向下一个元素,(p++)->num表示取出stu首元素的num

值,然扁P指向stu[l]元素地址;选项B)是通过结构体指针访问结构体元素,使用

“・>”运算符;选项C)中*p代表siu[O]元素,因此产p)num表示slu[O].num;选项

D)中,stu数组的长度为3,sm[3]已经超出数组范围,错误。

15、以下选项中,不合法的C语言用户标识符是

A、AaBc

B、a-b

C、a_b

D、_1

标准答案:B

知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并旦第

一个字符必须是字母或下划线,在选项B中出现了非法的字符

16、阅读以下程序#includeVstdio.h>main(){intcase:floatprintF:printf("请输

入2个数:");scanf(H%d%f,&case,&printF);printf("%d%f\n",case,

printF);}该程序在编译时产生错误,其出错原因是

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

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

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

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

标准答案:B

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

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

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

A、do-while语句构成的循环,当while语句中的表达式值为0时结束循环

B、do-while语句和while-do构成的循环功能相同

C、while-do语句构成的循环,当while语句中的表达式值为非0时结束循环

D、do-while语句构成的循环,必须用break语句退出循环

标准答案:A

知识点解析:没有while-do循环,选项B)错误;不管是while语句还是do-while

语句都是判定表达式的值为0时结束循环,选项A)正确,选项C)错误;循环语

句只要循环条件不满足就会退出循环,不必非得用break语句,选项D)错误;答

案选A)。

18、在C语言中,函数返回值的类型最终取决于

A、函数定义时在函数首部所说明的函数类型

B、return语句中表达式值的类型

C、调用函数时主调函数所传递的实参类型

D、函数定义时形参的类型

标准答案:A

知识点解析:C语言中函数的返回值类型是由定义函数时在函数首部所声明的类型

确定的。

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

A、if(sl==s2)ST:

13、if(strcpy(sl»s2)==l)Sr;

C、iffstrcmp(s2,s1)==O)ST;

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

标准答案:C

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

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

20、有以下程序,程序运行后的输出结果是main()[intm=l,n=2,*p=&m,

*q=&n,*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、2,1,2,1

D、2,1,1,2

标准答案:B

知识点解析:在主函数定义了3个整数指针变量p,q,r,并且使P指向m,q指

向n,再执行“r=p;p=q;q=r;”这三条语句,使q指向m,p指向n,再输出变量

“m,n,*p,*q”时,它们值分别为1,2,2,1。

21、以下叙述中正确的是

A、结构体类型中的各个成分均不能是数组或指针

B、结构体类型的变量,不能在声明结构体类型组成时一起定义

C、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的

D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义

标准答案:C

知识点解析:C语言允许用tyoedef说明一种新类型名,typedef语句的作用仅仅是

用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有

效。结构体变量定义有下面三种形式;(1)先定义结构,再说明结构变量。(2)在定

义结构类型的同时说明结构变量。(3)直接说明结构变量。

22、有以下程序main(){unsignedchara=8,c;C=a>>3:printf(H%d\n'\c);}

程序运行后的输出结果是

A、16

B、32

C、1

D、0

标准答案:c

知识点3析:在程序中对无符号字符变量a的值执行右移3位运算后,相当于」/

8,其值等于1,再赋给变量c。

23、有以卜程序#includeintfun(inta,inlB){returna+b;)main(){intx=6,y=7,z=8,

r;r=fun(fun(x,y),z-);printf(*'%d\n",r);}程序运行后的输出结果是

A、21

B、15

C、20

D、31

标准答案:A

知识点解析:函数fun的功能是返回两个形参的和。调用函数fun(x,y)时,将变量

x=6和y=7的值分别传送变量a和b,并且通过语句returna+b;将13返回给主函

数。继续调用函数fun(13,z・・),这里z-指将z的值参与运算后,再将z的值减1操

作;将13和8分别传送变量a和b,且通过语句remrna+b:将21返回给主函数。

囚此A选项正确。

24、结构化程序设计的基本原则不包括()。

A、多态性

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使

用goto语句,所以选择A)c

25、以下叙述中正确的是

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

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

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

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

标准答案:B

知识点解析:本题考查结构体变量作为函数参数,函数返回可以是结构体类型,也

可以是结构体类型的指针,结构体数组可以作为参数传给函数。

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

卷第2套

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

1、在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数()。

A、不同,但元素的存储顺序与逻辑顺序一致

B、不同,且其元素的存储顺序可以与逻辑顺序不一致

C、相同,元素的存储顺序与逻辑顺序一致

D、相同,但其元素的存储顺序可以与逻辑顺序不一致

标准答案:

知识之解析C:在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节

数相同,在存储空间中是按逻辑顺序依次存放的。

2、以下叙述中正确的是

A、在C语言程序设“中,所有函数必须保存在一个源文件中’

B、在算法设计时,可以把复杂任务分解成一些简单的子任务

C、只要包含了三种基本结构的算法就是结构化程序

D、结构化程序必须包含所有的三种基本结构,缺一不可

标准答案:B

知识点解析:模块化设计思想,就是把复杂的任务分成简单的子任务,心函数或者

过程描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有符干

个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一

定全要包括这三种结构,而算法不等于程序。

3、下列对队列的描述中正确的是()。

A、队列属于非线性表

B、队列按“先进后出”原则组织数据

C、队列在队尾删除数据

D、队列按“先进先出”原则组织数据

标准答案:D

知识点解析:队列(queue)是指允许在一端进行插入而在另一端进行删除的线性

表。允许插入的一端称为队尾;允许删除的一端称为队头。在队列这种数据结构

中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删

除。因此,队列又称“先进先出,域“后进后出”的线性表。

4、在面向对象方法中,不属于“对象”基本特点的是

A、一致性

B、分类性

C、多态性

D、标识唯一性

标准答案:A

知识点解析:对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独

立性。

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

A、工具

B、过程

C、方法

D、环境

标准答案:D

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

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

个环节的控制、管理。

6、下列定义变量的语句中错误的是()。

A、int_int;

B、doubleint_:

C、charFor;

D、floatUSS;

标准答案:D

知识点解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了

非法字符所以错误。标识符由字母、数字或下划线组成,且第一个字符必须

是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个

不同的字符,所以For不是关键字for。

7、数据库技术的根本目标是要解决数据的

A、存储问题

B、共享问题

C、安全问题

D、保护问题

标准答案:B

知识点解析:数据库中的数据具有“集成”、“共享”之特点,即数据库集中了各种应

用的数据,进行统一地沟造与存储,而使它们能被不同的应用程序所使用。因而数

据库技术的根本目标是解决数据的共享问题。

某系统

功能1」功能2际W

功登可|功出2|际习|功耐“巨耐2|

8、某系统总体结构如下图所示幽网网吧」该系统结

构图是

A、层次结构

B、网状结构

C、分支结构

D、循环结构

标准答案:A

知识点解析:层次结构(hierarchy)是一种操作系统的组织结构,其提供了一种隔离

操作系统各层功能的模型。其包括归属层次结构dissonance-attributionhierarchy维

度层次结构dilnensionhierarchy层次结构数据库hierarchicaldatabase等。网状结构

这一名词来自早期解剖学家用光学显微镜对脑干中央区网络状外观的描述,在光镜

下这部分组织学的特点是神经细胞分散,形态各异,大小不等,神经纤维交错穿行

其间,形成一种灰白质交织的结构,称之为网状结构。分支结构的执行是依据一

定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设

计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择

适当的分支语句。循环结构可以减少源程序重复书写的工作量,用来描述重复执

行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。

9、有以下程序:#include<stdio.h>main(){inta=l,b=2,e=3,d=0;if(a==l

&&b++==2)if(b!=2IIc--!=3)printf("%d,%d,%d\n”,a,b,cv);else

printf(''%d,%d,%d\n'',a’b,c);elseprint。''%d,%d,%d\n'',a,b,

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

A、1,3,2

B、1,3,3

C、I,2,3

D、3,2,1

标准答案:B

知识点解析:else总是和最近的if配对,所以进入第一个if语句中进行条件判断

时,因为是逻辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个

执行判断的结果为1。进入第二个if语句条件判断,因为b!=2条件成立,所以整

个条件表达式的值为真,不再执行逻辑或的第二个运算对象(c--!=3)c的值不变,也

不再执行第一个else语句。打印a的值1,b的值3,c的值3。

10、设有以下程序段inly;y=rand()%30+1;则变量y的取值范围是()。

A、0<y<30

B、0<y<30

C、l<y<30

D、1<y<30

标准答案:A

知识点解析:考查运算符与表达式,rand()%30求得范围在0-29之间的数据,+1

后的取值范围为1-30(1、30也包括在内),答案选A。

11>有以下程序:#include<stdio.h>main(){charch[]=,,uvwxyz,\*pc;

pc=ch;printf(,,%c\n,\*(pc+5));}程序的运行结果是()。

A、z

B、0

C、元素ch[5]的地址

D、字符y的地址

标准答案:A

知识点解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字

符、二则pc+5指向的是字符向后移动5位,指向学符,z:所以输出的*pc+5的值

即为'z',因此A选项正确。

12、以下程序的输出结果是O。for(i=0;i<4;i++,i++)for(k=l;k<3;k++);

printfC'*')

A、****

B、***

C、**

D、*

标准答案:D

知识点解析:本题考查多层f。「循环语句,题中第二个(内层)for循环之后乂一个

分号,意思是每次循环中的操作为空,不执行任何操作。在循环结束后执行printf

语句,即只打出一个*。

13、有以下程序:#include<stdio.h>intf(intx,inty)(retum((y-x)*x);}main()

{inta=3»b=4,c=5,d;d=f(f(a,b),f(a,c));printf(''%d\n'',d);}程序的

运行结果是()。

A、7

B、10

C、8

D、9

标准答案:D

知识点解析:调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用

f(f(a,1)),f(a,c));即调用f(3,6)函数返回9。

14>有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;i

A、50

B、45

C、60

D、55

标准答案:C

知识点解析:在函数inifun(intx[],inin)的定义中,变量sum使用了static修饰

符,这说明了变量sum为一个静态局部变量。由于在整个程序运行期间,静态局

部变量在内存中的静态存储区中占据着永久的存储单元。即使退出函数之后,下次

再进入该函数时.静态局部变量继续使用原来存储单元中原来的值。函数

intfun(intx[],inin)的功能是求出数组x[]各个元素的和。所以在主函数中,调用函

数Fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用Fun(b,4)后,变量

sum=15+6+7+8+9=45.所以s=15+45=60。

15、若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是()。

A、*(&w|0][0]+l)

B、*(*w+3)

C、*(*(w+l))

D、*(w+l)[4]

标准答案:D

知识点解析:A选项中*(&w[0][0]+l)表示w[0][l];B选项中*(*w+3)表示

w[0][3];C选项中士/w+D)表示w[l][0];而D选项中*(w+1)[4]的正确写法是

(*(w+l))[4],表示因此选择D选项。

16、<WTSJ?#inclUde#defineN3voidfun(inta[][N],intb[]){inti,j;

for(i=0;i

A、1,3,5,

B、2,4,8,

C、3,5,7

D、3,6,9,

标准答案:D

知识点解析:函数fun()的作用是求出二维数组中每一行中的最大元素,所以

在main()函数中执行完fun(x,y)后,数组y中的元素为二维数组x[N][N]每一行的

最大元素。

17、关于int*func(inta[10],intn);的叙述中正确的是()。

A、说明中的a[10]写成叫或*a效果完全一样

B、形参a对应的实参只能是数组名

C、func的函数体中不能对a进行移动指针(如a++)的操作

D、只有指向10个整数内存单元的指针,才能作为实参传给a

标准答案:A

知识点解析:函数func为返回值为指针的函数,有两个形参,形参数组a为指针

变量,保存实参数组的首地址,其元素个数由实参数组决定,因此说明中的a[10]

可以写成a口或本a。

18、关于文件操作中的标高符“EOF”的叙述中正确的是()。

A、EOF即NULL

B、文本文件和二进制文件都可以用EOF作为文件结束标志

C、EOF是在库函数文件中定义的符号常量

D、对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF

标准答案:C

知识点解析:EOF是在sldio.h库函数文件中定义的符号常量,其值等于一

EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示

文件内部的当前读写位置。使用fgctc函数,每读写一次,该指针均向后移动。

19^有以下程序#includemain(){inta=5,b=l,t;t=(a<<2)|b;printf("%d\n",t);)程序

运行后的输出结果是()o

A、1

B、11

C、6

D、21

标准答案:D

知识点解析:本题考查位运算,以及按位或操作,将a左移一位相当于是将a乘以

了4,所以a<<2等于20,二进制表示为00010100,与b按位或得到00010101,即

21,所以选项D正确。

20、有以下程序,其中k的初值为八进制数的nchidemain(){intk=011;

printf("%dW,k++);}程序运行后的输出结果是

A、12

B、11

C、10

D、9

标准答案:D

知识点解析:本题主要考查基本数据类型和格式化输出函数printf。变量k的初值

为011,表不8进制的11,十进制值为9,printf输出k++的值,++在k的后面

表示先使用后自增,因此输出的值为9。

21、以下不合法的字符常量是

A、弋”

B、N

C、’\018'

D、,\xcc,

标准答案:C

知识点解析:在C语言中,一个字符常量代表ASCII字符集中的一个字符,在程

序中用单引号把一个字将括起来用为字符常量。转义字符常量也是必须括在一对单

引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的Ascn

字符。在选项C中,、018,是用八进制数来代表一个字符常量,所以其中的数字只

能小于8,并不包括8。

22>有以下程序#includeVstdio.h>intfun(chars[])[char*p=s;while(*p=O)p++;

retum(p-s);}main(){printf("%d\n”,fun("OABCDEFH));}程序运行后的输出结果

A、6

B、7

C、1

D、0

标准答案:B

知识点解析:函数fun的主要功能是计算字符串中实际字符的个数,因此主函数中

调用。fun得到结果为7。

23、下面描述中错误的是()。

A、系统总体结构图支持软件系统的详细设计

B、软件设计是将软件需求转换为软件表示的过程

C、数据结构与数据库设计是软件设计的任务之一

D、PAD图是软件详细设计的表示工具

标准答案:A

知识点解析:详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确

定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,

所以A)错误。

24、下列与队列结构有关联的是

A、函数的递归调用

B、数组元素的引用

C、多重循环的执行

D、先到先服务的作业调度

标准答案:D

知识点解析:队列的修改是依先进先出的原则进行的,D正确。

25有以下程序#includemain(){intk=5,n=0;do{switch(k){easel:case3:n+=l;k-

-;break;default:n=O:k-;case2:case4:n+=2;k-;break:}

printf("%d';n);}while(k>0&&n<5);)程序运行后的输出结果是

A、02356

B、0235

C、235

D、2356

标准答案:C

知识点解析:k的值为J,逐个对case语句进行匹配,均不匹配,执"detaull下的语句

n=0;k-在执行case2:后面的空语句,与case4:后面的n+=2;k--;执行break语句跳出

switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k>0&&n<

5条件判断为真,第二次执行循环体,执行case3:后面的n+=l;k--;再执行break语句跳

出循环,此时打印n的值3,此时k的值为2o第三次执行循环体k的值为2,满足条

件,执行case2:case4:后面的语句n+=2,k--,跳出循环体。打印n的值5。此时n不小

于5了条件k>0&&n<5不成立了,所以结束循环。整个程序的打印结果为235o

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

卷第3套

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

1、设数据结构B=(D,R),其中D={a,b,c,d,e,f}R={(f,8),(d,b),(e,

d),(e,e),(a,c)}该数据结构为()。

A、线性结构

B、循环队列

C、循环链表

D、非线性结构

标准答案:A

知识点解析:数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二

是D上的关系,它反映了D中各数据元素之间的前后件关系,通常记为R。即一

个数据结构可以表示成B=(D,R)o其中B表示数据结构。为了反映D中各数据元

素之间的前后件关系,一般用二元组来表示。例如,假设a与b是D中的两个数

据,则二元组(a,b)表示a是b的前件,b是a的后件。本题中R中的根结点为f,

元素顺序为JaTC—eidTh.满足线性结构的条件.

2、下列描述中正确的是

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

B、栈与队列是非线性结构

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

D、只有根结点的二叉树是线性结构

标准答案:A

知识点解析:线性表的链式存储结构称为线性链表。线性表链式存储结构的基本单

位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。各数据元素之

间的前后件关系是由各结点的指针域来指示的,指向线性表中第一结点的指针

HEAD称为头指针,当HEAD=NULL时称为空表。栈、队列和双向链表是线性结

构。树是一种简单的非线性结构。在树这种数据结构中,所有数据元素的关系具有

明显的层次特征。二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结

构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非

线性结构。

3、下列四个叙述中,正确的是()。

A、C程序中的所有字母必须小写

B、C程序中的关键字必须小写,其他标识符不区分大小写

C、C程序中的所有字母都不区分大小写

D、C程序中的所有关键字必须小写

标准答案:D

知识点解析:C语言只规定所有的关键字必须小写,而标识符中的字母则既可以大

写,也可以小写,但大小写是有区别的。例如,else是关键字,而ELSE可以作为

标识符使用。

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

A、15

B、16

C、17

D、18

标准答案:A

知识点解析:设完全二叉树的结点数为n,根据深度为k的二叉树至多有2k.i个结

点,再根据完全二叉树的定义可知,2k-,-l<n<2k-lo本题中完全二叉树的深度为

5,则25"-lVnW25-l,15<n<31o因此,结点数不能为15。

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

A、在C语言中,时二进制文件的访问速度比文本文件快

B、在C语言中,随机文件以二进制代码形式存储数据

C、语句FILEfp;定义了一个名为fp的文件指针

D、C语言中的文本文件以ASCII码形式存储数据

标准答案:C

知识点解析:在C语言中,文件指针实际上是指向一个结构体类型的指针,一般

称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指

针变量的一般形式为:FILE*指针变量名;选项C中少了“*”,所以选项C错误。

6、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结

点数为

A、219

B、229

C、230

D、231

标准答案:B

知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总

是比度为2的结点多一个,故总结点数=叶子节点数十度为2的节点数+度为1的节

点数=80+79+70=229。

7、在数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是

()。

A、文件系统阶段

B、人工管理阶段

C、文件系统阶段和数据库阶段

D、人工管理阶段和文件系统阶段

标准答案:B

知识点解析:数据库管理技术的三个阶段是人工管理阶段、文件系统阶段和数据库

系统阶段。人工管理阶段没有专门的软件对数据进行管理。

8、以下选项中能用作数据常量的是()。

A、115L

B、0118

C、1.5el.5

D、0115

标准答案:A

知识点解析:A选项中115L表示115是长整型数据,合法。B选项是八进制常量

的表示方法,但是在八进制中不能含有数字8,所以B选项错误。C选项中e后面

应该是整数,而不能是小数1.5,所以C选项错误。D选项中八进制常量应该是

数字开始,而不是字母“0”开始。

9、设有某函数的说明为:int*func(inta[10],intn);则下列叙述中,正确的是

()。

A、形参a对应的实参只能是数组名

B、说明中的a[10]写成a口或*a效果完全一样

C、func的函数体中不能对a进行移动指针(如a++)的操作

D、只有指向10个整数内存单元的指针,才能作为实参传给a

标准答案:B

知识点解析:考查数组名作为函数参数。传递给形参的实参可以是数组名,还可以

是指向该数组的指针变量,选项A错误;a[10].a[]、*a做形参都是接受实参数组

首地址,效果一样,选项B正确;数组名可以看作一个指针常量,对其进行自加

自减运算相当于指针变量的自加自减,选项C错误;数组名作为函数参数时,只

传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的

长度,形参数组和实参数组长度也可以不同,选项D错误。故答案选B。

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

A、C语言函数可以嵌套调用,例如:fUn(fun(x))

B、C语言程序是由过程和函数组成的

c、c语言函数不可以单独编译

D、C语言中除了main函数外,其他函数不可作为单独文件形式存在

标准答案:A

知识点解析:C语言程序是由函数组成的,所以B选项错误。C语言函数可以单独

进行编译,所以C选项错误。每个C程序中必须包含一个main函数,但不一定是

每个C程序文件中都必须有,用户单独编写的某个函数也可以存储为一个C程序

文件,所以D选项错误。

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

A、在switch语句中不一定使用break语句

B、在switch语句中必须使用default语句

C、break语句必须与switch语句中的ease配对使用

D、break语句只能用于switch语句

标准答案:A

知识点解析:default语句在switch语句中可以省略,所以B选项错误;switch语句

中并非每个case后都需要使用break语句,所以C选项错误;break语句还可以用

于for等循环结构中,所以D选项错误。

12、若有以下程序#inchidechar*a=,,you,,tcharb[]="WelcomeyoutoChina!1':

main(){inti,j=0;char*p;for(i=0;b[i]!=,\0\i++){if(*a==b[i]){p=a;

),,

for(j=i;*P!=\O;j++){if(*P!=b[j])break;p++;}if^*p==\O9break;)}

printfC%s",&b[i]);}则程序的输出结果是

A、youtoChina!

B、toChina!

C>meyoutoChina!

D、China!

标准答案:A

知识点解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a.

如果含有则退出,此时i为子串a在字符串b中第一次出现的位置。因此最后的输

出函数则从第i个字符开始一直输出到字符串的末尾。

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

A、用户所定义的标识符允许使用关键字

B、用户所定义的标识符应尽量做到“见名知意”

C、用户所定义的标识符必须以字母或下划线开头

D、用户定义的标识符中,大、小写字母代表不同标识

标准答案:A

知识点解析•:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字

和下划线组成,并且第一个字符必须为字母或下划线,凡是要求标识符的地方都必

须按此规则命名。在C语言的标识符中,大写字母和小写字母被认为是两个不同

的字符。在选择标识符时,应注意做到“见名知义'',即选择具有一定含义的英文单

词或汉语拼音作为标识符,以增加程序的可读性。

14、有以下程序:#include<stdio.h>main(){charch[]=,,uvwxyzM,*pc;

pc=ch;prinff("%c\n",*(pc+5));}程序的运行结果是()。

A、z

B、0

C、元素ch[5]的地址

D、字符y的地址

标准答案:A

知识点解析:语句pc二ch;使得指针变量指向字符数组ch的首地址,即指向字

符\11则pc+5指向的是字符向后移动5位,指向字符所以输出的*pc+5的值

即为因此A选项正确。

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

,,,,,

p[20]={a\'b','c',d},q[]=''abc'',r[]=abcde;strcat(p,r);

strcpy(p+strlen(q),q);printf(''%d\n'‘,strlen(p));}程序的运行结果是()。

A、11

B、9

C、6

D、7

标准答案:C

知识点解析:strcpy:字符串复制函数;sirlen:求字符串长度函数(注意:不包含字

符串结束标记字符'\0');strcat:字符串连接函数。执行完语句streal,(p,r);

后,p数组中存储的元素为a,b,c,d,a,b,c,d,e;执行语句

strcpy(p+strlen(q),q);得到的结果是将q所指向的字符串复制至p+slrlen(q)开始的

存储位置,因为strlen的值为3,即p+3开始存储q中的元素,所以执行完

strcpy(p+strlen(q),q)语句后,字符薮组p[20]的存储元素为a,b,c,a,b,c;所

以strlen(p)的结果为6,因此C选项正确。

16、有以下程序段:inifun(char**){char*P:P=s:if(*s==O)return0:

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

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

B、实现字符串的赋值

C、计算字符串的长度

D、将字符串逆序存放

标准答案:C

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

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

之差,即字符串长度。

17、关于continue和break的叙述中正确的是()。

A、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句

体,并终止循环体的执行

B、只能在循环体内和switch语句体内使用break语句

C、conlinue语句的作用是:在执行完本次循环体中剩余语句后,终止循环

D、在while语句和do一while语句中无法使用continue语句

标准答案:B

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

循环结构中终止循环体,但一次只能跳出或终止一层switch语句或循环,因此,

当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体,

并不能终止循环体的执行。continue语句的作用是结束本次循环,在while和

dowhile循环中.continue语句使得流程直接跳到循环控制条件的测试部分,判断

是否会进入下一次循环。

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

A、变量

B、程序行

C、函数

D、语句

标准答案:C

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

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

19、有以下定义语句,编译时会出现编译错误的是

A、chara=,\x2d,;

chara=>\n,;

C、chara=H;

D、chara="aa,*;

标准答案:D

知识点解析:D选项中将字符串常量赋给字符变量a是错误的。

20、若变量已正确定义并赋值,以下不能构成C语句的选项是

A、A=a+b;

B、B++;

C、a=a+b

D、A?a:b;

标准答案:C

知识点解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。

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

A、字符常量需要用单引号括起来

B、字符常量在内存中占2个字节

C、转义字符要用双引号括起来,以便与普通的字符常量区分开

D、字符常量是不能进行关系运算的

标准答案:A

知识点解析:字符常量是由单引号括起来的ASCII码表中的字符,特殊的转义字

符也要用单引号括起来表示其为一个字符,字符常量在内存中占1个字节,参与运

算的时候,通常使用该字符的ASCH码进行计算。答案选A。

22、若变量均已正确定义并赋值,以下合法的C语言赋值语句是

A、x=n%2.5:

B、x+n=i;

C、x=5=4+l;

D、x=y=5:

标准答案:D

知识点解析:选项D)的含义是把关系表达式y==5的值赋给变量x。所以这是一条

正确的赋值语句。因为赋值运算符左侧的操作数必须曩:一个变量,而不能是表达

式或者常量。因为求余运算符“%”两侧的运算对象都应当是整型数据。

23、以下叙述中正确的是

A、在C程序中的八进制和十六进制,可以是浮点数

B、八进制数的开头要使用英文字母o,否则不能与十进制区分开

C、整型变量可以分为int型、shorl型、long型和unsigned型四种

D、英文大写字母x和英文小写字母x都可以作为二二进制数字的开头字符

标准答案:C

知识点解析:当型变量分为以T4种类型:①基本型:以吗表示。②短整芈:

以shortint表示,或以short表示。③长整型:以longint表示,或以long表示。

④无符号型:以unsignedint表示,选项C)正确,实型常量仅有十进制表示形式,

八进制以数字0开头,十六进制开头为Ox或者0X,不是二进制。

24、设有定义:intnl=O,n2,*p=n2,*q=nl;,以下赋值语句中与n2=nl;语

句等价的是

A^*p=*q;

B、p=q;

C、*p=n1;

D、p=*q;

标准答案:A

知识点解析:本题考查背针的使用。指针p和q分别指向变量n2和nl,n2=nl可

以用指针来代替,即*p代替n2,*q代替nl。

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

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

A、5.175000

B、5.169000

C、5.170000

D、5.168000

标准答案:B

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

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

26、以下选项中非法的字符常量是

A、'\019'

B、,\65,

C、'\xfF

D、

标准答案:A

知识点解析:本题考查字符型常量。选项A)错误,使用了转义字符“\",U19以。

开始表示8进制,8进制数字的范围是0-7,没有9;选项B)、C)和D)正确。

27、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是()。

A、(E>0||E<0)

B、(E==0)

C、(!E==0)

D、(E!=0)

标准答案:B

知识点解析:while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B

选项中表达式的含义正好相反,选择B选项。

28、有以下程序,程序运行后的输出结果是#inchide#defineS(x)4*(x)*x+1void

main(){intk=5,j=2;printf("%d\n",S(k+j));}

A、197

B、143

C、33

D、28

标准答案:B

知识点解析:这道题涉及到带参数的宏的定义和替换这个知识点。在程序中定义了

带参数的宏S(x),当在主函数中用参数k+i调用宏S时:根据宏替换的原则,则

S(k+j)=S(5+2)=4*7*5+2+1=143。

29、在关系数据库中,用来表示实体间联系的是

A、属性

B、二维表

C、网状结构

D、树状结构

标准答案:B

知识点解析•:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状

模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。

30、以卜.函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include

<stdio-h>#defineN10voidfun(intx[N]){inti=0;while(i<N)scanf("%d",

);}在程序中下划线处应填入的是

A、x+i

B、x[i+l]

C>x+(i++)

D、x[++i]

标准答案:c

知识点解析:本题考查数组和scanf函数的使用。程序通过while循环来给数组元

索赋值,赋值语句通过调用scanf函数来实现。scanf函数从键盘接收数据,第二个

参数是数据保存的地址,因此选项B)和选项D)不是地址,错误。选项A)和选项

C)是地址,但是选项A)的i值不会发生变化,循环体内每次都是给同一个元素赋

值,不满足要求,选项C)正确。

31有以下程序段intk=0,a=l,b=2,c=3:k=a<b?b:a;k=k>c?c:k:执行程

序段后,k的值是

A、3

B、2

C、1

D、0

标准答案:B

知识点解析:本题主要考查条件表达式。k=aVb?b:a中aVb为真,因此k的值为

b,即k=2。k=k>c?c:k中k>c为假,k的值为2c

32>有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是

A、a=x<>y

B、a%(int)(x-y)

C、(a*y)%h

D、y=x+y=x

标准答案:B

知识点解析:C语言中没有“V>”运算符,所以A选项错误,“%”运算符的两个操

作值必须为整型数据,所以B选项正确,的结果为double型,所以C选项错误?不

能将值赋给像x+y这样的表达式,所以D选项错误。

33、设变量己正确定义,则以下能正确计算仁n!的程序段是

A、f=0;for(i=l;i<=n;i++)f*=i;

B、f=l;for(i=l;i<n;i++)f*=i;

C>f=l;for(i=n:i>l;i++)f*=i;

D、f=l;for(i=n;i>=2;i—)f*=i;

标准答案:D

知识点解析:本题主要考查for循环的使用。题目要求计算阶乘n!,通过for循环

来实现,循环变量i可以从1到n(包括n)或者从n到1,在循环体内做累乘。选项

A)中,累乘变量的初值为0,最终计算结果也为0;选项B)中循环次数为n-l

次,累乘结果少乘了n;选项C)是死循环;选项D)正确。

34、已有定义:chara[]="xyz",b[]={V,'y'「z’);,以下叙述中正确的是

A、数组a和b长度相同

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

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

D、上述说法都不对

标准答案:C

知识点解析:本题考查字符数组的定义。charalJ="xyz",bU=『x:y,N}:定

义了两个字符数组a和b,a数组存放的是一个字符串,字符串以“/0”作为结束标

志,数组a的长度必须加上结束符长度1,因此数组a的长度为4。数组b中有三

个元素,长度为3。

35、若有以卜程序#includeVstdio.h>intk=7;voidf(int**s){int*t=&k;*s=t;

printf("%d,%d,%d,”,k,*t,**s);}main(){inti=3,*p=&i,**r=&p:

f(r);printf("%d,%d,%d\n",i,*p,**r);}贝]程序的输出结果是

A、3,7,7,7,7,7

B、7,7,7,3,3,3

C、3,3,3,7,7,7

D、7,7,7,3,7,7

标准答案:D

知识点解析:本题考查了二级指针,二级指针可以保存一级指针的地址。主函数中

p指向i,r指向p,函数调用后s指向p,在f函数中I指向全局变量k=7,s指向

3同时s保存了实参p的地址,此时p也指向3输出三个7,流程转到主函数,i

的值为3,p以及r的值为7。

36、设有定义语句int(*D(int);则以下叙述正确的是()。

A、f是指向函数的指针变量,该函数具有一个int类型的形参

B、f是基类型为int的指针变量

C、f是指向加类型一维数组的指针变量

D、f是函数名,该函数的返回值是基类型为int类型的地址

标准答案:A

知识点解析:(*f)(im)中f为函数指针变量,可以指向任何已经定义的合法的函

数,该函数带有一个而类型的形参,所以答案选A。

37、有以卜程序#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=c;)main(){int

x=3,y=5,»p=&x,*q=&y;fun(p,q);printf("%d,%d,"JpJq);fun(&x,&y);

printf("%d,%d\n",*p*q);)程序运行后的输出结果是()。

A、3,5,3,5

B、3

温馨提示

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

评论

0/150

提交评论