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

下载本文档

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

文档简介

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

卷20(共9套)

(共270题)

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

卷第1套

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

1、数据库系统的核心是()。

A、数据模型

B、软件开发

C、数据库设计

D、数据库管理系统

标准答案:D

知识点解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库

的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统-

管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过

DBMS。另外,DDMS还承担着数据库的安全保护工作,按照DDA所规定的耍

求,保证数据库的完整性和安全性。

2、有以下程序#includeintfun(inla,intb){if(b=0)reluma;elseretum(fun(-a,-

b));}main(){printf("%d\nM,fun(4,2));}程序的运行结果是()。

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:由程序可知,函数fun(inta,intb)是一个递归函数。所以当主函数中调

用“fun(4,2)”时,其执行过程如下“fun(4,2)->fun(3,l)->fun(2,Of,其返回值为

2。所以正确答案为选项B)。

3、已知下面的程序段,正确的判断是()。#defineM2#define

N(m)((M+l)*m)....x=3*(M+N(5)):

A、程序错误,不允许嵌套定义

B、x=51

C、x=25

D、程序错误,宏定义不允许有参数

标准答案:B

知识点解析:C语言中的宏定义允许嵌套定义,也允许带变量。在对源程序编译

时.,先有一个预处理过程,其中一个任务就是替换宏定义。预处理程序扫描源程序

若干遍,能够识别出嵌套的宏定义和带参数的宏定义。将参数代入整理得x=51。

4、有以下程序,程序运行后的输出结果是main(){intm=12,n=34;printf("%d%

d”,m++,++n);prind("%d%d\n",n++,++m):}

A、12353514

B、12353513

C、12343514

D、12343513

标准答案:A

知识点解析:本题主要考查自加运算符,自加运算符十十在变量前表示先增加然后

再使用,++在变量后表示先使用然再增加。本题中,第一个printf语句m++表示先

输出m的值,然后m增加,因此首先输出的是12,然后m的值变成13,++n表

示n首先增加1变成35然后输出,因此输出的是35;在第二个printf。语句中,

n++是先输出11的值然后增加,即输出35,n的值变为36,H仰表示先增加m的

值再输出,m的值由13变成14,故最后输出的是14。

5、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有

多名职员。则实体部门和职员间的联系是()。

A、1:1

B、m:1

C>1:m

D、m:n

标准答案:C

知识点解析:一个部门可以有多名员工,所以实体部门和职员间的联系是1:m联

系。

6、从工程管理角度看,软件设计一般分为两步完成,它们是

A、概要设计与详细设计

B、数据设计与接口设计

C、软件结构设计与数据设计

D、过程设计与数据设计

标准答案:A

知识点解析:软件设计是开发阶段最重要的步骤。从王程管理的角度来看可分为两

步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统

级接口、全局数据结构或数据库模式:详细设计是指确立每个模块的实现算法和局

部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计

包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建

的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件

与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。

7、支持子程序调用的数据结构是()。

A、栈

B、树

C、队列

D、二叉树

标准答案:A

知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。

在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终

把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用

符合栈的特点,所以A选项正确。

8、已定义以下函数intfun(int*p){return*p;}fun函数的返回值是()。

A、一个整数

B、不确定的值

C、形参P中存放的值

D、形参P的地址值

标准答案:A

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

项正确。

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

A、用户定义的函数中可以没有return语句

B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C、用户定义的函数中若没有return语句,则应当定义函数为void类型

D、函数的return语句中可以没有表达式

标准答案:B

知识点解析:本题重点考查函数返回值的相关知识。函数的值只能通过return语句

返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语

句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空

类型“,类型说明符为void。因此选择B选项。

10、有以下程序:#include<stdio.h>intfun(){staticintx=l;x*=2:return

x;)main(){inti,s=l;for(i=l;i<=3;i++)s*=fun();printfV'%d\n",s);)

程序的运行结果是()。

A、10

B、30

C、0

D、64

标准答案:D

知识点解析:本题中静态局部变量x,在静态存储区内分配存储单元,在程序整个

运行期间都不释放。所以第1次循环s的值为2;第2次循环中,返回的x值为

4,所以s的值为8;第3次循环,返回的x值为8,所以s的值为64。

11、如果定义日。ata"U],X;则以下叙述中正确的是

A、表达式a+l是非法的

B、语句a=&x:是非法的

C、三个表达式a[l]、*(a+l)、表示的意思完全不同

D、表达式木&a[l]是非法的,应该写成木(&(a[l]))

标准答案:B

知识点解析:定义语句floats10],x;以后,数组名a表示了数组元素的首地址,

是常量在程序中不能更改,因此选项A是的描述是正确的。而指向运算符和取址

运算符,是互反运算符优先级相同,*和*(&a[)含义相同。

12、有以下程序#includemain(){FILE*fp;inti,a|6|={1,2,345,6};fp=

fopen("d2.daln,"w+H);for(i=0;i<6;i++)fprintf(fp,'1%d\n",a(i]);rewind(fp);for

(i=0;i<6;i++)fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++)

printf(n%d;\a[i]);}程序运行后输出结果是

A、1,2,3,4,5,6,

B、6,5,4,321,

C、4,5,6,1,2,3,

D、123,3,2,1,

标准答案:R

知识点解析:本题考查文件操作函数,fprintf和rewind函数,rewind函数将文件

内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组a的

六个数写入d2文件中,然后乂将a数组从后往前覆盖到d2中的内容,所以结果为

6,5,4,3,2,1,选项B正确。

13、以下不合法的字符常量是()。

A、3

B、

C、,\018,

D、'\xcc'

标准答案:C

知识点解析:转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,

所以C选项不合法。

14、有以下程序,程序运行后的输出结果是行nchideVstdio.h>main(){inta=3;

printf(n%d\n",(a+=a—=a*a));)

A、9

B、0

C、3

D、-12

标准答案:D

知识点解析:对于表达武“a+=a=a*a”相当于“a=a—(a*a)”,然后汁算“a=a+a”,a的

初值为3,则表达式的值为一12。

15、有以下程序程nclude#includeSlructA{inta;charb|10];doublec;);structA

f(structAt);main(){structAa={100l,"ZhangDa",1098.0};a=fla);printf("%

d,%s,%6.1fln",a.a,a.b,a.c);)structAf(StructAt){t.a=1002;

strcpy(t.b,"ChangRong");t.c=1202.0;returnt;}程序运行后的输出结果是

A、1002,ZhangDa,1202.0

B、1002,ChangRong,1202.0

C、1001,ChangRong,1098.0

D^1001,ZhangDa,1098.0

标准答案:B

知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数

f(a),在函数f(a)qp对结构体变量a的各个成员重新进行了赋值操作,并把其值返

回在屏幕上输出。

16、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确

定义,以下正确的程序段是

A、while(ch=getcharO='N')printf("%c",ch);

B、while(ch=getchar()=="N")printf("%cn,ch);

C、while((ch=getchar())!='N')printf("%c",ch):

D、while((ch=getchar())=,N,)printf(n%cH,ch);

标准答案:C

知识点解析:while循环的执行过程如下:①计算while后面圆括号中表达式的

值,当值为非0时,执行步骤②;当值为0时,执行步骤④;②执行循环体一

次:③转去执行步骤①;0)退出循环。在选项C中,表达式(ch=getchar())!=,N,

表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输

入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。

17、以下叙述中错误的是

A、typedef的作用是用一个新的标识符来代表已存在的类型名

B、typedef说明的新类型名必须使用大写字母,否则会出编译错误

C、可以用typedef说明的新类型名来定义变量

D、用typedef可以说明一种新的类型名

标准答案:B

知识点解析:typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未

产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名

用大写字母表示。

18、以下叙述中正确的是

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

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

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

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

标准答案:C

知识点解析:break语句通常用在循环语句和开关语句中。当break用于开关语句

switch中时,可使程序跳出switch而执行switch以后的语句:当break语句用于do-

while.for.while循环语句中时,可使程序终止循环而执行循环后面的语句,即满

足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行

下一次循环。A、B和D三个选项中均有错误。因此C选项正确。

19、有以下程序structA{inta;charb[10];doublec;);voidf(structAt);

main(){structAa={1001.MZhangDaM,1098.0);f(a);prinlf("%d,%s,%

6.Itha',,a.a,a.b,a.c);}voidf(structAt){t,a=1002;strcpy(t.b,

"ChangRong");t.c=1202.0;}程序运行后的输出结果是

A、1002,ChangRong,1202.0

B、1001,ZhangDa,1098.0

C、1001,ChangRong,1098.0

D、1002,ZhangDa,1202.0

标准答案:B-

知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数

f(a),形参I接收实参的数据,在函数f⑴中对结构体变量t的各个成员进行了赋值

操作.需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生

影响,因此在主函数输出仍然输出变量a的数据

20、以下叙述中错误的是

A、用typedef可以说明一种新的类型名

B、typedef的作用是用一个新的标识符来代表已存在的类型名

C、可以用typedef说明的新类型名来定义变量

D、typedef说明的新类型名必须使用大写字母,否则会出编译错误

标准答案:D

知识点解析:本题考查typedef的使用方法,lypedef对已存在的类型使用一个新的

名字,新类型可以使用小写,所以D选项错误。

21、设有定义:struct{charmark|12];intnuml;doublenum2;}tl,t2;若变量均已正

确赋初值,则以下语句中错误的是()。

A、t2.mark=tl.mark;

B>t2.numl=tl.numl;

C^tl=t2;

D^t2.num2=tl.num2;

标准答案:A

知识点解析:同类型的结构体之间可以直接赋值,数组却不可以,答案选A。

22>有以下函数:intfun(char*x,char*y){intn=O:while((*x==*y)&&*x!

=''0'){x++;y++;n++;)returnn;}函数的功能是O。

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

13、查找x和y所指字符串中是否有、U'

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

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

标准答案:C

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

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

数。

23、在E-R图中,用来表示实体联系的图形是

A、椭圆形

B、矩形

C、菱形

D、三角形

标准答案:C

知识点解析:在E-R图中实体集用矩形,属性用椭圆,联系用菱形。

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

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

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

关系中包含对主属性传递依赖的是()。

A、S#一Sd

B、S#一Sd,(S#,C#)一G

C、S#TSCLSd-*Dc

D、C#一P#,(S#,C#)一G

标准答案:C

知识点解析:关系SC的主属性为(S#、C#),但在SC中S#(学号)单独就可以决定

Sd(所在系)。sd(所在系)可决定De(所在系的系主任),故对主属性传递依赖的是

S#―►Sd9Sd—>Dco

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

A、C语言程序在运行过程中的所有计算都以二进制方式进行

B、C语言程序在运行过程中的所有计算都以十进制方式进行

C、所有C语言程序都需要编译、链接无误后才能运行

D、C语言程序中字符变量存放的是字符的ASCH值

标准答案:B

知识点解析:C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错

误。故本题答案为B选项。

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

卷第2套

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

1、以下选项中不合法的标识符是

A、FOR

B、&a

C、print

D、_00

标准答案:B

知识点解析:介法的标设符要满足组成字符为a〜z以及A〜z,数字字符0到9和

下划线,其中数字不开头,不能是关键字。选项B)中,&不属于组成字符,是错

误的。

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

A^A=a+b;

B、B++;

C、a=a+b

D^A?a:b;

标准答案:c

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

3、以下选项中不合法的标识符是

A、FOR

B、&a

C^print

D、——00

标准答案:B

知识点解析:合法的标浜符要满足组成字符为a〜z以及A〜z,数字字符。到9和

下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误

的。

4、以下选项中不合法的标识符是

A、.FOR

B、&a

C、print

D、0

标准答案:B

知识点解析:合法的标职符要满足组成字符为a〜z以及A〜z,数字字符。到9和

下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错

误的。

5、在数据处理中,其处理的最小单位是()。

A、数据

B、数据项

C、数据结构

D、数据元素

标准答案:B

知识点解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加

工处理的信息载体,数据处理的最小单位是数据项。

6、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是

A、连接符

B、大写字母

C、数字字符

D、下划线

标准答案:A

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

或下划线组成,并且第一个字符必须为字母或下划线。在C语言的标识符中,大

写字母和小写字母被认为是两个不同的字符°选项A是连字符.不在C语言规定

的命名变量标识符的范围内。

7、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的

A、关键字可用作用户标识符,但失去原有含义

B、在标识符中大写字*和小写字*被认为是相同的字符

C、用户标识符可以由字*和数字任意顺序组成

D、预定义标识符可用作用户标识符,但失去原有含义

标准答案:D

知识点解析:预定义标涣符是C语言中的标识符,在C语言中也有特定的含义,

如函数printf、scanf、sin等和编译预处理命令名(如define和include)。预定义标识

符可以作为用户标识符使用,只是这样会失去系统规定的原义。

8、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根

结点在第1层)

A、3

B、4

C、6

D、7

标准答案:D

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

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

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

9、执行以下程序段后,w的值为()。intw='A',x=14,y=15:w=((xIIy)&&(w

V'a'));

A、-1

B、NULL

C、1

D、0

标准答案:C

知识点解析:字符变量w的初值为字符-A'1其ASCH码值为65,字符“3…的

ASCII码值为97,所以关系表达式“wV以”的值为1:变量x=14,变量产15,

“xlly”为或,x、y均为真,所以xlly的结果1。因而逻辑表达式“(xIIy)&&(”

V、)”的值为lo

10、下面函数调用语句含有实参的个数为()。func((expl,exp2),(exp3,exp4,

exp5));

A、1

B、2

C、3

D、5

标准答案:B

知识点解析:本题考查函数调用时的实参形式。这里有一个逗号运算的考查,(a,

b)的运算结果为b,因而只有一个值,结合func的调用形式,可以知道实参的个数

只有2个。

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

构图的宽度是()。

A、2

B、3

C、4

D^n

标准答案:D

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

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

12、带链队列空的条件是

A、front=rear=NULL

B、front=rear=-1

C、tront=NULL且rcar=-1

D、front=-1且rear二NULL

标准答案:A

知识点解析:带链队列空的条件有两个:一个是front=rcar,一个是它们都等于

空。

13、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构

成。下列图符名标识的图符不属于数据流图合法图符的是()。

A、控制流

B、加工

C、存储文件

D、源和潭

标准答案:A

知识点解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构

成,包括4个方面,即加工、数据流、存储文件、源和潭。

14、以下不构成无限循环的语句或语句组是

A、n=0;do{++n;)while(n<=0);

B、n=0;while⑴{n++;)

C^n=10:while(n);{n-;)

D、fbr(n=O»i=l;;i+-)n+=i;

标准答案:A

知识点解析:选项B)中while(l)永远为真所以进入死循环,选项C)中while(n=10)

同理,选项D)中for循环没有循环限定条件也将进入无限循环,只有选项A)中

