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

下载本文档

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

文档简介

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

卷第1套

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

1、按照“先进后出”原见组织数据的数据结构是()。

A、队列

B、栈

C^双向链表

D、二叉树

标准答案:B

知识点解析:栈按照“先进后出”(FILO)或“后进先出”(IAFO)组织数据。

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

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

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

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

读到第1个数据

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

标准答案:A

知识点解析:A选项正确,C语言通过文件缓冲区对文件进行操作,如果操作完成

后不进行关闭文件,可能导致文件缓冲区中的数据丢失。B选项错误,打开一个已

存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源

文件进行追加操作等:C选项错误,在一个程序中当对文件进行了写操作后,用

fSeek()函数进行事新定位就能够读到第1个数据;D选项错误,C语言中的文,牛可

以进行随机读写。

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

点数为

A、219

B、221

C、229

D、231

标准答案:A

知识点解析:在二叉树中,叶子结点个数为no,则度为2的结点数n2=n()-l。本题

中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数二叶子结点

数+度为1的结点数+度为2的结点数=70+80+69=219。

4、设一棵树的度为3,其中没有度为2的结点,且叶子结点数为5。该树中度为3

的结点数为

A、1

B、2

C、3

D、不可能有这样的树

标准答案:B

知识点解析:树的度是指一棵树中,最大的结点的度称为树的度。本题中树的度为

3,那么树中最少有一个结点的度为3。而树中没有度为2的结点,叶子结点数为

5,度为1的结点下面只有一个叶子结点。因此,该树中含2个度为3的结点满足

题目要求。

5、有以下程序:#include<stdio.h>main(){intk=10:printf("%4d,%o,%x

\n”,k,k,k);}程序的运行结果是()。(□代表一个空格。)

A、10,12,a

B、DDIO,012,a

C、010,12,a

D、nnlO,12,a

标准答案:D

知识点解析:%4d表示先输出占4个字符的卜进制,10已占2个字符,故先输出

2个空格,然后输出10;%0表示输出八进制,所以输出10的八进制为12;%x

表示输出十六进制,即a。

6、在软件开发中,需求分析阶段可以使用的工具是

A、N—S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点解析:在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),数据

字典(DD)、判断树和判断表。

7、某系统结构图如下图所示该系统结

构图的宽度是()。

A、2

B、3

C、4

D、n

标准答案:D

知识点解析:系统结构图的宽度指的是整体控制跨度(最大模块数的层)的表示,

上图中系统结构图的宽度为n,答案选D。

8、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C

的联系是

A、一对一

一对多

C、多对一

D、多对多

标准答案:B

知识点解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则

通过关系之间的传递,则A和c之间也是一对多的联系。

9、结构化程序设计的3种结构是()。

A、顺序结构,分支结构,跳转结构

B、顺序结构,选择结构,循环结构

C、分支结构,选择结构,循环结构

D、分支结构,跳转结构,循环结构

标准答案:B

知识点解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结沟就

足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结

构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效

率,降低软件的开发成本。

10、若有定义:intx[10],*pt=x;,则对x数组元素的正确引用是()。

A、pt+3

B、*&x[10]

C、*(pt+10)

D、*(x+3)

标准答案:D

知识点解析:没有A选项的引用形式。*与&放在一起作用抵消,但x[10]下标10

超出了数组下标范围,所以B选项错误。最大只能引用到x[9],而*(pt+i)表示引用

指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。D选项

正确。

11、下面关于对象概念芍述正确的是

A、对象间的通信靠消息传递

B、对象是名字和方法的封装体

C、任何对象必须有继承性

D、对象的多态性是指一个对象有多个操作

标准答案:A

知识点解析:对象是面向对象方法中最基本的概念。操作描述了对象执行的功能,

通过消息传递,还可以为其它对象使用。操作过程是被封装在对象中,用户看不

到,称之为对象的封装性。对象的多态性是指同一个操作可以是不同对象的行为。

不是所有的对象都必须有继承性。

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

A、C程序函数中定义的自动变量,系统不自动赋确定的初值

B、在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语

句内

C、C程序函数中定义的赋有初值的静态变量,每调用一次函数赋一次初值

D、C程序函数的形参不可以说明为static型变量

标准答案:c

知识点解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,

变量定义除在函数开始位住外,在复合语句开始也可以;C选项描述是错误的,函

数内的静态变量只在第一次调用时赋值,以后调用保留上次的值;D选项描述也正

确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。

13、可在C程序中用作用户标识符的一组标识符是

A、and_2007

