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

下载本文档

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

文档简介

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

卷8(共9套)

(共285题)

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

卷第1套

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

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

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

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

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

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

标准答案:B

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

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

2、下列关于栈的叙述中正确的是

A、栈按“先进先出”组织数据

B、栈按“先进后出”组织数据

C、只能在栈底插入数据

D、不能删除数据

标准答案:B

知识点解析:栈是只允许在栈顶进行插入和删除运算的线性表,按“先进后出''组织

数据。

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

A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D、线性表的链式存储结构所需要的存储空间与顺序存储结构没有任何关系

标准答案:B

知识点解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加

了存储空间,所以一般要多于顺序存储结构。

4、设循环队列的存储空间为Q(l:35),初始状态为front=rear=35。现经过一系列

入队与退队运算后,fronl=15,rear=l5,则循环队列中的元素个数为

A、15

B、16

C、20

D、0或35

标准答案:D

知识点解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数

有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数

为0;第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素

个数为35。

5、下列关于栈的描述中正确的是

A、在栈中只能插入元素而不能删除元素

B、在栈中只能删除元素而不能插入元素

C、栈是特殊的线性表,只能在一端插入或删除元素

D、栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

标准答案:C

知识点解析:栈是限定在一端进行插入与删除的线性表,在栈中。允许插入与删除

的一端称为栈顶,不允许插入与删除的另一端称为栈底。

6、以下叙述中正确的是

A、标识符的长度不能任意长,最多只能包含16个字符

B、语言中的关键字不能作变量名,但可以作为函数名

C、用户自定义的标识符必须“见名知义”,如果随意定义,则会出编译错误

D、标识符总是由字母、数字和下划线组成,且第一个字符不得为数字

标准答案:D

知识点解析:标识符就是C语言中的变量名、函数名、数组名、文件名、类型名

等。C语言合法标识符的命名规则是:①标识符由字母、数字和下划线组成;②

第一个字符必须为字母或下划线;③大写字母与小写字母被认为是两个不同的字

符;④C语言规定了一个标识符允许的字符个数,为32,超过的字符将不被识

别。C语言的标以符可分为以下3类:①火键字,不能用于为自定义标识符命

名。②预定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标

识符,又称自定义标识符,一般用来给变量、函数、数组等命名,一般做到见名知

义,但是没有特殊规定。

7、下列叙述中正确的是

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

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

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

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

标准答案:A

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

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

并不适用于线性链表。

8、表达式:(inl)((doub匕)9/2)-9%2的值是

A、0

B、4

C、3

D、5

标准答案:C

知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强

制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等

于3。

9、已知字符,A,的ASCII代码值是65,字符变量cl的值是W,c2的值是RL则

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

A、A,68

B、A,B

C、65,66

D、65,68

标准答案:C

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

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

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

所以c2-2=68-2=66o

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

A、可行性分析报告

B、软件需求规格说明书

C、概要设计说明书

D、集成测试计划

标准答案:B

知识点解析:需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析

人员和设计人员之间的交流提供方便,可以直接支持目标与确认,又可以作为控制

软件开发进程的依据。

11、以下叙述中正确的是

A、赋值语句是一种执行语句,必须放在函数的可执行部分

B、scanf和printf是C语言提供的输入和输出语句

C、由prinlf输出的数据都隐含左对齐

D、由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决

定的

标准答案:A

知识点解析:C语言本身没有提供输入输出语句,但是可以通过调用标准库函数中

提供的输入和输出函数来实现输入和输出,选项B错误;采用printf输出数据,输

出数据都默认为右对齐,若要左对齐,可以存格式控制中的“%”和宽度之间加一

个,,.,,号来实现,选项c错误:printf的输出精度由变量的类型决定,与域宽无关,

选项D错误。

12、设有定义:inta;floatb;执行scanfC%2d%r,&a,&b);语句时,若从键

盘输入876543.0则a和b的值分别是

A、876和543.0

B、87和6.0

C、87和543.0

D、76和543.0

标准答案:B

知识点解析:在输入函数scanf的输入格式符%2d%f中,2d表示输入的数据的宽

