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

下载本文档

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

文档简介

国家二级(C语言)机试模拟试卷第1

套

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

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

A、在C语言中,预处理命令行都以#开头

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

C、#includcVstdio.11>必须放在C程序的开头

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

标准答案:A

知识点解析:C语言中,凡是以#开头的都被称为编译预处理行,选项A正确;预

处理行可以放在C源程序的任何位置,习惯放在起始位置,选项B错误;语句

#include<stdio.h>必须放在使用文件stdio.h中下目关方法的语句之前,但是不一

定非要放在C程序开头,选项C错误;预处理包括宏定义、文件包含和条件编译

等,选项D错误。

2、有以下程序:#include<stdio.h>main(){chars[]={"012xy"):inti,n=0:

for(i=0;s[i]!=0;i++)if[s[i]>=,a,&&s[i]<=,z,)n++;printf("%d\n",n);}程

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

A、0

B、2

C、3

D、5

标准答案:B

知识点解析:本题main函数的作用就是判断字符串s中小写字母的个数,显然结

果为2o

3、在数据流图中,带有箭头的线段表示的是()。

A、控制流

B、数据流

C、模块调用

D、事件驱动

标准答案:B

知识点解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,

一一般在旁边标注数据流名。

4、若有以下定义(设ini类型变量占2个字节)inli=8,j=9;则以下语句:

printf("i=%%d,j=%%%d\n",i,j);输出的结果是()。

A、i=8,j=9

B、i=%d,j=%8

C>i=%d,j=%d

D、8,9

标准答案:B

知识点解析:本题考查printf函数的格式。printf函数中格式说明符之前插入的任

何字符都按原样输出。对于printf函数,有两个%说明,第一个%后面的内容要按

原样输出。

5、有以下程序:#include<stdio.h>voidfun(intx){if(x/2>l)fun(x/2);