B、Datey-m-d

C、HiDr.Tom

D^caseBigl

标准答案:A

知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和

数组组成,且必须以字母或者下划线开始。选项A)正确;选项B)中使用了字符

“-";选项C)使用了字符选项D)中的case是C语言关键字,不能作为用户标

识符。

14、以下选项中合法的变量是

A、5a

B、A%

C、10

D、sizcof

标准答案:C

知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变

量名、函数名、数组名、文件名、类型名等。其中标识符构成:①标识符由字

母、数字和下划线组成;②第一个字符必须为字母或下划线:因此选项A中数字

开头,选项B出现了非法字符%,而选项D中sizeof为关键字,不能为变量命

名。

15、若有定义语句:doublea,*p=&a;以下叙述中错误的是

A、定义语句中的*号是一个说明符

B、定义语句中的p只能存放double类型变量的地址

C、定义语句中*p=&a把变量a的地址作为初值赋给指针变量p

D、定义语句中的*号是一个间址运算符

标准答案:D

知识点解析:在指针定义语句“doublea,*p=&a"中,指针变量p前面的*号,只是

一个说明符,说明变量p是指针类型的变量。

16、若有定义语句:doublex,y,*px,*py;执行px=&x;py=&y;正确的输入语

句是

A、scant("%f%r&x,&y);

scanf("%f%『,x,y);

C、scanf(n%lf%leu,px,py);

D、scanf(n%lf%lf,x,y);

标准答案:C

知识点解析:本题考查scanf语句。scanf()函数的一般格式为:scanf(”格式字符串

”,输入项首地址表),对于double类型数据,输入时候要加上1修饰,否则会产生

错误的输入信息,同时瑜入项必须是地址,可以使保存变量地址的指针变量。

17,有以下程序voidfun(inta,intb,intc){a=b:b=c:c=a:)main(){inta=

10,b=20,c=30;fun(a,b,c);printf("%d,%d,%d\n”,c,b,a);}程序

运行后的输出结果是

A、10,20,30

B、20,30,10

C、30,20,10

D、0,0,0

标准答案:C

知识点解析:函数fun中采用了变量作为参数,那么参数传递以后,形参a.b,c的

变化对于实参ahc是没有影响的,因此主函数中ahc的值经过fun调用以后.值

没有变化。

18、若有以下程序#inckideVstdio.h>main(){inti,j=0;chara[]="Howare

you!",b[10];for(i=0;a[i]:i++)if(a[i]==,,)b[j++]=a[i+l];b[j]=,\O,;printf("%s

\n”,b);}则程序的输出结果是

A、Howareyou

B、Hay!

C^Howareyou!

D、ay

标准答案:D

知识之解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是

否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符

串“Howareyou!”中,第一个空格后面字符为H,第二个空格后厩字符为V。

19、有以下程序#includeVsldio.h>intfun(intx){intp;if(x::

O||x==l)return⑶;p=x-fun(x-2);return(p);)main(){printf("%d\n",fun(9));}程

序运行后的输出结果是

A、5

B、9

C、4

D、7

标准答案:D

3xM)或者产1;

{EUn(x・2)其他.初值x的值为

9,因此fim(9)=9-fun(7)=9・(7・(5・(3・3))),因此答案为7。

20、以下叙述中错误的是

A、函数可以返回地址值

B、改变函数形参的值,不会改变对应实参的值

C、当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

D、可以给指针变量赋一个整数作为地址值

标准答案:D

知识点解析:指针变量的值只能是存储单元地址,而不能是一个整数,选项D)的

描述是错误,为待选答案。函数可以返回内存空间的地址,同时函数形参和实参分

别占用不同的内存单元,改变形参的值不会改变对应实参的值,在头文件stdio.h

中,NULL被定义为void型的指针。

21、执行以下程序后,test.txt文件的内容是(若文件能正常打.开)#includcV

stdio.h>main(){FILE*fb;char*sl="Fortran",*s2="Basic";

if((fb=fopen("test.txt","wb"))=NULL){printfCCan^opentest,txtfile\n");

exit(l);)fwrite(sl,7,1,fl));/*把从地址si开始的7个字符写到fb所指文件

中*/fseek(fb,0L,SEEK.SET);

A、Basican

B、BasicFortran

C^Basic

D、FortranBasic

标准答案:A

知识点解析:本题主要考查文件的基本操作。在main函数中,首先打开lexl.1x1

文件,然后通过fwrite函数把si字符串写到文件中,接下来通过fseek函数把文件