度为2,所以当从键盘输入876543.0<CR>时,3时把输入数字串的前两位87

赋给变量a,然后将紧接着将6按照格式控制符%仙勺形式赋给变量b,所以b的值

为6.000000o

13、设有关系表学生S(学号,姓名,性别,年龄,身份证号),每个学生学号唯

一。除属性学号外,也可以作为键的是()。

A、姓名

B、身份证号

C、姓名,性别,年龄

D、学号.婵名

标准答案:B

知识点解析:在二维表中凡能唯一标识元组的最小属性集成为该表的键或码。根据

这个概念,在以上选项中,身份证号可以作为该表的键,答案选B。

14、数据流图(DFD)中的有向箭头(一)表示

A、数据流

B、控制流

C、输入流

D、输出流

标准答案:A

知识点解析:数据流图(DataFlowDiagram):简称DFD,它从数据传递和加工角

度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过

程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

数据流程图中有以卜.几种主要元索:T:数据流。数据流是数据在系统内传播的

路径,因此由一组成分固定的数据组成;□:数据源或宿(“宿”表示数据的终点)。

代表系统之外的实体;0:对数据的加工(处理)。加工是对数据进行处理的单元,

它接收一定的数据输入,对其进行处理,并产生输出:=:数据存储。表示信息的

静态存储。

15、程序调试的任务是

A、设计测试用例

B、验证程序的正确性

C、发现程序中的错误

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

标准答案:D

知识点解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软

件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的

调试工具去执行并找出错误的具体位置。软件测试贯穿整个软件生命期,调试主要

在开发阶段。

16、设变量已正确定义并赋值,以下正确的表达式是()。

A、x=y+z+5,++y

B,int(15.8%5)

C、x=y*5=x+z

D、x=25%5.0

标准答案:A

知识点解析:考查运算符与表达式。求余运算符“%”要求参与运算的量均为整型,

选项B)、D)错;赋值运算符的左侧必须为变量而不能是表达式,选项C)错。

选项A)为正确的逗号表达式,答案选A)。

17、设有以下函数:voidfun(intn,char*s){...),则下列对函数指针的定义和赋值

均正确的是()。

A、void(*pf)(int,char);pf=&fun;

B、void*pf();pf:fun;

C、void*pf();*pf=pf=fun;

D、void(*pf)(int,char*);pf=fun:

标准答案:D

知识点解析:函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另

一个函数中。函数名代表函数的人口地址,指向函数的指针应该定义为

void(*pf)()o如果定义为void*pf(),则表示函数pf的返回值是一个基类型为void的

指针,因此D选项正确。

18、以下选项中,合法的实数是()。

A、4.5E2

B、E1.3

C、7.11E

D、1.2EL2

标准答案:A

知识点解析:科学计数法中,c/E前后必须有数字并且后面的数字必须为整数,答

案选Ao

19^有以下程序:#include<stdio.h>struetS{inia,b;}data[2]={10,100,

20,200);main(){structSp=data[1];prinff("%d\n",++(p.a));}程序的运行

结果是()。

A、10

B、11

C、20

D、21

标准答案:D

知识点解析:声明data是结构s数组,初始化data⑼.a=10;data[O].b=IOO;

data[l].a=20:data[l].b=200o主函数中p=data[l];即p.a=data[l].a;

p.b=data[l].b;,执行语句printf("%d\n",++(p.a));,打印输出时,p.a先

增1再打印,p.a=data[1].a=20,先增1等于21。

20、以下叙述中正确的是

A、C语言程序总是从最前面的函数开始执行

B、C语言程序总是从main函数开始执行

C、C语言程序中main函数必须放在程序的开始位置

D、C语言程序所调用的函数必须放在main函数的前面

标准答案:B

知识点解析:C语言中一个源程序都有一个且只能有一个main函数,即主函数;

C语言规定必须用main作为主函数名。其后的一店圆括号中可以是空的,但不能

省略。程序中的main。是主函数的起始行,也是C程序执行的起始行。每一个程

序都必须有一个且只能有一个主函数.一个C程序总是从主函数开始执行.到

main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而调用函

数的定义位置和调用没有直接关系。