printf("%d",x);)voidmain(){fun(7);printf(H\n");}程序运行后的结果是

()。

A、137

B、731

C、73

D、37

标准答案:D

知识点解析:函数fun是递归函数,递归终止条件是x小于等于2,当大于2时递

归调用ftm(x/2)°第一次循环x/2=3,调用fun(3),x/2=l,跳出if循环,执行

输出x=3,然后回到第一次循环,执行if循环的语句,输出x=7。

6、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x

+y)/2);elsereturn(x);}main()(inta=4,b=5»c=6;

printf(u%d\n*',fun(2*a,fun(b,c)));}第二次调用为fun(8,5)=

A、6

R、3

C、8

D、12

标准答案:A

知识点解析:本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所

以第二次调用为fun(8,5)=6。所以选择A。

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

A、可以通过typedef增加新的类型

B、可以用typedef将已存在的类型用一个新的名字来代表

C、用typedef定义新的类型名后,原有类型名仍有效

D、用typedef可以为各种类型起别名,但不能为变量起别名

标准答案:A

知识点解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,

并不是增加新的类型,所以A错误。

8、对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需

要比较次数为()。

A、1

B、2

C、3

D、4

标准答案:C

知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行

比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后

半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在

线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这

时两者相等,即查找成功。

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

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

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

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

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

标准答案:A

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

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

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

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

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

10、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A、外模式

R、内模式

C、概念模式

D、逻辑模式

标准答案:B

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数

据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模

式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式乂

称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。

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

值均正确的是()。

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

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

C、void*of():*pf=fun:

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

15、学生关系模式中有D(D#,Dn,DI,DAddr。X其属性分别为系编号、系名

称、系主任和系地址)和S(S#,Sn,SG,Date,Maj,D#)(其属性分别为学号、姓

名、性别、入学日期、专业和系编号)两个关系,关系S的主键(码)是S#,关系S

的外键(码)是()。

A、D#

B、Maj

C、D1

D、Dn

标准答案:A

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

中的某属性集是某表B的键,则称该属性集为A的外键或外码。故本题答案为A

选项。

16、有以下程序#includeVstdio.h>voidmain(){intn=2,k=l;while(!(k>

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

A、02

B、13

C、57

D、12

标准答案:D

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

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

为真,(k>0lln++)表达式的值为真。!(k>0l[n++)表达式的值为假,所以while语

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

和n的值是1和2。

17、设有如下的程序段:charstr[]-4HeIloWorld,>;char*ptr;ptr==str;执行上面

的程序段后,*(ptr+10)的值为()c

A、,\(T

B、O

C、不确定的值

D、U的地址

标准答案:A

知识点解析:本题涉及字符数组和指针两个知识点:①在C语言中,字符数组在

存放字符串时会自动在末尾加上''0',所以题中数组sir有11个元素;②pir指向

数组str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值(即结束符、

0')。

18、有以下程序:#includeintf(intx,inty){return((y—x)*x);}main(){inta=3,

b=4,c=5,d;d=f(f(a,b),f(a,c));printfC%d\n",d);}程序运行后的输出

结果是()。

A、10

B、9

C、8

D、7

标准答案:B

知识点解析:程序执行过程:首先计算f(a,b),代入a=3,b=4得3,然后计算

f(a,c),代入a=3,c=5得6,所以d=f(3,6)=9。

19、设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增

的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分

后的结果为()。

A、23,13,51,57,66,26,81,69,76

B、13,23,26,51,57,66,81,76,69

C、23,13,51,57,26,66,81,69,76

D、23,13,51,57,81,26,66,69,76

标准答案:A

知识点解析:快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为

基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码

值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。

20、设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的

是

A、++k

B、k+=l

C、k++

D、k+1

标准答案:C

知识点解析:#NAME?

21、执行以下程序段后,w的值为()。intw=*A\x=14,y=15;w=((xII

y)&&(wV,a'));

A、-1

B、NULL

C、1

D、0

标准答案:C

知识点解析:因为x=14,y=15都是非零整数,因此xlIy=lo大写字母的ASCH

码值小于小写字母,wVW也为真,因此(xIIy)&&(wW)的值为1。

22>有以下程序:#include<stdio.h>main(){charb,c;inti:b='a';c='A';

for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);)printf("\n");}程

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

A、abcdef

B、ABCDEF

CNaBcDeF

D、AbCdEf

标准答案:D

知识点解析:函数的含义是如果i的值能被2整除,以宁符格式打印输出i+c的

值,如果i的值不能被2整除,打印i+b的值。第一次i值为0,执行else语句打印

字符,A,,第二次i值为1,打印1+b的值即字符,b:第三次j值为2,打印字符

C,依此类推选择D选项。

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

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

B、a=b=c+l;

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

D、a=l+(b=c=4);

标准答案:A

知识点解析:不能将变量或常量赋给一个表达式,所以A选项中(b=4)=3是错误的。

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

A、局部变量不能被说明为static

B、只有全局变量才有自己的作用域,函数中的局部变量没有作用域

C、只有在函数内部定义的变量才是局部变量

D、只要是用户定义的标识符,都有一个有效的作用域

标准答案:D

知识点解析:本题考查局部变量和全局变量作用域。在B选项中,局部变量也有

作用域:在C选项中,函数内部定义的也可能是全局变量;在A选项中,局部变

量可以定义为静态局部变量。

25已知char**s,下面正确的语句是()。

A、s="ABCDEF1';

B、*s="ABCDEF";

C、**s=MABCDEF";

D、*s='A':

标准答案:c

知识点。析:“s”是代表数组首地址的地址常量,不是变量,左边不能出现常

量,因此s="ABCDEF”语法错误。"**s”和“s”一样:“*s”是指变量地址,不能给其

赋字符串。

26、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返

回值为()。

A、0

B、

C、非。值

D、NULL

标准答案:C

知识点解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到

达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项C正确。

27、下列关于二叉树的叙述中,正确的是()。

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

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

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

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

标准答案:B

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

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

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

28、C语言主要是借助以下哪种手段来实现程序模块化()。

A、定义函数

B、定义常量和外部变量

C、使用丰富的数据类型

D、使用三种基本结构语句

标准答案:A

知识点解析:暂无解析

29、若有定义:typedefcharT[10];T%:上述定义中a的类型与下面选项中完全

相同的是()。

A^chara[10];

B、char(电)[10];

C、char*a;

D、char*a[10];

标准答案:D

知识点解析:本题考查lypedef的使用方法。typedef并不创建新的类型,只是对己

存在的类型使用一个新名字,在出现新名字的地方可以直接替换为原先的类型来处

理。因此选项D正确。

30、关于需求分析阶段任务的叙述中不正确的是(),

A、确定软件系统的功能需求

B、确定软件系统的性能需求

C、需求规格说明书评审

D、制订软件测试计划

标准答案:D

知识点解析:因为是软件需求阶段,所以D选项不正确。

31、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正

确的是()。

A、冒泡排序为n(n-1)/2

B、简单插入排序为n

C、希尔排序为n

D、快速排序为n/2

标准答案:A

知识点解析:在最坏情况下,冒泡排序所需要的比较次数为n(n-l1/2;简单插入排

序所需要的比较次数为n(n-l)/2;希尔排序所需要的比较次数为0(,7);堆排序所

需要的比较次数为0(Mog2n)。

32、有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]=(1,2,3,0,

0),i;fj?=fbpcn(''d2.dat",''wb'');fwritc(a»sizeof(int),5,fp);fwritc(a»

sizeof(int),5,fp);fclose(fp);fp=fbpen(,,d2.dat'',''rb'');fread(a,sizeof(inl),

10,fp);fclose(fp);f.0r(i=0;i<10;i++)printf「%d,”,a[i]);}程序的运行

结果是()。

A、1,2,3,0,0,0,0,0,0,0,

B、1,2,3,1,2,3,0,0,0,0,

C、123,0,0,0,0,123,0,0,0,0,

D、1,2,3,0,0,I,2,3,0,0

标准答案:D

知识点解析:首先用函数fopcn()以“wb”的方式打开文件“d2.dat”,然后调用两

次。fwriie函数将数组a的5个元素,依次输出到文件fp中(共10个字节),然后关

闭文件。再次打开文件,使用文件指针指向文件的开头,调用fread函数从文件fp

中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,300,1,

2,3,00},因此最后的输出结果为“1,2,300,1,2,3,0,0”。

33、有以下程序#inckide<stdio.h>main(){char*s=H12134";intk=0,a=0;

while(s[k+1]){k++;if(k%2==0){a=a+(s[k]-'O'+1);continue;}a=a+

(s[k]-,0,);}printf(Hk=%da=%d\n",k,a);}程序运行后的输出结果是

A、k=5a=15

B、k=4a=12

C、k=6a=ll

D、k=3a=14

标准答案:B

知识点解析:当k=0时,执行while一次,得到k=l,a为2;当k=l时,执行

while一次,得至I」k=2,a为4:当k=2时,执行while一次,得至Uk=3,a为7:当

k=3时,执行while一次,得到k=4,a为12;所以答案为B选项。

34、有以卜程序(其中的strstr。函数头部格式为:char*strstr(char*pl,char*p2)确

定p2字符串是否在pl中出现,并返回p2第一次出现的字符串首地址)include

<stdio.h>#include<s(ring.h>char*a=nyou";char*b="WelcomeyoutoBeijing!";

main(){char*p;p=strstr(b,a)+strlen(a)+1;printf("%s\n",p);)程序的运行结果是

A、toBeijing!

B、youtoBeijing!

C、WelcomeyoutoBeijing!

D、Beijing!

标准答案:A

知识点解析:调用strstr函数,可知a指向的字符串在b指向的字符串中第一次出

现的位置,并将此地址赋给指针p。strlcn()函数是求字符串的实际长度(不包含结

束标志),并且作为函数值返回。sirsir函数返回的地址下标值为9,加上a长度

3,再加1,此时p指向的地址下标值为13,输出“0Beijing!”,A选项正确。

35、下列选项中不属于软件生命周期开发阶段任务的是()。

A、软件测试

B、概要设计

C、软件维护

D、详细设计

标准答案:C

知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其

中开发阶段包括概要设计、详细设计、实现和测试。

36、有如下程序#include<stdio.h>main(){if(W=0)putchar(,X,);if('O'==0)

putchar(,Y,);if('a'>E)putchar('Z');printf(n\n");}程序运行后的输出结果是

A、X

B、XYZ

C、YZ

D、Y

标准答案:A

知识点解析:字符所占内存为一个字节,故其ASCII码值不能超过范围0~255,其

中一些特殊字符'(T的ASCH码为O字符‘O'ASCII码值为48,字符/ASCH码值

为97,字符,b,ASCII码值为98。putchar函数是向标准输出设备上输出一个字符。

程序执行过程为:判断'\(T==0成立,输出X,判断U==0不成立,不输出,判

断不成立,不输出。A选项正确。

37、若有定义:inta=0,b=0,c=0,d=0;,有C语言表达式(a++&&b++):c++:d++,

以下关于其执行顺序的叙述正确是

A、先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)的值为0,因此

执行d++

B、先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可

确定(a++&&b++)值为0,因此执行d++

C、先执行a++,表确定(a++&&b++)值为1,因此执行C++达式a++的值为1;再

执行b++,表达式b++的值为1,由此可

D、先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可

确定(a++&&b++)值为1,因此执行C++

标准答案:A

知识点解析:表达式1:表达式2:表达式3,若表达式1为真,则执行表达式2,

否则执行表达式3。逻辑与运算符遵循“短路求值”黄略,即只有在仅靠左操作数的

值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式(a++&&b++)中,

左操作数a++的值为0,已经可以确定整个逻辑表达式的结果为0,因此右操作数

b++不再求解,直接执行表达式3,即d++,答案为A选项

38、以下选项中与(!a=O)的逻辑值不等价的表达式是

A、(a==!0)

B、a

C、(a>0||a<0)

D、(a!=0)

标准答案:A

知识点解析:!与厂运算,!的优先级高于==,即等价于(!a)==0.如果aO,则表之式

为真,否则表达式为假,因此可以验证选项,只有选项A不符合。故答案为A选

项。

39、以下数组定义中错误的是()。

A>intx[2][3]={1,2,3,45,6);

B、intx[[D]={0};

C.intx[][3]={{1,2,3),{4,5,6));

D>intx[2][3]={{!,2},{3,4},{5,6});

标准答案:D

知识点解析:D)选项中x[2]⑶定义的是一个两行三列的二维数组,而在给数蛆元

素赋值时却赋成了三行,所以错误。

40、以下选项中叙述正确的是()。

A、函数体必须由{开始

B、C程序必须由main语句开始

C、C程序中的注释可以嵌套

D、C程序中的注释必须在一行里完成

标准答案:A

知识点解析♦:函数体是函数首部下面的花括号内的部分,所以函数休必须由{开

始,A项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序

总是从main函数开始执行的,不是main语句,B项错误。C程序中允许两种注

释,以//开头的单行注释;以/*开始,以*/结束的块式注释,D项错误。函数

可以嵌套,注释不能嵌套,C项错误。

二、程序填空题(本题共I题,每题7.0分,共[分0)

41、下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依

次存放到a[0]、a[l].a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返

回。例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删

除奇数后,a所指数组中的数据为:4、2、6、8,返回值为4。请在程序的下划线

处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或

删行,也不得更改程序的结构!【试题源程序】#includc#dcfincN9intfun(int

a[],intn){inti,j;j=0;j—0•in•i++)I**********f^)und**********/

if([11==0){【2】二a[il:j++;

**********found**********/return[3];}main()(intb[N]={9,1,4,2,

3,6,5,8,7},i,n;printf("\nTheoriginaldata:\n");for(i=0,i<N,i++)

printf(n%4d",b[i]);printf("\n");n=fun(b,N);printf(n\nThenumberof

even:%d\n",n);printf("\nTheneven:\n'r);for(i=0;i<n;i++)printf("%

4d",b[i]);printf("\n");)

标准答案:[11a[i]%2[2]a[j][3]j

知识点解析:填空【1】:if语句条件表达式,判断数组元素是否为偶数,对2求

余,结果为0,则为偶数;结果为1则为奇数。填空【2】:如果该数组元素是偶

数,则将其值保存。填空【3】:最后按要求将偶数个数通过return语句返回给

main函数。

三、程序修改题(本题共[题,每题7.0分,共7分0)

42、下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串

的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,I所指字

符串的内容为“ab”,则函数返回整数3。请改正程序中的错误,使它能得出正确的

结果。注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<

stdlib.h>#inelude<conio.h>#include<stdio.h>#include<string.h>int

fun(char*s,char*t){intn;c

标准答案:(l)if(*r=*pi{r++;p++;}(2)if(*r='\0')

知识点解析:本题考查:if语句,考生需要根据题意确定if语句的判断条件;字符

串结束标识,所有的字符串都要以、0'结尾,上机考试常考知识点,考生一定要

牢记;复合赋值运算,常用于循环控制和变量的累加、累乘。从字符串s中找出

子串I的方法是:从第1个字符开始,对字符串进行遍历,若s串的当前字符等于

I串的第1个字符,两个字符串的指针自动加1,继续比较下一个字符;若比较至

字符串t的结尾,则跳出循环;若s串的字符与I串的字符不对应相同,则继续对s

串的下一个字符进行处理。

四、程序设计题(本题共[题,每题7.0分,共7分0)

43、请编写函数fun,它的功能是:求出1到1000之间能被7或11整除、但不能

同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数

的个数。注意:部分源程序在文件PR0G1.C中。请勿改动主函数main和其他

函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。include

voidfun(int*a,int*n){|main(){intaa[1000],n,k;voidNONO();fun(aa,&

n);for(k=0;k

标准答案:imi;*n=0;for(i=7;i<1000;i++)if(((i%7)==0II(i%ll)==0)&&

(i%77)!=0)a[(*n)++]=i;

知识点解析:进入fun函数,根据前面的分析:首先,、置0,设置为累计器,计

算符合条件的数的个数。然后,通过循环,判断小于1000的每一个整数是否符合

题干中的要求。其中的判断条件能否被7或者被11整除为i%7==0lli%ll==0,不

能被II和7同时整除为i%77!=0,它们之间的并关系就用&&连接,最后结果即

为(i%7==0||i%U==0)&&i%77!=0。最后,将符合条件的整数存入数组a中,同

时对*n进行自加,返回结果。

国家二级(C语言)机试模拟试卷第2

套

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

1、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d”,&a,&b,&

c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空

格)()。

A、1,2,3V回车,

B、1112113c回车,

「、1,ui】2,车>3V同车>

D、uul,2,3V回车》

标准答案:B

知识点解析:scanf函数要求除格式控制符以外的字符都要原样输入。逗号是丰格

式符,所以需要原样输入,否则就不能正确读入数据。B项前两个数据后面没有紧

跟一个逗号,格式不匹配,所以输入形式错误。

2、软件设计中模块划分应遵循的准则是()。

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、局内聚局耦合

标准答案:B

知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适

当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合

理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块

之间的耦合应尽可能的低,模块的内聚度应尽可能的高。

3、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方法

是()。

A、快速排序

B、冒泡排序

C、直接插入排序

D、堆排序

标准答案:D

知识点解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n-l)/2c

4、设有两行定义语句:intscanf;floatcase;则以下叙述正确的是()。

A、第2行语句不合法

B、两行定义语句都合法

C、第1行语句不合法

D、两行定义语句都不合法

标准答案:A

知识点解析:本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并

且尽量避免和预定义标设符相同。本题中scanf为预定义标识符,可以作为用户标

识符;case为关键字,不能作为用户标识符,故而答案选A

5、若有定义:chare;intd;,程序运行时输入:c=ld=2V回车>,能把字符1输

入给变量c、把整数2输入给变量d的输入语句是()。

A、scanf("c=%cd=%dM,&c,&d);

B、scanf(nc=%cd=%dn,&c,&d);

C、scanf("c=%dd=%d",&c,&d);

D、scanf("c=%dd=%d".&c,&d);

标准答案:A

知识点解析:在sanf()函数中格式字符串的形式必须与地址格式保持一致,所以

B、D选项不正确。C选项中c=%d是以数值格式存入c变量。故只有A选项正

确。

6、有以下程序:#include<stdio.h>main(){intx=I,y=0,a=0,b=0;

switch(x){case1:switch(y){case0:a++;break;

case1:b++;break:}case2:a++;b++;

break;case3:a++;b++;}printf("a=%d,b=%d\n",

a,b);)程序的运行结果是()o

A、a=2,b=2

B、a=2,b=l

C^a=1,b=1

D、a=l,b=0

标准答案:B

知识点解析:case常量表达式只是起语句标号作用,并不是该处进行条件判断。在

执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从比

case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内

层switch(y)时只执行了a++,此时a的值为1。然后执行外层case2语句的a+

+;b++;a为2,b为1。所以结果为B)。

7、在下列选项中,没有构成死循环的程序段是()。

A、inti=100:for(;;){i=i%10+1;if(i>10)break;}

B>while(l);

C、intk=0;do{++k;)while(k<=IO);

D、ints=12;while(s);—s;

标准答案:C

知识点解析:本题考查死循环的知识。选项A中,for循环没有任何控制语句就会

一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内,“i=i%

10+1”这个表达式的值永远不会大于10,所以永远不会跳出循环,是死循环;选项

B中,while中表达式永远是非0,不会结束循环;选项C中,当k>10时,结束

循环;选项D中,“wh加(s);”后面没有任何表达式而是直接加了一个分号,会一

直执行,形成死循环。

8、设有定义:chars[81];imi=0;,以下不能将一行(不超过80个字符)带有空格

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

A、gets(s);

B、while((s[i-H-]=getehar())!=,\n,);s[i]=,\0*;

C>seanf(M%s",s);

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

标准答案:C

知识点解析:字符串的输入不能使用*江而应该使用ge枳⑸.

9、以下叙述错误的是

A、C语言区分大小写

B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需

要随时修改

C、整数和实数都能用C语言准确无误地表示出来

D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示

标准答案:C

知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和

Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单

元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范

围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进

制、八进制和十六进制表示。

10、数据库系统的三级模式不包括()。

A、概念模式

B、内模式

C、外模式

D、数据模式

标准答案:D

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D

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

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)选项中取模运算符%的左右两个操作数均应为整数,所以

B)、D)错误。C)选项中不能将x+y的值赋给表达式y*5,所以C)错误。

12、数据结构中,与所性用的计算机无关的是数据的()。

A,存储结构

B、物理结构

C、逻辑结构

D、线性结构

标准答案:C

知识点解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机

无关。

13、以下程序:#includevoidfun(intx){if(x/2>l)fun(x/2);printf("%du»

x);}main()(fun(7);printf("\n");}程序运行后的结果是()。

A、137

B、731

C、73

D、37

标准答案:D

知识点解析:函数fun是递归函数,递归终止条件是x小于等于3,当大于3时递

归调用fun(x/2)o第一次循环x/2=3,调用fun(3),fun(3),x/2=1,跳出if循

环,执行输出x=3,然后回到第一次循环,执行if循环的语句,输出x=7。

14、以下数据结构中,属于非线性数据结构的是(),

A、栈

B、线性表

C、队列

D、二叉树

标准答案:D

知识点解析:二叉树属于非线性结构。栈是一种特殊的线性表,这种线性表只能在

固定的一端进行插入和删除操作;队列可看作是插入在一端进行,删除在另一端进

行的线性表。

15、在三级模式之间引入两层映像,其主要功能之一是()。

A、使数据与程序具有较高的独立性

B、使系统具有较高的通道能力

C、保持数据与程序的一致性

D、提高存储空间的利用率

标准答案:A

知识点露析•:数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数

据库中数据的较高的逻辑独立性和物理独立性。

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

A、getc()

B、gets()

C、getchar()

D,SCallfQ

标准答案:B

知识点解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所

以用scanf()函数不能输入空格;getchar。函数用于输入字符,其调用形式为:

ch=getehar(),getchar。函数从终端读入一个字符作为函数值,把读入的字符赋给变

ftcho在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Ena键

时,读入才开始执行。gets。函数的调用形式为:gets(stradr),其中stradr是存放

输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变

量。gels函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为

I匕getc。函数的调用形式为:ch=getc(pf)其中pf是文件指针c函数的功能是从pf

指定的文件中读入一个字符,并把它作为函数值返回。

17、计算机能直接执行的程序是()。

A、源程序

B、目标程序

C、汇编程序

D、可执行程序

标准答案:D

知识点解析:计算机能直接执行的程序是二进制的可执行程序,扩展名为.exeo

所以选择D选项。

设有定义:inlx=2;,以下表达式中,值不为6的是()。

A^2*x,x+=2

B、x++,2*x

C、x*=(l+x)

D^x*=x+l

标准答案:A

知识点解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2

的值,即x=x+2,即4,整个逗号表达式为第二个表达式的值4,所以选择A。B

选项中,首先计算逗号表达式中第一表达式x++,比时x为3,再执行第二表达式

2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表

示为x=x*(1+x)=2*(1+2)=6oD选项中的表达式可以表示为x=x*(x+l)=2*3=6o

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

A、调用函数时,函数名必须与被调用的函数名完全一致

B、函数调用时,不必区分函数名称的大小写

C、函数名允许用数字开头

D、在函数体中只能出现一次return语句

标准答案:A

知识点解析:调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参

数列表一致才能保证调用的正确性,A)正确。C语言对大小写敏感,选项B)

错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下划线

组成并且第一个字符不能为数字,选项C)错。一个函数每次只能使用一个return

语句,但是该函数体中可以有多个返回点,也就是有多条relurn语句,每次只从其

中一点返回,选项D)错。答案选A)。

20、关系的实体完整性要求关系中不能为空的属性是()。

A、主键属性

B、外键属性

C、全部属性

D、候选键属性

标准答案:A

知识点解析:关系模型中可以有3类完整性约束:实体完整性约束、参照完整性约

束和用户定义的完整性约束。实体完整性约束是指若属性M是关系的主键,则属

性M中的属性值不能为空值。故本题答案为A选项。

21、有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母

#include<stdio.h>#include<ctype.h>voidfun(char*p){inti=0;while(p[i])

{if(p[i]==,"&&islower(p[i-1]))p[i-1]=p[i-1]-,a,+,A\i++;}}main(){char

sl[100]="abcdEFG!";fun(sl);printf("%s\n”,sl);}程序运行后的输出结果是

A、abcdEFg!

B、AbCdEFg!

C、abcdEFG!

D、aBcDEFG!

标准答案:D

知识点解析:调用fun函数后,实参数组名si传给形参指针p,p也指向数组

fun函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个

字符是小写字母的话,就把前一个字符转换为大写。程序中语句p[i-l]=p[i-

1I-H+W;即意思是将中的字符转换为大写。因此D选项正

确。

22、下列选项中属于面向对象设计方法主要特征的是()。

A、继承

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态

性,所以选择A。

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

A、编码设计

B、测试阶段

C,运行阶段

D、物理设计

标准答案:D

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

分解成目标独立的若干阶段,它们是:需求分析阶段、概念设计阶段、逻辑设计阶

段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库

设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主

线。

24、程序调试的任务是()。

A、设计测试用例

B、验证程序的正确性

C、发现程序中的错误

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

标准答案:D

知识点解析:程序调试的任务是诊断和改正程序中的错误。

25、若有定义:floatx=l.5;inta=Lb=3,c=2;则正确的switch语句是()。

A、switch(a+b){case1:printf("*\nM);case2+1:printf("**\n**);)

B、switch((int)x);{case1:printf("+\n");case2:printf("**\n");}

C>switch(x){case1.0:prinff(H*\n");case2.0:printf("**\nn);}

D、switch(a+b){case1:printf("*\nM);casec:prinff(H**\n");)

标准答案:A

知识点解析:B选项中swilch((im)x);语句不应该有最后的分号。switch(exprl),中

的exprl不能用浮点类型或long类型,也不能为一个字符串,所以C错误。case后

面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。

26、若有以下定义,则对a数组元素地址的正确引用是()。inta|5],*p=a;

A、p+5

B、*a+l

C^&a+l

D、&a[0]

标准答案:D

知识点解析:本题考查如何引用数组元素的地址。选项A)中,p+5引用的是a[5]的

地址,而数组a只有5个元素,即a[0]、a[l]>a⑵、a[3]、a[4],所以引用错误;

选项B)中,*a+1指的是将数组a的第一个元素加1;选项C)中,这种引用方式错

误;选项D)中,&a[0]引用的是数组的首地址。