指针移动到文件开始,再调用fwrite函数把s2字符窜写到文件中,s2的长度小于

si的长度,因此第二次写的时候会覆盖第一次写的部分内容,程序运行后

test.text中内容为Basican。

22、有以下定义和语句:structworkers{intnum;charname[20];charc;struct

{iniday;intmonth:intyear;)s;};structworkersw,*pw;pw=&w;能给w

中year成员赋1980的语句是

A、w.year=1980;

pw->year=1980;

C>w.s.year=I980;

D、*pw.year=1980;

标准答案:c

知识点解析:本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量

也可以是一个结构体。在本题中works这个结构体中包含了结构体s。所以对结构

体变量w中year成员的引用是w.s.year。

23、若有以下程序^include#include#includcstructstu{char*name,gender;int

score;};main(){structstua={NULL,'m',290},b;a.namc=(char*)malloc(10);

strcpy(a.namc,"Zhao");b=a;b.gender='f;b.score=350;strcpy(,"Qian");

printf(n%s,%c,%d,H,,a.gender,a.score);printf("%s,%c,%d\n",,

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

A、Qian,m,290,Qian,f,350

B、Zhao,m,290,Qian,f,350

C、Qian,f,350,Qian,f,350

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

标准答案:A

知识点解析:语句"=(char*)malloc(10);strcpy(,"Zhao");"将字符串

“Zhao”赋值给了a中的字符指针a.namc,之后把结物体a中的数据赋值给b,然后

改变b的gender、score这两个成员的值,而和指向同一块内存地

址,所以当执行语句"strcpy(,"Qian");"时,和的值均为

“Qian”,所以最终结构体变量a的数据为{“Qian”,?m?,290},b中的数据为

{"Qian",?f?,350}o

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

A、3个

B、2个

C、1个

D、任意多个

标准答案:D

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

模式只能有一个。故本题答案为D选项。

25、若有定义,inla=3,*p=&a,**q=&p;,则以下叙述中错误的是()。

A、q是指针变量,*q就是变量a

B、p是指针变量,p指句变量u

C^q指向变量p,所以*q指向变量a

D、*p与秘q都代表变量a

标准答案:A

知识点解析:由题意可知:指针变量p指向变量a,p的值是a的地址;指针变量q

指向变量p,q的值是p的地址。q是指针变量,q指向p,*q是变量p,所以选项

A错误;p是指针变量,p指向变量a,所以选项B正确;由于q指向p,因此*q

指向a,所以选项C正确;*p和**q都代表变量a,所以选项D正确。故本题答案

为A选项。

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

卷第2套

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

1、下列数据结构中,屈于非线性结构的是

A、循环队列

B、带链队列

C、二叉树

D、带链栈

标准答案:C

知识点解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数

据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线

性结构,而二叉树是非线性结构。

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

()。

A、prinfR"x=%5.Of\nr,,x);

B、printf("x=%f\n",x);

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

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

标准答案:A

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

按照浮点型输出,选项B正确;加入长度格式符1即“%1”表示按照双精度浮点型

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

"%.2『或"%0.2fl选项D正确;控制输出宽度则是用整数表示,如“%5/,选

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

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

3、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结

点在第1层)

A、3

B、6

C、8

D、12

标准答案:D

知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点

多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二

叉树为12层,每层只有一个结点。

4、T列叙述中正确的是

A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)

C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(k)g2n)

D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlogzn)

标准答案:A

知识点解析:本题主要考查的知识点为查找技术。顺序查找的使用情况:①线性

表为无序表:②表采用链式存储结构。二分法查找只适用于顺序存储的有序表,

并不适用于线性链表。

5、在深度为7的满二叉树中,度为2的结点个数为

A、64

B、63

C、32

D、31

标准答案:B

知识点解析:因为在任意的二义树中,度为0的结点(即叶子结点)总比度为2的

结点的个数多1个,而度为。的结点数n()=2mJ(其中m为二叉树的深度)。本题

的度为0的结点个数no=27/=26=64°因此,度为2的结点数n2=no-l=63。所以选

项B正确。

6、下列描述中,正确的是()。

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

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

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

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

标准答案:A

知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结

构分为两大类型:线性结构与非线性结构.如果一个非空的数据结构满足下列两个

条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后

件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表

都是线性结构,而二叉树是非线性结构。

7、开发大型软件时,产生困难的根本原因是()。

A、大型系统的复杂性

B、人员知识不足

C、客观世界千变万化

D、时间紧、任务重

标准答案:A

知识点解析:随着计算双软件规模的扩大,软件本身的复杂性不断增加,研制周期