while(n<=0)循环判定成立,循环将不进入无限循环。

15^若有以下程序程ncludemain(){inta=l,b=2,c=3,d=4;

if((a=2)&&(b=1))c=2;if((c==3)Il(d=-1))a=5;prinlf("%d,%d,%d,%d\n",

a,b,c,d);)则程序的输出结果是

A、2,1,2,-1

B、2,2,2,4

C、1,2,3,4

D、5,1,2,-1

标准答案:D

知识点解析:代码中有两条并列的if语句,第一条if语句,逻辑与表达式

(a=2)&&fl)=l)中,a=2,则执行b=l,得到该逻辑与表达式值为1,执行分支语句

c=2;第二条if语句(c=3)ll(d=l),c=3不成立,执行d=l,而后得出整个逻辑

与表达式值为I,执行分支语句a=5。

16、下面描述中错误的是

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

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

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

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

标准答案:A

知识点解析:软件设计是将软件需求转换为软件表示的过程;数据结构与数据库设

计是软件设计的任务之一;PAD图,即问题分析图,是一种主要用于描述软件详

细设计的图形工具。

17、有以下程序:#includemain(){inta[]={10,20,30,40},*P=a,i;for(i=0;

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

()v

A、30

B、40

C、10

D、20

标准答案:A

知识点解析:for循环结束后,数组a的值并没有变化,由于数组是由0开始,所