21阅读以下程序#inckideVstdio.h>main(){intcase:floatprintF;printf("请输

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

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

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

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

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

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

标准答案:B

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

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

22、与数学表达式史力z对应的C语言表达式是

A^(x>=y>=z)

B、(x>=y)&&(y>=z)

C、(x>=y)!(y>=z)

D^(x>=y)II(y>=x)

标准答案:B

知识点解析:若要表示x大于等于y,同时y大于等于z,需要用逻辑与表达式连

接。

23、有以下程序main(){intk=5,n=0;do{switch(k){easel:caseJ:n+=l;k—;

break;default:n=0;k—;case2:case4:n+=2;k—;break;}printf(n%d",

n);(while(k>0&&n<5))运行以后的输出结果是

A、0235

B、235

C、02356

D、2356

标准答案:B

知识点解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,

执行default语句,“n=0,k=4'',没有break语句,因此执行case2分支语句,n为

2,k为3,程序进行第2次循环,执行“case3:n=3,k=2",输出n值为3,程序进

行第3次循环,执行case3这个分支,结果是“n=5,k=l”,打印出5;这时因为

n=5不满足nV5的循环条件,因此退出循环,程序运行结束。

24、一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工

和计算机间的联系是

A、一对多

B、多对多

C、多对一

D、一对一

标准答案:c

知识点解析:一名员工可以使用多台计算机,每台计算机只能由一名员工使用,所

以实体员工和计算机间的联系是多对一。所以选项C正确。

25若有以下程序#inckideintk=7,m=5;voidf(int**s){int*t=&k;s=&t;

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

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

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

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

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

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

标准答案:C

知识点解析:本题考查二级指针作为函数的参数,可以通过函数调用来改变主函数

中一级指针的指向。主函数中指针变量p指向i,r指向p,调用f函数,形参指针

s指向p,流程转到f函数执行,指针变量t指向k,s指向t,此时更改了s的指

向,s指向了I,更改了s指向的地址空间内容为m的地址,同时I也指向变量m,

因此**s的值为m的值,*t为m的值,k为7。流程返回到主函数,没有对主函数

空间的数据和指向作出更改,因此全部为3。

26、能够减少相同数据重复存储的是

A、数据库

B、字段

C、文件

D、记录

标准答案:A

知识点解析:数据库(Database)是按照数据结构来组织、存储和管理数据的仓

库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十

年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据

管理的方式。数据库主耍特点:实现数据共享、减少数据的冗余度、数据的犯立

性、数据实现集中控制、数据一致性和可维护性,以确保数据的安全性和可靠性和

故障恢复。

27、有以下程序#include〈stdio.h>//include,String.h’‘

typedefstruct{charname[9];charsex:floatscore[2];|STU;voidf(STUa)

{STUb={"Zhao'','m',85.0,90.0);inti;strcpy(a.name,b.name);

a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];)程序的运行结果是

A、Qian,m,85,90

B、Zhao,m,85,90

C、Zhao,f,95,92

D、Qian.f,95.92

标准答案:B

知识点解析:本题考查在结构体中函数的实参和形参的传递,调用ffcl后,实参

传向形参,进行f()函数功能的实现,但程序中没有返回语句,故形参不能将值传

回实参,它们值的传递具有不可逆性,所与printf输出的还是c中实参的值。

28、si和s2已正确定义并分别指向两个字符串。若要求:当si所指串大于s2所

指串时,执行语句S;则以下选项中正确的是

A、if(sl>s2)S;

B、if(strcmp(sl,s2))S:

C>if(strcmp(s2»sl)>0)S;

D、if(strcp(sl,s2)>0)S;

标准答案:D

知识点解析:字符串标元使用strcmp函数,该函数有两个参数分别是需要比较大

小的两个字符串si和s2,如果si大于s2则返回值大于0,如果si小于s2则返回

值小于0,否则si和s2相同返回0。题目要求si大于s2时执行语句s,因此

strcmp(s1,s2)的返回值大于0时执行S。

29、若要求从键盘读入含有空格字符的字符串,应使用函数()。

A、gets()

B、getc()

C、gctchar()

D、scanf()

标准答案:A

知识点解析:getc(),gctchar()能输入单个字符,在C语言中能输入字符串的函数

有scanf()和gets。,但是在scanf()函数中,空格和回车都会作为分隔符,而ge〔s()

函数则会将空格作为普通字符输入,回车作为分隔符,所以答案选A。

30、有下列程序,程序执行后的输出结果是fun(charP[H10D{intn=0,i;for(i=

0;i<7;i+4-)if(P[i][0]=,T,)n++;returnn;}main(){charstr[][10]=

("Mon","Tue","Wed%,'ThuM;'Fri","Sat","Sun"};printf("%d\n",fun(str));}

A、1

B、3

C,0

D、2

标准答案:D

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

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

是统计出中等于字符T的个数。所以fun(str)的功能是统计一周七天

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

=2。

31、在数据管理技术发展的三个阶段中,数据共享最好的是()o

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段

和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在

各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。

32、若有定义语句:imk[2][3],+pk[3];,则以下语句中正确的是

A、pk=k;

B、pk|0]=k|l][2];

C、pk=k[O];

D、pk[l]=k:

标准答案:B

知识点解析:本题考查多维数组和数组指针。k是一个二维数组,pk是一个指针数

组,该数组有3个元素,每个元素都是一个指向整型对象的指针。选项A)错误,

等号的左边是一个数组地址,不是变量:选项B)是把元素赋值给pk[O];选

项C)中等号左边不是变量;选项D)类型不匹配,pk[l]是指向一个整型对象,而k