显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了

人们难以控制软件发展的局面,即所谓的“软件危机

X、以下选项中非法的C语言字符常量是

A、

B>,\007,

C、'aa'

D>,\xaa,

标准答案:C

知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号

把一个字符括起来作为字符常量。

9、有以下程序:#includemain(){charc:c=getchar():

do{putchar(C++);}while((C=getchar())!='#');}程序运行时从第一列开始输入

abcdefg##<回车〉,则输出结果是()。

A^abcdefg

B、bcdefgh

C、abcdefg#

D、bcdefgh#

标准答案:A

知识点解析:运算符放在变量后面时,先参与其他操作,再对变量+1。

putchar(c++)表示先输出当前c值.再对c值+J当输入ahcde##时,在while语句

中,程序输入#时循环退出。因此输出为abed吨,故A选项正确。

10^有以下程序#include<sldio.h>voidmain(){intn=2,k=l;while(l(k>

0IIn++));printf「%d%d\n”,k,n);)程序运行后的输出结果是()。

A、02

B、13

C、57

D、12

标准答案:D

知识点解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,

在执行while语句时,由于表达式k的值大于。为其,所以不再需要判断“n++”是

否为真,"出>0|"++)”表达式的值为真。”!也>0||什+)”表达式的值为假,所以

while语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输

出变量k和n的值是1和2。

II、以下叙述中正确的是

A、关系运算符两边的运算对象可以是C语言中任意合法的表达式

B、在C语言中,逻辑真值和假值分别对应1和0

C、对于浮点变量X和Y,表达式:x==y是非法的,会出编译错误

D、分支结构是根据算术表达式的结果来判断流程走向的

标准答案:A

知识点解析:C语言中没有逻辑类型,用非零表示逻辑真。0表示逻辑假,选项B)

错误,无法判断两个浮点变量是否相等,但是x==y不会出现编译错误,选项C)错

误,分支结构根据表达式的值,不一定为算术表达式,选项D)错误。

12、在数据库设计中,将E・R图转换成关系数据模型的过程属于()。

A、需求分析阶段

B、概念设计阶段

C、逻辑设计阶段

D、物理设计阶段

标准答案:C

知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据

库中,即设计出表,所以属于辑设计阶段。

13>函数ftcll(fp)的作用是()。

A、得到fp所指向文件的当前读写位置

B、初始化文件的位置指针

C、移动文件的位置指针

D、以上答案均正确

标准答案:A

知识点解析:肌11函数的调用形式为:longt=ftcll(fp);。其中fp是文件指针,t是

所获得的文件当前位置指针的位置。ftell(fp);的功能是给出当前位置指针相对于

文件开头的字节数.本题答案为A)c

14、在软件开发中,需求分析阶段产生的主要文档是

A、软件集成测试计划

B、软件详细设计说明书

C、用户手册

D、软件需求规格说明书

标准答案:D

知识点解析:在软件开发过程中,需求分析阶段产生的主要文档是软件需求规格说

明书。

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

A、x%2==0

B、x/2

C、x%2!=0

D、x%2==1

标准答案:A

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

16、有以卜程序#inc1ude〈sidio.h>main(){ints,t,A=10;doubleB=6:

s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6平台上编译运

行,程序运行后的输出结果是

A、4,4

B、2,4

C、4,8

D、10,6

标准答案:c

知识点解析:关键字sizcof用于测试不同类型变量所占的内存空间,返回所占的字

节数。在VC编译系统中,整型变量占用4个字节的内存空间,而双精度型变量占

用8个字节的内存空间。

17、有以下程序:#includemain(){intm=l,n=2,*p=&m,*{i=&n,*r;r=p:

p=q:q=r:printf("%d,%d,%d,%d\n”,m,n,*p,*q);}程序的运行结果

是()口

A、2,1,1,2

B、1,2,1,2

C、2,1,2,1

D、1,2,2,1

标准答案:D

知识点解析:intm=l,n=2,*p=&m,*q=&n,*r;即指针变量p指向m,指针变

量q指向n,r=p;p=q;q=r;即通过指针变量r,将指针p和指针q的指向交换,

因此最后输出1,2,2,1。

18、以下叙述中正确的是

A、C程序书写格式严格,要求一行内只能写一个语句

B、C程序书写格式自由,一个语句可以写在多行上

C、C程序中的注释只能出现在程序的开始位置和语句的后面

D、用C语言编写的程序只能放在一个程序文件中

标准答案:B

知识点解析:本题主要考查的是C语言结构中的源程序书写格式这个知识点,在

C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置;C

语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言

编写的程序有很好的移植性,可以放在多个程序文件中。

19、若有以卜程序#includeinl*f(int*s,int*t){intk:if(*s<*t){k=*s;*s=*t;*t=-

k;)returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printfC'%