27、以下选项中正确的定义语句是

A、double,a,b;

B、doublea=b=7;

C,doublea;b;

D、doublea=7,b=7;

标准答案:D

知识点解析•:A选项中变量类型符double后面不能有逗号,B选项中变量b不能先

使用再定义,应该写成选项D中的格式,C选项中变量a后面应该是逗号而不是分

号。

28、以下关于return语句的叙述中正确的是()。

A、一个自定义函数中必须有一条return语句

B、一个自定义函数中可以根据不同情况设置多条return语句

C、定义成void类型的函数中可以有带返回值的return语句

D、没有return语句的自定义函数在执行结束时不能返回到调用处

标准答案:B

知识点解析•:在函数中允许有多个return语句,但每次调用只能有一个return语句

被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取

得返回值,也不允许使用reiurn语句,C选项描述错误。没有return语句的函数在

执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B

选琐正确。

29、软件生命周期是指()。

A、软件产品从提出、实现、使用维护到停止使用退役的过程

B、软件从需求分析、设计、实现到测试完成的过程

C、软件的开发过程

D、软件的运行维护过程

标准答案:A

知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称

为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用

为止的整个时期都属于软件生命周期。

30、有以下程序:#include#includeintfun(intn){int*P;p

ram=(int*)malloe(sizeof(int));*p=n;return*p;}main()[inta;a=fun(10);

printf("%d\nH,a+fun(IO));}程序的运行结果是0。

A、0

B、10

C、20

D、出错

标准答案:C

知识点解析:malloc(siz3of(inl))的作用是开辟一个长度为sizeof(inl)的存储空间,并

通过强制类型转换(int*)将此存储空间的地址赋给一个整型的指针变量p,然后执行

语句*p=n,使得*p的值为10,并通过return返回此值,即a的值为10。最后在主

函数中通过prin【f()函数输出a+fun(10)=10+10=20o

31,有以下程序:#include<stdio.h>main(){intx=l,y=0:if(!x)y++:else

if(x==O)if(x)y+=2;elsey+=3;printf("%d\n",yi;}施序运行后的输出结果是

()o

A、1

B、2

C、0

D、3

标准答案:C

知识点解析:因为x=l,!x为0,x==0为false,所以if和ekeif的判断条件都不满

足,程序运行时只执行x.y的初始化语句和printf。函数,打印出y的值为(),故

答案为C。

32、有以下程序includemain(){printfC'%d\n",NULL);)程序运行后的输出结果

是()。

A、0

B、变量无定义,输出不确定

C、-1

D、1

标准答案:A

知识点解析:暂无解析

33、有以下程序:#includevoidfun(inta){if(a>l)fun(a-1);a);}

main。{iniq=5;fun(q);prinff("\rf)}执行后的输出结果是()。

A、12345

B、54321

C、012345

D、543210

标准答案:A

知识点解析:本题考查潴归函数。函数fun(a)在a>l时,递归调用。fun(a—1),否

则输出a的值,由于prinff()函数在递归调用之后,所以直到递归函数运行完后再

执行prinlf()函数,所以fim(5)中首先递归调用5n(4),再递归调用fun(3)、fun(2),

fun(l),最后当a=l时,输出1,接着输出2、3、4、5,所以输出结果为:1234

5,答案为A。

34、有以下程序段:#includeinta,b,c;a=10;b=50;c=30;if(a>b)a=b,

b=c;c=a;prinff("a=%db=%dc=%d\n",a,b,c);程序的输出结果是()。

A、a=10b=50c=10

B、a=10b=50c=30

C、a=10b=30c=10

D、a=50b=30e=50

标准答案:A

知识点解析•:形式为“if(表达式)语句”的if作用到语句的第一个分号结束,所以本

题中if语句的作用范围为a=b,b=c;o由于if条件为false,所以这两条语句不执

行,执行c:a语句,所以程序最终输出结果:10,50,10,答案为A。

35、以下四个程序中,完全正确的是()。

A、#includemain();{/*/programmingpfintffprogramming!\n'');}

B、#includemain(){/*programming*/pflntf{,,programming!\n'))

C>#includemain(){/*/*programming*/*/pf^ntf(,,programming!\n>,);}

D、includemain。{/"programming*/programming!\n'');}

标准答案:B

知识点解析:C语言的注释是/Content*/.或//用来注释一行.因此A和C

错,选项D中的include前面没有#,所以语法错。

36、数据库的故障恢复一般是由()来执行恢复。

A、电脑用户

B、数据库恢复机制

C、数据库管理员

D、系统普通用户

标准答案:c

知识点。析:数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负

责执行故障恢复。

RST

ABCABCABC

a24a2,4c36

b41b41

c36

则由关系

R和S得到关系T的操作是()。

A、自然连接

B、差

C、交

D、并

标准答案:B

知识点解析:T中数据是R中有而S中没有的数据,因此,是R与S的差运算结

果。

38、有以下程序#includc<stdio.h>main(){FILE吁p;inti,a[6]={1,2,3,4,5,6),k;fp

=fopen("data.dat'\"w+b");fwrite(&a|O],sizeof(int),1,fp);for(i=l;i<6;i++)

{fseek(fp,OL,0);fread(&k,sizeof(int),1,fp);fseek(fp,0L,0);a|i]+=k;fwrite(&a[i],

sizeof(int),1,fp);)rewind(fp);fread(&k,sizeof(int),1,fp);fclose(fp);printf("%d\n",

k);)程序的运行结果是

A、21

B、6

C>123456

D、11

标准答案:A

知识点解析•:程序执行过程为:以读/写方式打开一个新的二进制文件data.dat,从

地址为a的数据块开始,一次输出一个整型字节的数据,只输出一次,将1写入文

件中;执行for循环,将文件指针移到文件开头,将文件第一个数值读出赋给k,

再将指针移动到开头,向文件内输入a[i]+k=3。for循环实现将a数组中元素累

加,结果21存放在文件中。调用rewind将文件指针移动到开头,调用「read函数

从文件中读出一个整型数据赋给k=21,调用fclose函数关闭文件,打

温馨提示

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

评论

0/150

提交评论