以a⑵的值是30o

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

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

B、所在程序的全部范围

C、所在函数的全部范围

D、所在文件的全部范围

标准答案:A

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

定义的位置开始,到整个源文件结束止。在同一编译单位内用extern说明符扩展全

局变量的作用域(当全局变量定义在后,引用它的函数在前时,应该在引用它的函

数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个己在外部

定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局

变量的作用域从extern说明处起,延伸到该函数末尾)。当一个程序由多个编谙单

位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中

定义所有的全局变量,而在其他用到这些全局变量的文件中用extern对这些变量进

行说明。

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

{inta=3,b=4,c=5,d:d=f(f(a,b),f(a,c));primf(''%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。

20、学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实

体团长和实体社团间的联系是

A、一对多

B、多对多

C、多对一

D、一对一

标准答案:A

知识点解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个

表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可

以与第一个表中的一个行相关。本题中,一个团长可以对应多个社团,一个社团只

有一个团长,因此是一对多关系。

21、设有定义:struet{charmark[12];intnumI;doublenum2;}tl,t2;,若变量

均已正确赋初值,则一中错误的是()。

A、tl=t2;

B、t2.numl=tl.numl;

C、t2.mark=t1.mark:

D、t2.hum2=tl.num2:

标准答案:c

知识点解析:本题考查结构体变量的引用。C选项中mark为结构体中的数组,不

能直接赋值,所以C选项错误。

22、如果定义floata[10],x;则以下叙述中正确的是

A、表达式a+1是非法的

B、语句a=&x;是非法的

C、三个表达式a[l]、*(a+l)、表示的意思完全不同

D、表达式是非法的,应该写成*(&(a[l]))

标准答案:B

知识点解析:定义语句floats10],x;以后,数组名a表示了数组元素的首地址,

是常量在程序中不能更改,因此选项A是的描述是正确的。而指向运算符和取址

运算符,是互反运算符优先级相同,*&41]和*(&2[1])含义相同。