d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}则程序的输出结果是

A、3,5,5,3,5

B、3,5,3,5,5

C>5,3,5,3,5

D、5,3,3,5,5

标准答案:c

知识点解析:函数f为返回值为指针的函数,主要功能是返回s和t指向空间值大

的数据的地址,旧时如何s指向空间数据大于I指向空间的数据,那么交换。主函

数p和q指向i和j,值为3和5,i的值大于i的值,因此调用函数f以后,返回j

的地址,r指向j,同时i和j的值交换,i=5,j=3,p和q的指向不变,p指向i,q

指向j。

20、有以下程序#includeVstdio.h>#include<string_h>voidfun(char*W,inim)

(chars,*pL*p2;pl=w;p2=w+m-l;while(pl<p2){s=*pl;*pl=*p2;*p2=

s;pl++;p2-;)}main(){lchara[]-412345644;fun(a,strlen(a));puts(a);}

A、116611

B、161616

C、654321

D、123456

标准答案:C

知识点解析:函数fun的功能是将字符串w中的元素从大到小进行排列,所以在主

函数中调用函数fun后,字符串a的元素从大到小进行了排列。

21>有以下程序,程序运行后的输出结果是#includeVstdio.h>#dcfinc

S(x)4*(x)*x+1voidmain(){intk=5,j=2;printf("%d\n",S(k+j));)

A、197

B、143

C、33

D、28

标准答案:B

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

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

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

22有以下程序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\n",c,d);)程序的

输出结果是

A、43

B、34

C、71

D、00

标准答案:C

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

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

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

A、属性

B、二维表

C、网状结构

D、树状结构

标准答案:B

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

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

24、有以下程序段int*p;p=malloc(sizeof(int));若要求使p指向一个

int型的动态存储单元,在横线处应填入的是()。

A、(int*)

int

C>int*

D、(*int)

标准答案:A

知识点解析:语句"malk>c(sizcof(int))"为动态分配了一块内存,因为p为int型指

针,所以需要使用强制转换将该内存地址转换成im*类型后再指给p,填入的内容

为(int*),答案选A。

25、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C

的联系是

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实

体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一

个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所

以为一对多联系。

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

卷第3套

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

1、对于一个正常运行的c程序,下列叙述中正确的是()。

A、程序的执行总是从main函数开始,在main函数结束

B、程序的执行总是从程序的第一个函数开始,在main函数结束

C、程序的执行总是从main函数开始,在程序的最后一个函数中结束

D、程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束

标准答案:A

知识点解析:一个C语言源程序无论包括了多少函数,总是从main函数开始执

行,从main函数结束。

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

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

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

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

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

标准答案:B

知识点解析:线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,

也最多有一个后件,所以B)正确。所以有一个以上根结点的数据结构一定是非线

性结构,所以A)错误。循环链表和双向链表都是线性结构的数据结构,所以C)

和D)错误。

3、设一棵完全二叉树共有700个结点,则此二义树中的叶子结点数为

A、85

B、120

C、250

D、350

标准答案:D

知识点解析:①具有n个结点的完全二叉树的深度为[kmg2n]+l,计算出该完全二

叉树的深度为10。②设度为0的结点(即叶子结点)为no,度为1的结点为M,度

为2的结点为n2,总结点数为n,深度为kon=nj+n2+no,由于no=n2+l则n2=no-

1,由于完全二叉树中度为1的结点数只有两种可能:0或

lo③假设度为1的结点数为0即满二叉树,根据满二叉树的定义,其2nLi个结

点,根据以上计算所得的深度10来计算,应有2。1=1024-1=1023个结点,显然与

题目中700个结点不符。因此,度为1的结点数必然为lo故n=ni+2no-l=l+2no-

l=2n(),则n()=ii/2=700/2=350,

4、设有定义:intk=O;下列选项的4个表达式中与其他3个表达式的值不相同的

是()。

A、k++

B、k+=l

C、++k

D、k+1

标准答案:A

知识点解析:因为题中有语句“intk=OJ所以选项B、C、D都是对k的值加1,选项

A的语句k++表示先利用k的值后进行运算,然后k的值才加1。

5、数据库管理系统是

A、操作系统的一部分

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

C、一种编译系统