是一个二维数组首地址。

33、有以下程序#includemain。#defineN4{intx[][N]={{1,2,3),{4),{5,6,

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

for(i=U;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

34、以下叙述中正确的是

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

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

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

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

标准答案:C

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

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

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

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

35、有以下程序#includemain。{chara=4:printf("%d\n",a=a«l);}

A、8

B、16

C、40

D、4

标准答案:A

知识点解析:本题主要考查按位右移运算。a=4的二进制为00000100,a«l后为

00001000,其值为十进制数值8。

36、设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入

形式如下(注:此处□代表一个空格)□□1.0口口2.0口口3.0〈回车〉则能进行正确输入的

语句是

A、scanf(n%lf%lf%lf;a,b,c);

B、scanf("%lf^)lf%lf',&a,&b,&c);

C、scanf(n%f%f%f;&a,&b,&c);

D、scanf("%5.1lf%5.11^5.1If;&a,&b,&c);

标准答案:B

知识点解析:scanf函数的一般形式为scanf(格式控制,变量I地址,变量2地址,...),

其中,格式字符串要与数据类型保持一致,所以格式字符串中应为%lf,后面应该为变

量地址,所以需要加上符号所以选择Bo

37^有以下程序#includemain(){intk,j,s;for(k=2:k<6;k++,k++){s=l;for(j=k;j

<6;j++)s+=j;}printf("%d\n",s);)程序运行后的输出结果是

A、6

B、10

C、24

D、40

标准答案:B

知识点解析:本题重点考察for语句循环嵌套,首先k=2,进行一次循环后,k自

增两次,变成4,这时s为1。即当k=4的时候,s=l,j=4,执行内层循环,

s=i+4,j自增1后等于5,s=5+5,j再自增1后即为6,跳出内层循环。k自增两

次后等于6,不成立,跳出外层循环。最后输出s的值,即为10。因此B选项正

确。

38、有以下程序#includetypcdefstructstu{charname[10];chargender;intscore;)