23、以卜选项中合法的变量是

A^5a

B、A%

C、_10_

D、sizeof

标准答案:C

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

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

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

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

名。

24、一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人

员与实体计算机之间的联系是

A、一对一

B、一对多

C、多对多

D、多对一

标准答案:C

知识点诵析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作

人员使用,则关系为一对一;如果一个工作人员可以使用多台计算机,但是一台计

算机只能被一个工作人员使用,则关系为一对多;如果一个工作人员可以使用多台

计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。

25、在满足实体完整性约束的条件下

A、一个关系中应该有一个或多个候选关键字

B、一个关系中只能有一个候选关键字

C、一个关系中必须有多个候选关键字

D、一个关系中可以没有候选关键字

标准答案:A

知识点解析:在关系数据库中,实体完整性的概念是主属性不能为空。在满足实体

完整性的前提下,必须在关系中存在主属性,也就是在关系中应该有候选关键字。

一个关系中可以有一个或者多个候选关键字。

26、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d"&a,&b,&c);给a

赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(注:口代表一个空格

符)

A、口口口1,2,3

B、1,UUU2,口口口3

C、1,2,3

D、1口2口3

标准答案:D

知识点解析:本题主要考查scanf函数的输入格式问题。scanf函数的一般形式为:

scanf(格式控制字符串,地址1,地址2,…);格式控制字符串是由双撇号括起来