D、一种操作系统

标准答案:B

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

的数据组织、数据操纵、数据维护、控制及保护和提供数据服务等,是一种在操作

系统支持下的系统软件,因此本题答案为B。

6、在关系数据库设计中,关系模式设计属于()。

A、物理设计

B、需求分析

C、概念设计

D、逻辑设计

标准答案:D

知识点解析:关系数据库设计有需求分析、概念设计、逻辑设计、物理设计、编

码、测试、运行、进一步修改等几个阶段。在需求分析阶段形成需求说明书,概念

设计阶段形成概念数据模型(E-R模型,作为进一步设计数据库的依据),逻辑设计

阶段形成逻辑数据模型(从E・R图向关系模式转换、关系视图设计、模式规范化),

物理设计阶段形成数据库内部模型(此时涉及具体软件硬件环境)c

7、定义学生、教师和课程的关系模式S(S#,Sn,Sd,De,Sa)(其属性分别为学

号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程

号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含

对非主属性部分依赖的关系是()。

A、S(S#,Sn,Sd,De,Sa)

B、C(C#,Cn,P#)

C、SC(S#,C#,G)

D、不存在

标准答案:A

知识点解析:关系S的主键是S#(学号),S#是主属性,但非主属性Sd(所在系丁也

可决定De(所在系的系主任),所以包含对非主属性部分依赖的关系是So

8、以下程序段中不能统计出一行中输入字符个数(不包含回车符)的是()。

A、for(n=0;gelchar()!='\n';n++);

B、n=O;while(getchar()!=,\n')n++;

C>n=O;while((ch=getchar())!='\n')1rH■;

D、n=0;for(ch=getchar();ch!='\n';n++);

标准答案:D

知识点解析•:本题主要考查循环的使用。选项A中,使用for循环,n的初值为

0,每次循环n增加I,循环的结束条件是输入回车符;选项B中,直接判断

getchar函数的返回值是否是回车符,如果不足则n增加,输入回车符循环结束;

选项C苜先把输入的字符放到ch变量中,然后判断ch是否为何车符,如果不是则

n增加,循环结束条件是输入的是同车符;选项D中for循环的初始条件ch值为输

入的字符,只有一次输入,不能统计输入的字符数,如果第一次输入的不是回车符

循环不能结束。

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

break:)i++;)while(i!=0);printf("\n"):}程序的运行结果是

A、*3*5

B、*5

C、*7

D、26

标准答案:C

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

语句时,条件语句if(i%3==l),if(i%5=2){printf(“*%d”,i);break;}不执行,只

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

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

10、下面函数的功能是()。sss(s,t)char*s,*t;

{while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}

A、将字符串S复制到字符串t中

B、比较两个字符串的大小

C、求字符串的长度

D、将字符串S接续到字符串t中

标准答案:B

知识点解析:“*s-*t”的输出实际是比较两个字符的ASCII码值,比较两个字符串的

大小。

11、设有课程关系模式:R(C#,Cn,T,TA)(其中,C#为课程号,Cn为课程名,T

为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每个课程号

下只有一位任课教师,但每位教师可以有多门课程。关系R中对主属性的传递依

赖为

A、(C#,T)—Ta

B、C#—►Cn,Cn->Ta

C、C#一T,T一Ta

D、C#一Tn

标准答案:C

知识点解析:R关系模式中,不同课程号可以对应相同的课程名而每个课程号下自

由一位任课教师,因此课程号和教师名为传递依赖、教师名和教师地址为传递依

赖,因此R对主属性的传递依赖为“C#一T->Ta”。

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

A、C程序对预处理命令行的处理是在程序执行过程中进行的

B、预处理命令行的最后不能以分号表示结束

C、#detincMAX是合法的宏定义命令行

D、在程序中,凡是以*”开始的语句行都是预处理命令行

标准答案:A

知识点解析:本题考查预处理命令行。预处理是在程序编译之前进行的,所以A

选项错误。

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

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

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

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

一个数据

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

标准答案:A

知识点解析:B选项中打开一个已存在的文件并进行写操作后,原有文件中的全部

数据不一定被覆盖,也可以对源文件进行追加操作等。C选项中在一个程序中对文

件进行写操作后,不是先关闭该文件然后再打开才能读到第一个数据,用fseek()

函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读写。

14、关于C语言中数的表示,以下叙述正确的是

A、只要允许范围内整型数和实型数都能精确的表示

B、只有整型数在允许范围内能精确无误的表示,实型数会有误差

C、只有实型数在允许范围内能精确无误的表示,整型数会有误差

D、只有用八进制表示的数才不会有误差

标准答案:C

知识点解析:本题考查C语言基本数据类型,整型数是有范围的,只在允许的范

围内才能精确无误的表示,实型数由于存储长度限制存在误差。

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

A、2.7e

B、999

C、123E0.2

D、OXab

标准答案:D

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

16、若有定义:inta,b:通过语句scan—%d;%d“,&a,&b);能把整数3赋给

变量a,5赋给变量b的输入数据是

A、3,5

B、35

C、3;5

D、35

标准答案:C

知识点解析:在采用seanf这个函数输入数据时.,要严格遵守其输入的规则定义。

本题此函数定义的规则是,在两个整数之间加分号输入。

17、有以下程序#inckidemain(){intx=l,y=0,a=0,b=0:switch(x){easel:

switch(y){cascO:a++;break;case1:b++;break:)case2:a++;b++;break;}

printf(Ma=%d,b=%d\n",a,b);)程序运行后的输出结果是

A、ci—1,b=1

B、a=l,b=0

C、a=2,b=l

D、a=2,b=2

标准答案:C

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

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

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

环,此时a=2,b=lo

18、在嵌套使用if语句时,C语言规定else总是

A、和之前与其具有相同缩进位置的if配对

B、和之前与其最近的if配对

C、和之前与其最近的且不带else的if配对

D、和之前的第一个if配对

标准答案:C

知识点解析:本题考查if语句,在C语言中,else总是和之前与其最近的且不带

else的if配对。

19、以下叙述中错误的是

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

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

C、使用三种基本结构构成的程序只能解决简单问遮

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

标准答案:C

知识点解析:结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。已

经证明,由3种基本结构组成的算法可以解决任何复杂的问题。由3种基本结构所

构成的算法称为结构化算法;由3种基本结构所构成的程序称为结构化程序。

20、有以卜程序#inc1udemain。{inin,*p=NULL;*p=&n;printf(uInputn:r);

scanf("%d&p);printf(Moutputn:");printf(H%d\nH,p);}该程序试图通过指针

p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是

A^intn,*p=NULL;

B、*p=&n;

C、scant'"%d",&p)

D、printf(n%d\n",p);

标准答案:A

知识点解析:选项A)表示在程序中,声明定义变量语句“intn,*p=NULL;”定义了

整型变量n和指针变量p,并且指针变量p初始化为空。其他的语句都是错误的。

其中选项B),&n的地址应存放到指针变量p中,而选项C)中数据输入项错误,选