STU;voidf(STU*a,STU*b){*b=*a;printf("%s,%c,%d,",b->name,b->gender,

b->score);}main(){STUa={”Zhao",'m',290},b={MQiann,T,350};f(&a,&b);

printf("%s,%c,%d\n”,,b.gender,b.score);}涯序的运行结果是()。

A、Zhao,m,290,Zhao,m,290

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

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

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

标准答案:A

知识点解析•:结构体变量地址作为函数参数为地址传参,形参和实参指向的为同一

块内存地址,所以对数组元素的改变能够影响到实参。语句"*b=*a;"则将a指向的

结构体变量中的数据赋值给b指向的结构体变量,实参b的值也发生改变,输出结

果为选项A)。

39、以下叙述中错误的是

A、gets函数用于从终端读入字符串

B、getchar函数用于从磁盘文件读入字符

C、fpuls函数用于把字符串输出到文件

D、fwrite函数用于以二进制形式输出数据到文件

标准答案:B

知识点解析:本题考查的是输入输出函数的使用,gets和ge【char函数用于从标准

输入设备终端读入字符串和字符,并非从磁盘文件读入,fputs用于把字符串输出

到文件,fwrite用于以二进制形式输出数据到文件。

40、以下叙述中正确的是

A、在一个程序中,允许使用任意数量的include命令行

B、在包含文件中,不得再包含其他文件

C、#include命令行不能出现在程序文件的中间

D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接

标准答案:A

知识点解析:本题考查预处理中文件包含的概念,包含文件中可以包含其他文件,

B选项错误,include可以出现在程序文件的中间,C选项错误,包含文件被修改

了,包含该文件的源程序必须重新进行编译和连接。

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

卷第2套

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

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

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

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

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

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

标准答案:B

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

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

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

2、某带链栈的初始状态为top二bottom二NULL,经过一系列正常的入栈与退栈操作

后,lop=boilom=20。该栈中的元素个数为()。

A、0

B、I

C、20

D^不确定

标准答案:B

知识点解析:带链的栈就是用一个单链表来表示的栈,栈中的每一个元素对应链表

中的一个结点。栈为空时,头指针和尾指针都为NULL;栈中只有一个元素时,头

指针和尾指针都指向这个元素。

3、下列叙述中正确的是

A、栈是“先进先出”的线性表

B、队列是“先进后出”的线性表

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

D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

标准答案:D

知识点解析:本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性

表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复

杂程度,一般将数据结沟分为两大类型:线性结构与非线性结构。有序线性表既可

以采用顺序存储结构,又可以采用链式存储结构。

4、设循环队列的存储空间为0(1:35),初始状态为front=rcar=35。现经过一系列

入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为

A、15

B、16

C、20

D、0或35

标准答案:D

知识点解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数

有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数

为0;第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素

个数为35o

5、下面不属于软件设计阶段任务的是()。

A、软件总体设计

B、算法设计

C、制订软件确认测试计划

D、数据库设计

标准答案:C

知识点解析:软件设计阶段总体分为两部分:概要设计和详细设计,此阶段的主要

任务就是将需求规格说明文档转换为软件设计文档,将需求阶段提出的问题一一解

释,形成详细设计文档,并根据功能要求定制相应数据结构、各种流程图等,为下

一步编码做准备。

6、有以卜程序#includevoidmain。{intn=2,k=-l;while(!(k>0IIn++));

printfC%d%d\n'\k,n);}程序运行后的输出结果是()。

A、02

B、13

C、57

D、12

标准答案:D

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

在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断是

否为真,"(k>O||n++)”表达式的值为真。”!(k>O||n++)”表达式的值为假,所以while

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

k和n的值是1和2。

7、若有以下程序#includemain。{inta=O,b=0,c=0c=(a+=++b,b+=4);

printfC%d,%d,%d\H",a,b,c);}则程序的输出结果是

A、1,5,1

B、-1,4,4

C、1,5,5

D、-1,4,-1

标准答案:C

知识点解析:对于语句c=(a+=++b,b+=4);首先计算a=a+(++b),a,b初值为0,则

计算以后a为1,b为1,然后计算b十二4,得到b的值为5,此时表达式b十=4的值

为整个逗号表达式的值,因此c的值为5。

8、数据库技术的根本目标是要解决数据的()。

A、存储问题

B、共享问题

C、安全问题

D、保护问题

标准答案:B

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

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

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

9、下面不属于结构化程序设计风格的是

A、程序结构良好

B、程序的易读性

C、不滥用Goto语句

D、程序的执行效率

标准答案:D

知识点解析:结构化程序设计(stmcturcdprogramming)是进行以模块功能和处理过

程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子

集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。

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

的是()。

A、预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义

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

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

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

标准答案:A

知识点解析:用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键

字不能用作用户标识符。

11、有以下程序:#includevoidfun(char*c,intd){*c=*c+l:d=d+l:prinfflf"%

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

\n",b,a);}程序而运行结果是()。

A、b,B,b,A

B、b,B,B,A

C^a,B,B,a

D、a,B,a,B

标准答案:A

知火点解析:本题重点考查函数的调用。首先要了解字母对应的ASCII码,例如

A为65,a为97,字母+1可得到下一个字母。其次是函数形参和实参的问题,运

行过程如下:在fun(&b,a)中,*e=ta\d=65«*c+l='b',d+l=66,prinfR"%

c,%c,”,*c,d);输出b,B;因为指针c指向地址的值为b,此时b=*c=,b,;

函数返回执行prinff("%c,%c\n”,b,a);输出b,A,因此A选项正确。

12、以下选项中不属于字符常量的是

A、,C,

B、“C"

C、IxCC'

D、\072

标准答案:B

知识点解析:本题考查字符型常量。选项A)正确,是大小字母c;选项B)错误,