的字符串,它主要由两种类型的字符组成:①格式说明符由“%”和格式字符组

成,如%孰%d,%s,%f等。其作用是将输入的数据转换为指定的格式,赋给

scanf的二个参量(是地址1)所指定的内存单元(可能一次使用多个)中。格式说明以

“%”字符为标志。②普通字符,是需要用户在输入时原样输入的字符。在本题中

格式控制字符串为"%d,%d,%d”,表示按十进制输入三个数据。要求在输入数

据时,两个数据间一定以一个逗号“,”作为间隔符,

27、有以下程序yoidfunl(char*p){char*q;q*p;whilc(*q!='。'){(*q)++;q++;()

main(){chara[]={"Program"),*p;p=&a[3];funl(p);printf("%s\n”,a);}程序

执行后的输出结果是

A、Prphsbn

B、Prohsbn

C^Progsbn

D、Program

标准答案:B

知识点解析:在函数voidfunl(char*p)中,语句(*q)++的功能是q所指的字符加1»

变成其后面的字符;q++就是指钊。q指向下一个字符的位置。所以在主函数中,

语句p=&a[3]的作用是使指针p指向字符数组叫中的第四个字符的位置,即p指

向字符'g';然后调用函数funl(p)后,字符©变成Ih,字符T变成号,字符匕,变

成b,字符'm,变成因而字符数组a[]中的内容就成“Prohsbn”。

28、下歹ij函数的功能是voidfun(char*a,char*b){while((*b=*a)!='\(T){a++;b++;))

A、使指针b指向a所指字符串

B、将a所指字符串和b所指字符串进行比较

C、将a所指字符串赋给b所指空间

D、检查④和人所指字符串中是否有30'

标准答案:C

知识点解析:在while语句的条件中是把字符*a的值赋给字符*b,然后再判断字符

*的值是否等于字符串的结束字符C\0'),当不等于结束字符('\0')时,把字符指针变

量a,b分别加1,指它们的下一个字符,直到字符串a的结束。这样程序执行的

结果就是把字符串a赋给了b所指的存储空间。

29>有以下程序#includemain(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;

j++){continue;x++;}x++;}printf("x=%d\n'\x);}程序执行后的输出结果是

()o

A^x=8

B、x=4

C>x=6

D、x=12

标准答案:A

知识点解析:continue语句是跳过当前循环层余下未执行的语句,继续执行下一次

循环。外层循环i从0到1,内层循环j从。到3,外层循环2次,内层循环2*4为

8次。每次内层循环若j值为偶数则x自加1,每次外层循环x自加两次,所以x

的自加次数为2*2+2*(4-2尸8,所以答案选A。

30、WWFS/T#inckidefunc(intn){staticintnum=l;num=num+n;prinff("%d",

num);)voidmain(){func(3);func(4);printf("\n,r):)程序运行后的输出是

A、45

B、35

C、48

D、34

标准答案:C

知识点解析:在函数func(intn)中定义了局部静态变量num,,其初始值等于1,

所以在主函数中执行func(3),输出4,此时静态变量num的值等于4,当退出函数

func(3)时,其值不会丢失,所以当在执行func(4)时,输出8。

31、有下列程序:main(){inta|4|[4]:{{1,4,3,2),{8,6,5,7),(3,7,

2,5),{4,8,6,1)),i,k,t;for(i=0;i<3;i++)for(k=i+hk<4;k++)if(a[i][i]

<a[k][l[]){t=a[i][i];a[i][i]=a[k][k]:a[k][k]=t:)for(i=0;i<4;i++)printf("%d,

",a|0|[i]);}程序运行后的输出结果是

A、6,2,1,1,

B、1,1,2,6,

C、2,3,4,6,

D、6,4,3,2,

标准答案:D

知识点解析:利用二重for循环对二维数组a[4]用的主对角线上的元素{1,6,2,

1}实现按列从大到小排序,所以数组a[4]⑷的值变为{{6,4,3,2,},{8,2,

5.7),{3,7.I.5},{4,8,6.1}.最后输出数组a[4][4]第一行卜的元素,所

以输出结果为6,4,3,2。

32、若有以下程序#includemain(){intc;c=13|5;printf("%d\n",c);}则程序的输出

结果是

A、13

B、15

C、18

D、5

标准答案:A

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

为1,其结果是1,否则结果为0,,13用二进制表示为00001101,5用二进制表示为

00000101,或后00001101,即13,选项A正确。

33、有以下程序程ncludemain(){intc[6]={10,20,30,40,50,60},*p,*s:

p=c;s=&c[5];printf("%d\n",s-p);}程序运行后的输出结果是

A、50

B、6

C、5

D、60

标准答案:C

知识点解析:主函数中由针变量p指向数组c,s保存了数组最后一个元素的地

址,那么s中为两个地址之间的元素差5。

34、有以卜.程序#includeintfun(intx){intp;if(x—0||x==l)return(3);p=x-

fun(x-2);return(p);}main(){printf("%d\n",fun(9));)程序运行后的输出结果是

()o

A、7

B、5

C、9

D、4

标准答案:A

知识点解析:考查函数的递归调用。fun(9)=9-fun(7)=9-(7-fun(5))=2+(5-fun(3)尸7・(3-

fun(1))=7,所以答案选A。

35、设有定义:intx[2][3];则以下关于二维数组x的叙述错误的是

A、数组x可以看作是由x[0]和两个元素组成的一维数组

B、可以用x[0]=0;的形式为数组所有元素赋初值0

C、元素x[0]可看作是由3个整型元素组成的一维数组

D、x[0]和是数组名,分别代表一个地址常量

标准答案:B

知识点解析:二维数组的元素在内存中占一系列连续的存储单元C数组元素在内存

中的排列顺序是先存放第0行的元素,再存放第1行的元素……称这种存放顺序为

按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若

干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,

inta|4]|3]={l,2,4,5);在编译时,系统将按a数组元素在内存中排列的顺序,

将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自

动补初值0。以上将给a数组第一行的元素和第二行的第一个元素依次赋予I、2、

4、5,其他元素的初值都为0。

36、以下叙述中正确的是

A、下面的语句用赋初值方式来定义字符串,其中,\(T”是必须的char

strl[]={'s',T,Y,,\0');

B、有定义语句:charstrl[]="strl";,数组strl将包含4个元素

C、字符串常量“strl”的类型是:字符串数据类型

D、字符数组的每个元素可存放一个字符,并且最后一个元素必须是\(T”字符

标准答案:B

知识点解析:选项B)中除了字符串中实际字符之外,还要存储字符串结束标志,

应为5个元素。在c语言中没有字符串数据类型,因此选项。不正确,选项D)字

符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。

37、以下叙述中正确的是

A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组

B、charca|3]|5]={“A",“BB“,“CCC”};是不合语法的

C、charca[][5]={3,"BB"J'CCC"};是不合语法的

D、char*caL3J={"A'\"BB","CCCJ;是不合语法的

标准答案:A

知识点解析:本题考查字符串数组的相关知识,选项B、C、D都是合语法的。

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

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

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

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

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

标准答案:D

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

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

39、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的

A、关键字可用作用户标识符,但失去原有含义

B、预定义标识符可用作用户标识符,但失去原有含义

C、在标识符中大写字母和小写字母被认为是相同的字符

D、用户标识符可以由字母和数字任意顺序组成

标准答案:B

知识点解析:关键字不可用作C语言的标识符,所以A错误,在标识符中大写字母

与小写字母作为不同字符处理,所以C错误?标识符由下划线,字母,数字组成,且

必须以下划线和字母开始,所以D错误。

40、有以卜程序#include<stdio.h>voidfun(char**p){++p;printf("%s\n",*p);|

main(){char*a[]=(MMorning,',,,AfternoonH,"Evening","Night1');fun(a);}程序的运行

结果是

A、fternoon

Morning

C^orning

D、Afternoon

标准答案:D

知识点解析:在程序中,指针的指针变量a和p都是指向字符串的指针。执行

fun(a)语句时,p指向的是字符串数组a的第一个字符串“Morning”,p自加1之

后,*p指向了字符串数组a的第2个字符串“Afternoon”。

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

卷第3套

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

1、以下叙述正确的是

A、可以把define和if定义为用户标识符

B、可以把define定义为用户标识符,但不能把if定义为用户标识符

C、可以把if定义为用户标识符,但不能把define定义为用户标识符

D、define和if都不能被定义为用户标识符

标准答案:B

知识点解析:在C语言中,define是编译预处理命令动词,通常用来定义符号常

数,但它不是保留字,可以被定义为用户标识符,而if是保留字,不能被定义为

用户标识符。

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

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

A^gets(s);

B、scanfV'%s'',s);

C、while((s[i++]=getchar())!=,\n*);s[i]=,\

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

标准答案:B

知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入

的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回

车或者空格。因此选项B不能,选项C和选项D中按字符逐个读入字符串s中,

直到读入的字符是换行符为止,因此正确。

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

A、数据库系统避免了一切冗余

B、数据库系统减少了数据冗余

C、数据库系统中数据的一致性是指数据类型一致

D、数据库系统比文件系统能管理更多的数据

标准答案:B

知识点解析:数据库系统共享性大,冗余度小,但只是减少了冗余,并不是避免一

切冗余。数据的一致性是指在系统中同一数据在不同位置的出现应保持相同的值,

而不是数据类型的一致。数据库系统比文件系统有更强的管理控制能力,而不是管

理更多的数据。

4、下列关于算法的描述中错误的是

A、算法强调动态的执行过程,不同于静态的计算公式

B、算法必须能在有限个步骤之后终止

C、算法设计必须考虑算法的复杂度

D、算法的优劣取决于运行算法程序的环境

标准答案:D

知识点解析:算法的优劣取决自身的运行效率,时间和空间复杂度高低,并不取决

于运行算法程序的环境,故选项D错误。

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

值,下列选项中错误的程序是()。

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

B、floatfun(inta,intb){...}main(){...x=fiin(id);...}

C、floatfun(int,int);main(){...x=fun(inta,intb):...)floatfun(inta,intb){...}

D、main(){floatfun(inti,intj);...x=fun(ij);...)floatfiin(inta,intb){...)

标准答案:A

知识点解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或

char类型除外)。选项A)中,调用的子函数在调用的后面定义,所以不正确。在选

项B)、。中,被调用函数在主调函数之前定义,再在主函数中调用,所以是正确

的;选项D)中,在主调函数中先对子函数floatfun(inti,intj)进行了定义,然后进

行调用。

6、以下正确的字符串常量是

A、abc'

B、OlympicGames

C、,Q

D、\\\"

标准答案:c

知识点常析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反

斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个卡表

示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。

7、下面函数调用语句含有实参的个数为()。func((expl,exp2),(exp3,exp4,

exp5));

A、1

B、2

C>3

D、5

标准答案:B

知识点解析:本题考查函数调用时的实参形式。这里有一个逗号运算的考查,(a,

b)的运算结果为b,因而只有一个值,结合func的调用形式,可以知道实参的个数

只有2个。

8、某二叉树的前序遍历序列与中序遍历序列相同,均为ABCDEF,则按层次输出

(同一层从左到右)的序列为

A、ABCDEF

13、BCDEFA

C、FEDCBA

D、DEFABC

标准答案:A

知识点解析:前序遍历次序:根左右;中序遍历次序:左根右。由定义可以知

道:①前序遍历中第一个就是树根结点,即A结点;②在中序遍历中,根结点左

边的是左子树集,右边的是右子树集,即BCDEF是根结点A的右子树集合。问题

就会转化为:求前序遍历是BCDEF,中序遍历是BCDEF的子树,方法同上。详

细推理过程:步骤1:曰ABCDEF得出根结点为A,由中序遍历可知:左子树为

空,A{BCDEF);步骤2:由BCDEF得出右子树集合的根节点为B,由中序可

知:左子树为空,B{CDEF);步骤3:同理,二叉树更新后如下。

E1

£1

B所以按层次输出(同一层从左到右)的序列为ABCDEF,选项A正

确。

9、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个

共有的()。

A、记录

B、行

C、属性

D、元组

标准答案:C

知识点露析:进行自然连接时要求两个关系具有相同列,即属性。

10、以下叙述中正确的是

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

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

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

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

标准答案:B

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

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

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

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

11、以下选项中,合法的一组C语言数值常量是()。

A、12.0Xa234.5e0

B、028.5e-3-Oxt

C、.1774e1.5Oabc

D、0x8A10,0003.e5

标准答案:A

知识点解析:考查整型常量、实型常量。选项B)的“028”错,以0开头表示为八

进制整常数,不能出现数字8;选项C)的“4el.5"错,e后面应为整数,”Oabc「

错,八进制整常数只能由0~7构成;选项D)的”10,000”错,C语言没有千分号,

所以答案选A)。

12、以下叙述中正确的是()v

A、整型变量可以分为int型、short型、long型和unsigned型四种

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

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

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

标准答案:A

知识点解析:八进制和十六进制是对整型常量的描述,不能为浮点数据,选项B)

错误;八进制开头以数字。开始,选项C)错误;C语言中没有二进制,0X和Ox