项D)输出地址信息。

21、有以下程序main(){chara[5][10]={One”,"two%"three\"four”,“five”};int

i,j;chart:for(i=0;i<4:i++)for(j=i+l;j<5;j++)if(a[i][O]>a[j][O]){t=a[i][0];

a[i][O]=a[j][O];a[j][O]=t:)puts(a[l]);}程序运行后的输出结果是

A、fwo

owo

C>two

D、fix

标准答案:A

知识点解析:这个程序的执行过程是当i=0时,j=La[0][0]=0a[3][0]=t置换

a[2][0]=f,a[3][0]=t;此时,a[2][0]=ea[l][0]=t,再置换a⑵[0]=t,a[l][O]=f,;当

i=3时.i=4,a[3][0]=f=a43][0]=f:不置换:所以凯1]的结果为fwo。

22、有以下程序,执行后的输出结果是main(){inta=l,b=3,c=5;int*pl=&a,

*p2=&b,*p=&c;*P=xpl*(*p2);printf(H%d\n",c);}

A、2

B、3

C、1

D、4

标准答案:B

知识点解析:程序使整型指针pl、p2、p3指向a、b、c值所存放的地址空间。然

后再将指针变量*pl、*p2中的值的乘积赋给指针变量*p,即赋给变量c,输出c的

值3。

23、有以下程序#includemain()#deflneN4{inix口[N]={{1,2,3),{4},{5,6,

7,8),{9,10}},voidfun(inta[][N],intb[])y[N],i;{inti;fun(x,y);

for(i=0:i

A、1,2,3,4,

B、1,4,5,9,

C>1,0,7,0,

D、3,4,8,10,

标准答案:C

知识点解析:函数fun(inta[][N],intb口)的功能是把矩阵a[N][N]主对角线上的元素

赋给…维数组b[]。在主函数中由想[][N]的初始化可知,其主对角线上的元素是

h0,7,0o所以当执行完函数fun(x,y)后,一维数组元素y口中的元素值为1,

0,7,0o

24、若有以下程序#includemain(){FILE*fp;inti,a|6]={I,2,3,4,5,6),k;fp=

fopen("data.dat","w+");for(i=0;i<6;i++){fseek(fp,OL,0);fprintf(fp,n%d\nu,a|iJ;}

rewind(fp);fscanf(fp,"%d",&k);fclose(fp);printf("%d\n",k);}则程序的输出结果是

()o

A、6

B、1

C、123456

D、21

标准答案:A

知识点解析:句"fseek(fp,0L,0);”将文件指针fp指向文件首,然后再往当前地址内

写入数据,由于每次循环都将文件指针置于文件首后再写,之前写入的数据会被新

写入的数据覆盖,所以循环执行完毕之后,文件中最终写入的数据为6,输出结果

为选项A)o

25、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数

值,以下选项中错误的程序是

A、main(){.......x=fun(2,10);.........}floatfun(inta,intB){.......}

B、floatfun(inta,intB){.......}main(){........x=fun(i,j);........}

C>floatfun(int,int);ma:n(){.......x=fun(2,10);........}floatfun(inta,intB){........}

D、main(){floatfun(inti,intj);.......x=fun(i,j);........}floatfiin(inta,intB){........}

标准答案:A

知识点解析:在调用子函数时,应对其进行说明。A选项中,调用时,没有对子函

数进行说明。B选项、C选项中被调用函数在主调函数之前定义,不用说明;D选

项中在主函数中对被调用函数的返回值类型进行了说明。因此A选项正确。

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

卷第4套

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

1、以下关于c语言的叙述中正确的是

A、C语言中的变量可以在使用之前的任何位置进行定义

B、在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

C、C语言的数值常量中夹带空格不影响常量值的正确表示

D、C语言中的注释不可以夹在变量名或关键字的口间

标准答案:D

知识点解析:C语言中的注释可以出现在程序中的任何位置,但是不能夹在变量或

者关键字之间;C语言的变量在函数开始位置进行定义,也可以在变量使用前位置

定义:一个浮点数可以和一个整数相加,运算符两侧的运算类型也可以不一致;数

值常最中不允许夹带空格。

2、以下选项中,能用作用户标识符的是

A、_0_

B、8_8

C、void

D^unsifined

标准答案:A

知识点解析:在C语言中,用户的标识符只能由字母或下划线开始。一般强调文

见其义的命名方法。但是C语言中的保留字不能用作用户的标识符。而选项C和

D)全部为保留字,选项B中以数字开头,这些都不正确。

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