使用双引号括起来的是字符串,不是字符;选项Q正确,使用了转义字符“\”,

xcc表示16进制的CC:选项D)正确,使用了转义字符“\",072表示8进制的

72o

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

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

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

依赖为

A、(C#,T)->Ta

C#fCn,Cn—>Ta

C、C#一T,T一Ta

D、C#一Tn

标准答案:C

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

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

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

14>有以下程序:#include<stdio.h>main(){FlLE*f;f=fopcn("filea.txt",

"w");fprintf(f,"abc");fclose(f);}若文本文件filea.txl中原有内容为hello,

则运行以上程序后,文件filea.txt中的内容为()。

A、abclo

B、abc

C^helloabc

D、abchcllo

标准答案:B

知识点解析:本题考查文件操作函数。执行fl3rintf(f,"abc”);后,f文件的内容

就变为了abc,所以B选项正确。

15、以下选项中,值为1的表达式是

A、1一,0'

B、T一0

C、1一,\0,

D、’\0一0'

标准答案:C

知识点解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先

要将字符转换为其对应的ASCII码值再参与整数运算。字符““,”对应的ASCII码

值是49,字符U对应的ASCII码值是48,字符“、(T”是字符串结束标识符

NULL,其对应的ASCII码值是0。

16、表达式3.6-5/2+1.2+5%2的值是

A、4.8

B、3.3

C、3.8

D、4.3

标准答案:C

知识点解析:表达式的计算过程为:3.6-5/2+1.2+5%2=3.6-

2+1.2+1=3.8。此题要注意5/2的结果是2,而不2.5,因为除法运算符两边

的数值类型均为整型,故运算结果的数值类型也被认定为整型。

17、有以下程序#include#defineN4voidfun(inta[北N],intb[]){inti;for(i=0;i

<N;i++)b[i]=a[i][i]-a[i][N-l-i];)voidmain(){intx|N][N]={{1,2,3,4),{5,

6,7,8),{9,10,11,12),{13,14,15,16)),y[N],i;fun(x,y);