是十六进制的前缀,选项D)错误;答案选A)。

13、关系模型中的关系模式至少应是

A、1NF

B、2NF

C、3NF

D、BCNF

标准答案:A

知识点解析:目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三

范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低

要求的范式是第一范式(1NF)。

14、以下叙述中错误的是

A、用户定义的函数中可以没有return语句

B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C、用户定义的函数中若没有return语句,则应当定义函数为void类型

D、函数的relurn语句中可以没有表达式

标准答案:B

知识点解析:本题重点考察函数返回值的相关知识,函数的值只能通过return语句

返回主调函数,在函数中允许有多个relurn语句,但每次调用只能有一个relum语

句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为”空

类型”,类型说明符为“void”。因此B选项正确。

15、正确的结构体类型说明和变量定义是()。

A、typedefstructf{intn:charc;}STR:STRtl,t2:

B、structSIR:{intn;charC;);SIRtl,t2;

C、typedefstmctSTR;{intn=0;charc=,A\}ll,t2;

D、struct{intn:charc;)STR;STRtl,t2:

标准答案:A

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

构体名后不能加“:”号,但定义完之后要在句末加分号,所以选项B、C有误,选

项D中定义无名称的结构体类型同时定义结构体变量形式应为“stmcttl,12;

选项A为用户自定义类型,其为正确的定义形式。

16、以下叙述中正确的是

A、charca|3||5|={nA","BB",nCCCn);是不合语法的

B、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组

C、charca[][5]={"A",'BB'1,“CCC”};是不合语法的

D、char*ca[3]={MA","BBn,"CCCJ;是不合语法的

标准答案:B

知识点解析:字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选

项B的说法正确。选项A和C)对于ca的定义是正确的。选项D定义一个指针数

组,可以保存多个字符串的首地址。

17>若有以下程序#includeint*f(int*s,int*t){int*k:if(*s<*t)(k=s;s=t;t=k:}

returns;)Inain(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%

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

3,5,5,3,5

B、5,3,5,3,5

C、5,3,3,5,5

D^3,5,3,5,5

标准答案:D

知识点解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小

于第二个参数,那么交疾指针的指向,这对于实参指向的数据时没有影响的。最后

返回比较大的元素的地址。主函数中p指向i,q指向j,调用厂f(p,q),返回q的

地址,因止匕*p=3,*q=5,*r=5o

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

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

a=b=c+l;

C、a=(b=4)+c;

温馨提示

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

评论

0/150

提交评论