A、,cd'

B、0.le+6

C、\a

D、,\01『

标准答案:A

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

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

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

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

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

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

+A011,表示用单引号括起来的转义字符八制进数Olio选项A表示的字符常量

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

两个字符。

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

A、,\01夕

B、,\65,

C、,\cff

D、

标准答案:A

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

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

5、设二叉树的后序序列与中序序列均为ABCDEFGH,则该二叉树的前序序列为

A、HGFEDCBA

B、ABCDEFGH

C、ABCDHGFE

D、DCBAHGFE

标准答案:A

知识点解析:后序遍历中,最后一个字母是根结点,也就是H是根结点;在中序

遍历中,根结点前面的是左子树、后面的是右子树,H后面没有,因此该树没有右

子树。同理,可判断出该树是第一个完全的左予树。由此可画出这个二叉树,然后

根据二叉树可的前序序列为HGFEDCBAo

6、表示关系式xSySz的C语言表达式的是

A、(x<=y)II(y<=x)

(x<=y<=z)

C>(x<=y)&&(y<=x)

D、(x<=y)!(y<=x)

标准答案:C

知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。

7、数据库管理系统中负责数据模式定义的语言是

A、数据定义语言

B、数据管理语言

C、数据操纵语言

D、数据控制语言

标准答案:A

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

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

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

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

8、表达式3.6-5/2+1.2+5%2的值是()。

A、4.3

B、4.8

C、3.3

D、3.8

标准答案:D

知识点解析:计算5/2,结果取整数值2。计算3.6-2,结果与高精度数据保持

一致,即为1.6o计算1.6+1.2,结果为2.8。计算5%2,结果为1。计算

2.8+1结果为3.8o所以选择D选项。

9、以下程序段中.与语句k=a>b?(b>e?l:0):0;功能相同的是O。

A^if((a>b)II(b>c))k=l;elsek=0:

B、if((a>b)&&(b>c))k=l;elsek=0;

C、if

温馨提示

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

评论

0/150

提交评论