for(i=0;i<N;i++)printf("%d,%y[i]);printfC\nH);}程序运行后的输出结果

A、-12,-3,0,0,

B、-3,-1,1,3,

C、0,1,2,3,

D、-3,-3,-3,-3

标准答案:B

知识点解析:fun函数的功能是求出二维数组a中第i行第i个元素与第N-1-i元素

的差,赋给b[i]。在主函数中,把实参二维数组x和一维数组y传递给形参a和

b,最后输出一维数组y中元素的值。

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

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

A、while(ch=getchar()=,N,)printf(,,%cM,ch);

while(ch=getchar()=="N")printf("%cn,ch):

C、whilc((ch=gctchar())!=,N,)printf(n%c",ch);

D、while((ch=getchar())=,N,)printf(M%cn,ch);

标准答案:C

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

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

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

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

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

19^有以下程序#includeVstdio.h>main(){intx=8:for(;x>0;x—){if(x%

3){printf("%d,",x-);continue;}prinff("%d,n,-x);}}程序的运行结果是

A、8,7,5,2,

R、9.7.6.4.

C、7,4,2,

D、8,5,4,2,

标准答案:D

知识点解析:表示先执行程序,再令x的值减1;而表示令x的值减1,

再执行程序。x=8时,x%3为非0值,执行语句“{printf(”%d,”,x-);

continue:}",输出“8,”,此时经过x--,x的值变为7,跳出此次循环;执行“x-

・,x=6,x%3=0”,后面语句不执行,执行语句“prjnt("%d,",-x);”,输出

“5,”;执行for语句中的x-,得到x=4,判断x%3,输出“4,”,执行两次

后,x=2,执行“{printfC%d,",x-);continue;输出“2,”;然后执行两次

x—后,x=0,不符合“x>0”,循环全部结束。

20、以下定义数组的语句中错误的是

int=num[][3]={{l,2),3,4,5,6):

B、intnum|]={1,2,3,4,5,6};

C、intnum|][4|={1,2,3,4,5,6};

D、intnum[2][4]={{l,2),{3,4},{5,6));

标准答案:D

知识点解析:在选项D)的数组定义中,赋值号左边定义了一个2行4列的二维数

组,而在右边定义了一个3行2列的二维数组。

21>有以下程序#include<stdio.h>main()intf(intx,inty){inta=3,b=4,

c=5,d;{return((y-x)*x);}d=f(f(a>b),f(a,c));printf(H%d\n",d);}程序运

行后的输出结果是

A、10

B、8

C、9

D、7

标准答案:C

知识点解析:本题考查函数的嵌套调用。首先计算f(a,b)与f(a,c),f(a,b)=(b—

a)*a=3»f(a,c)=(c—a)*a=6,然后计算f(3,6)=(6—3)*3=9。

22、设有宏定义:#definelsDIV(k,n)((k%n==l)?l:0)且变量m已正确定义并赋

值,则宏调用:IsDIV(in,5)&&IsDIV(m,7)为真时所要表达的是

A、判断m是否能被5和7整除

B、判断m被5或者7整除足否余1

C、判断m被5和7整除是否都余1

D、判断m是否能被5或者7整除

标准答案:C

知识点解析:本题考查宏定义和三目运算符。三目运算符的格式为:test?语句1:

语句2其中,test可以是任何Boolean表达式。语句1,当test是true时执行该语

句,可以是复合语句;语句2,当test是false时执行该语句,可以是复合语句。

i、DIV(k.n)要表达的是当k除n的余数是I时表达式的值为1,否则为0,所以题

中要表达的是m被5和7整除是否都余1。

23、有以下程序,程序运行后的输出结果是main()|inlm=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,I,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。

24、不能正确表示数学式区的表达式是

A、a/c*b

B、a*b/c

C、a/b*c

D、a*(b/c)

标准答案:C

知识点解析:/号和*号的优先级处于平级,结合性都是自左至右,所以选择C,C式

子表示的是回o

25、有以卜程序#includemain(){inti=l;i=iAi;printf("%d\n",i);)程序运行后的输

出结果是

A、1

B、-1

C、0

D、7

标准答案:C

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

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

确。

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

卷第3套

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

1、下列叙述中正确的是

A、算法就是程序

B、设计算法时只需要考虑数据结构的设计

C、设计算法时只需要考虑结果的可靠性

D、以上三种说法都不对

标准答案:D

知识点解析;所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算

顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下

终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的

运算和操作,还要考虑算法的控制结构。

2、下列叙述中正确的是

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

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

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

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

标准答案:B

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

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

3、有以下程序:#include<stdio.h>main(){intsum=O,x=5;do{sum+=x;}

while(!-----X);pr】ntf("%d\n",sum);}程序的运行结果是()。

A、0

B、5

C、14

D、15

标准答案:B

知识点解析:先执行do中的表达式sum+=x,则sum=sum+x=0+5=5,再执行

while中的表达式,结果为0,退出循环,所以运行结果是5。

4、若有以下程序#includemain。{inta=0,b=0,c=0,d:c=(a+=b,,b+=a);

/*第4行*/d=c;;/*第5行*/;/*第6行*/printf("%d,%d,%d\

n”,a,b,c);/*第7行*/}编译时出现错误,你认为出错的是

A、第4行

B、第5行

C、第6行

D、第7行

标准答案:A

知识点解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C

语言的空语句,是编译程序可以识别并且编译的.因此第5、6行都是正确的.

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

A、概要设计与详细设计

B、数据设计与接口设计

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

D、过程设计与数据设计

标准答案:A

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

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

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

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

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

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

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

6、下面不属于软件设计阶段任务的是()。

A、软件的详细设计

B、软件的总体结构设计

C、软件的需求分析

D、软件的数据设计

标准答案:C

知识点解析:软件的需求分析属于软件的定义阶段的任务,答案选C。

7、有以下程序:#includeintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)

/2);)main(){inta=l.b=2,c=3;pnntt("%d\n",fun(2*a,tun(b,c)));}程

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

A、2

B、3

C、4

D、5

标准答案:A

知识点解析:fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即

fun(2,2),2==2,所以返回2。

8、有以下程序:#includeinta=l,b=2;voidfunl(inta,intb){printf("%d%d",

a,b);}voidflun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\

n”,a,b);}程序运行后的输出结果是()。

A、5634

B、3456

C、1256

D、5612

标准答案:A

知识点解析:在一个源文件中,如果外部变量和局部变量同名.则在该局部变量的

作用域内,该外部变量会被“屏蔽”,所以函数funl()输出的是局部变量a、b的值:

56;fun2()改变的是全局变量a、b的值,输出结果为34,答案选A。

9、下面描述中不属于数据库系统特点的是

A、数据共享

B、数据完整性

C、数据冗余度高

D、数据独立性高

标准答案:C

知识点解析:数据系统的基本特点有数据的集成性、数据的高共享性与低冗余性、

数据的独立性、数据统一管理与控制。

10、设已有定义floatx;,则下列时指针变量P进行定义且赋初值的语句中正确的

是()。

A、int*p=(float)X;

float*p=&x;

C、floatp=&x;

D、float*p=1024;

标准答案:B

知识点解析:指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。

赋值时应将某个变量地址即&x赋给指针变量,所以选择Bo

通过某种操作得到,该操作为

A、选择

B、投影

C、交

D、并

标准答案:D

知识点解析:由关系T中的数据可以看出,其数据由关系R和S的数据组成。所

以关系T是由关系R和T通过并运算得到的。

12、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和

A、编码设计

B、测试阶段

C、运行阶段

D、物理设II

标准答案:D

知识点3析:数据库设计目前一般采用生命周期法,即把整个数据库应用系统的开

发分解成目标独立的四个阶段。它们分别是需求分析阶段、概念设计阶段、逻辑设

计阶段、物理设计阶段。

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

A、5a

B、A%

C、_10_

D^sizeof

标准答案:C

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

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

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

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

名。

14>卜列函数的功能是()。voidfun(char*a,char*b){while((*b=**a)!=,\

0'){aH;b++;}}

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

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

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

D、检查a和b所指字符串中是否有、0,

标准答案:A

知识点解析:while循环条件为:(*b=*a)!=,\(T,执行时先把指针a所指向的字符

赋给指针b所在的内存单元,如果该字符不是结束标识“\0”,执行循环体

“a++;b++;”,指针a、b分别指向下一个字符单元,再判断循环条件,如果成立,

继续把指针a所指向的字符赋给指针b所在的内存单.元,直到遇到结束标识为止,

因此A选项正确。

15、以下叙述中正确的是

A、函数的类型不能足指针类型

B、函数的形参类型小能是指针类型

C、基类型不同的指针变量可以相互混用

D、设有指针变量为double*p,贝ijp+l将指针p移动8个字节

标准答案:D

知识点解析:在对指针进行加、减算术运算时,数字1表示I个存储单元的长度。

而double类型数据在内存中占8个字节,因此移动一次移动8个字节。其他三个

都不正确。

16、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#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循环来给数组元

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

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

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

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

17>有以下程序#

温馨提示

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

评论

0/150

提交评论