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

付费下载

下载本文档

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

文档简介

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

卷25(共9套)

(共270题)

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

卷第1套

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

1、下列描述中不属于软件特点的是()。

A、软件是一种逻辑实体,具有抽象性

B、软件在使用中不存在磨损、老化问题

C、软件复杂性高

D、软件使用不涉及知识产权

标准答案:D

知识点解析:软件不像硬件一样具有实物的特性,而是一种逻辑实体,具有抽象

性;开发复杂性高,成本昂贵;在运行、使用期间不存在磨损、老化问题。故A、

B和C选项正确。由于软件是一种知识产品,受知识产权法的保护,所以D选项

不正确。

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

A、C程序经过编译、铤接步骤之后才能形成一个真正可执行的二进制机器指令文

B、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D、C语言源程序经编译后生成后缀为.obj的目标程序

标准答案:B

知识点解析:C语言程序编译时将每条可执行语句转换为二进制的机器指令,但非

执行语句(如注释语句)不被编译。所以选项B错误。

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

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

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

B>scan["c=%cd=%d",&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选项正

确。

4、有以下程序:#include<stdio.h>voidmain(){chara,b,c,d;scanR"%

c%c”,&a,&b);c=getchar();d=gctchar();pnntf("%c%c%c%C\n”,a,b,

c,d);)当执行程序时,按下列方式输入数据(从第一列开始,VCR>代表回车,

注意:回车是一个字符):12<CR>34VCR>则输出结果是()。

A、12<CR>34

B、12

C、12<CR>3

D、123<CR>4

标准答案:C

知识点解析:scanf()函数的一般调用形式为:scanf(格式控制,输入地址列表)°其

中,格式控制是用双引号括起来的字符串,包括格式字符和普通字符,格式是是由

“%”和格式字符组成。gelchar。函数的功能是从标准输入设备上读入一个字符。根

据程序中的格式控制可知,接收输入时分别把1赋给了a,2赋给了b,然后

getchar。函数提取一个换行符赋给c,再提取一个字符3赋给d。所以程序的输出

结果为:12<CR>3、

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

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

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

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

读到第1个数据

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

标准答案:A

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

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

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

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

fseek。函数进行重新定位就能够读到第1个数据;D选项错误,C语言中的文件可

以进行随机读写。

6、有以下程序:#include<stdio.h>main(){inta[]={2,3,5,4},i;

for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;

case1:a[i]------;[break:ease1:a[i]=0:}for(i=0;i<4;i++)

a|i]);printf(〃\n");}程序运行后的输出结果是()。

A、3344

B、2050

C、3040

D、0304

标准答案:C

知识点解析:main函数的函数体是一个for循环语句,for循环中包含一个switch

语句,如果判断条件为0,则进入第二个swilch语句,如果判断语句为1,则执行

“a{i]=0",最后将数组按顺序输出。所以程序功能是将数组的偶数项设为0,奇数

项如果为奇数则减1,为偶数就加1,最后得到结果。

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

A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化

B、循环队列中的元素个数随队头指针的变化而动态变化

C、循环队列中的元素个数随队尾指针的变化而动态变化

D、以上说法都不对

标准答案:A

知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指

针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直

到队尾指制rear指向的位置之间所有的元素均为队列中的兀素。所以循环队列中

的元素个数随队头指针和队尾指针的变化而变化。A选项正确。

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

共有的()。

A、记录

B、行

C、属性

D、元组

标准答案:C

知识点解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间

有公共域;②通过公共域的等值进行连接,故C选项正确。

9^若有说明:typedefstruct{inta;charc;)w;则以下叙述正确的是()。

A、编译后系统为w分配5个字节

B、编译后系统为w分配6个字节

C、编译后系统为w分配58个字节

D、编译后系统不为w分配存储空间

标准答案:D

知识点解析:w是一个自定义类型,而不是变量,放编译后系统不为w分配存储

空间。当使用w定义变量时才会为其定义的变量分配存储空间。

10、有以下程序:#include<stdio.h>#include<string.h>typedefstruct{char

name[9];charsex;floatscore[2]:)STU:voidf(STU*a)(strcpy(a—>

C、低内聚、高耦合

D、高内聚、高耦合

标准答案:B

知识点解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间

的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。

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

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

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

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

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

标准答案:C

知识点解析:A选项中,转义字符是以反斜线开头,后跟1个或几个字符;B

选项中,字符常量在内存中占1个字节;D选项中,字符常量可以进行关系运算,

不能参与数值运算。因此C选项正确。

16>有以下程序:#include<stdio.h>main(){intk=—17;printf("%d,%o,%

x\n〃,k,1—k,1—k);}程序的运行结果是()。

A、—17,22,12

B、—17,12,22

C、—17,一22,—12

D、17,22,12

标准答案:A

知识点解析:整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法

和十六进制数表示法。十进制整常量没有前缀,输出格式控制符为%d;八进制整

常量以0作为前缀,输出格式控制符为%0;十六进制整常量以0X或Ox作为前

缀,输出格式控制符为%x。1—k=18,整型常量18用八进制表示为22,十六进制

表示为12.故A选项正确

17、有以下程序:#include<stdio.h>main(){charc;c=getchar();

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

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

A、abcdefg

B、bcdefgh

C^abcdefg#

D、bcdefgh#

标准答案:A

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

putchar(c++)表示先输出当前c值,再对c值+1。当输入abcdef##时,在while语句

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

18、若用数组名作为函数调用时的实参,则实际上传递给形参的是()。

A、数组的第一个元素值

B、数组元素的个数

C、数组中全部元素的值

D、数组首地址

标准答案:D

知识点解析:形参是在函数的定义中,放在括号里声明的变量;实参是调用函数

时,传入的参数。数组在进行形参实参结合的,就是传递数组的首地址,并不是把

整个数组复制一份放入函数里运行。故D选项正确。

19、如果定义tloata"。],x;,则以下叙述中正确的是()。

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

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

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

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

标准答案:A

知识点解析:数组名表示该数组的首地址,是一个地址常量,不能对它重新赋值,

选项A正确。但是可以把数组名看作一个指针常量,则表达式a+1表示的是数组

中第二个元素的地址,选项B错误。表达式a[l]、*(a+l)、都指的是数组a

中笫二个元素的值,选顼c错误。口运算符的优先级高于*、&,取值中和取址&运

算符优先级相等,是同一优先级的运算符,运算次序由结合方向所决定,在

运算符优先级和结合性上没有问题,并且取值*和取址&运算符互逆,*&a[l]和

等价,相当于求得数组a第二个元素的值,选项D错误。故正确答案为A。

20、设有如下语句:typedefslructDate{iniyear;intmonth;intday;JDATE;

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

A、DATE是用户说明的新结构体类型名

B、structDate是用户定义的结构体类型

C、DATE是用户定义的结构体变量

D、struct是结构体类型的关键字

标准答案:C

知识点解析:该定义语句把结构体structDate命名为一个新的类型名“DATE”,

DATE相当于“structDate",是结构体类型名,选项C描述错误,答案选C。

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

根结点在第1层)()。

A、3

B、4

C、6

D、7

标准答案:D

知识点解析:根据二叉树的基本性质:在任意一棵二叉树中,度为0的叶子结点总

比度为2的结点多一个,因此本题中度为2的结点为1—1=0个,据此可以知道本

题中的二叉树的每一个结点都有一个分支,所以共有7个结点、共7层,即深度为

7,选择D。

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

A、C程序可以由一个或多个函数组成

B、C程序可以由多个程序文件组成

C、一个C语言程序只能实现一种算法

D、一个C函数可以单独作为一个C程序文件存在

标准答案:C

知识点解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函

数,所以一个C语言程序可以实现多种算法,答案选C。

23、有以下程序:#include<stdio.h>main(){charcl,c2,c3,c4,c5,c6:

scanf("%c%c%c%c",&cl,&c2,&c3,&c4);c5=gctchar();c6=gctchar();

putchar(cl);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从缝盘

输入(从第1列开始):123V回车〉45678V回车〉则输出结果是()。

A、1256

B、1245

C、1278

D、1267

标准答案:B

知识点解析:对于字符型数据的输入而言,从键盘上输入的字符,不管是否可以输

出,都会被读入字符型变量中。因此,cl=l,c2=2,c3=3,c4=〈回车〉,c5=4,

c6=5,输出cl,c2,c5,c6的结果为1245,答案选B。

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

A、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

B、一条语句只能定义一个数组

C、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单

D、在引用数组元素时,下标表达式可以使用浮点数

标准答案:C

知识点解析:同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,

C选项正确。方括号中可以为整型变量或者常量表达式,A选项错误、在使用逗号

运算符的情况下,一条语句可以定义多个数组,B选项错误。数组元素在数组中的

下标为整型常量或者变量构成的整型表达式,不能为浮点数,D选项错误。答案选

Co

25、有以下程序:#include<stdio.h>voidfun(inta,intb){intt;t=a;a=b;

b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0),i;for(i=0;i<10;

i+=2)fun(c[i],c[i+l]);for(i=0;iV10;i++)printR"%d",c[i]);printf(w\nM);

程序的运行结果是()。

A、1234567890

B、2143658709

C、0987654321

D、0123456789

标准答案:A

知识点解析:函数fun()属于值传参,形参的变化不会影响实参,所以函数调用结

束后,数组c没有任何变化,输出结果为选项A。

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

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

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

C、#include<stdio.h>必须放在C程序的开头

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

标准答案:A

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

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

4t#include<sldio.h>”必须放在使用文件sldio.h中相关方法的语句之前,但是不

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

译等,选项D错误。答案选A。

27、栈和队列的共同点是()。

A、都是先进后出

B、都是先进先出

C、只允许在端点处插入和删除元素

D、没有共同点

标准答案:C

知识点解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插

入和删除c二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后

进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操

作,是一种“先进先出”的线性表。

28、下列测试方法中,()均属于白盒测试的方法。

A、语句覆盖法和边界值分析法

B、条件覆盖法和基本路径测试法

C、边界值分析法和代码检查法

D、等价类划分和错误推测法

标准答案:B

知识点解析:白盒测试电称结构测试或逻辑驱动测试,它是按照程序内部的结构测

试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,

检验程序中的每条通路是否都能按预定要求正确工作。白盒测试的测试方法有代码

检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测

试、符号测试、路径覆盖和程序变异。黑盒测试也称为功能测试,着眼于程序外部

结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试方

法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正

交试验设计法、功能图法等。故B选项正确。

29>表达式a+=a—=a=9的值是()。

A、0

B、—9

C、18

D、9

标准答案:A

知识点解析:赋值语句,从右向左执行,先执行a=9,再执行a—二a,a为0,再

执行a十二a,结果仍为0。

30、有以下程序:#include<stdio.h>voidfun(int*p,int*q){p=p+1;

*q二*q+1;}main(){intm=l,n=2,*r=&m;fun(r,&n);printf("%d,%d\

n",m,n);}程序运行后的输出结果是()。

A、1.3

B、2.3

C、1.4

D、1.2

标准答案:A

知识点解析:语句p=p+1:只改变指针p的地址,与p的内容无关,所以m没有

改变,而语句*q=*q+l;是改变该指针所指地址中的内容,所以n变为3,m不

变。

31、对于函数声明:voidfun(floatarray[],int*ptr);以下叙述中正确的是()。

A^函数参数array、ptr都是指针变量

B、函数声明有语法错误,参数array缺少数组大小定义

C、调用函数时,array数组中将存储从实参中复制来的元素值

D、调用函数时,array数组的元素和ptr都是按值传送

标准答案:A

知识点解析:本题考查函数声明的具体规则。

32有以卜程序:#include<stdio.h>voidfun(char*a»char*b){while(*a=

='*')a++;while(*b=*a){b++;a++;}}main(){char*s=w*****a*b****wt[80];

fiin(s,t);puts(t);}程序的运行结果是()。

A^a*b****

B、a+b

C、*****a*b

ab

标准答案:A

知识点解析:注意两个while,第一个是判断相等“==",第二个是赋值“=",第一

个循环终止的条件是指针指向的字符不为“叱,就会在遇到字符“a”时停止,第二个

循环把a指针所指的内容依次赋给了b指针指向的内容,直到字符串结束时终止。

所以结果就是字符串的后半段,选项A正确。

33、若有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,j,t;

for(i=l;i<n;i+=2)for(j=i+2;j<n;j+=2)if(a[i]>a[j]){t=a[i];a[i]=a[j];

a[j]=t;}}main(){intc[10]={10,9,8,7,6,5,4,3,2,1},i;fun(c,

10);for(i=0;i<10;R+)printfC%d,",c[i]);printf(〃\n");}则程序的输出结

果是()。

A、1,10,3,8,5,6,7,4,9,2,

B、10,9,8,7,6,5,4,3,2,1,

C、2,9,4,7,6,5,8,3,10,1,

D、10,1,8,3,6,5,4,7,2,9,

标准答案:D

知识点解析:该题首先对一维数组进行初始化,c[0]到c[9]依次赋值为10到

fun(c,10);语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由

小到大排序,最后将排好序的新的一维数组进行输出、故D选项正确。

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

A、网状结构

B、树状结构

C、属性

D、二维表

标准答案:D

知识点解析:单一的数据结构一关系,现实世界的实体以及实体间的各种联系均

用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑

结构是一张二维表.但是关系模型的这种简单的数据结构能够表达丰富的语义,可

以描述现实世界的实体以及实体间的各种关系。

35、下列各项中不属于软件设计阶段任务的是()。

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

B、数据库设计

C、软件总体设计

D、算法设计

标准答案:A

知识点解析:软件设计阶段的主要任务包括两个:一是进行软件系统的可行性分

析,确定软件系统的建没是否值得,能否建成;二是进行软件的系统分析,了解用

户的需求,定义应用功能,详细估算开发成本和开发周期。

36、若有定义和语句:inia,b;scanf("%d,%d〃,&a,&b);以下选项中的输

入数据,不能把值3赋给变量a、把值5赋给变量b的是()。

A、3,5,

B、3,5,4

C、3,5

D、3,5

标准答案:C

知识点解析:在输入3和5之间除逗号外不能有其他字符。

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

A、可以用关系运算符比较字符串的大小

B、空字符串不占用内存,其内存空间大小是。

C、两个连续的单引号是合法的字符常量

D、两个连续的双引号是合法的字符串常量

标准答案:D

知识点解析:比较两个字符串大小用函数strcmp(strl,str2),空字符串有结尾符,

所以也要占用字节,两个双引号表示地是空字符串。

38、有以下程序:#include<stdio.h>#dcfineN3voidfun(inta[][N],intb[J){int

i,j;for(i=0;i<=2;i++){intmax=a[i][0];for(j=i;j<=2;j++)if(max<a|i][j])

max=a[i][j];b[i]=max;)}main(){intx[N][N]={1,2,3,4,5,6,7,8,

9),y|N|,i;fun(x,y);for(i=0;iV=2;i++){printf("%d,",y[i|);}printff

\n");}程序运行后的输出结果是()。

A、2,4,8,

B、3,6,9,

C、3,5,7,

D、1,3,5,

标准答案:B

知识点解析:fun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大

值是3,第二行的最大值是6.第二行的最大值是9.所以答案是3.6.9.0

39>有以3程序:#include<stdio.h>voidfunc(intn){staticintnum=l;

mum=num+n;printf("%d",num);main(){func(3);func(4);printf(^\nr,);}

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

A、48

B、34

C、35

D、45

标准答案:A

知识点解析:第一次调用func函数时输出4,第二次调用func函数时num值并不

会释放,仍然是上次修改后的值4,第二次调用结果为8,所以输出结果是48。

40有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1»2,3,

4,5,6);fp=fbpen(f,d2.dat","w+");for(i=0;i<6:i++)fprintf(fp>"%d\

n”,a|il);rewind(fp);for(i=0;i<6;i++)fscanf(「p,"%d",&a|5—i]);

fclose(fp);for(i=0;i<6;i++){prinE"%d,〃,a[i]);}printff'\n");)程序运

行后的输出结果是()。

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

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

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

D、6,5,4,3,2,I,

标准答案:D

知识点解析:这是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读

出。所以输出结果为6,5,4,3,2,I,o

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

卷第2套

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

1、已知函@「@;加也(10@丘;doubled;则表达式a-b+c-d结果为()型。

A^double

B、float

C、int

D、char

标准答案:A

知识点解析:C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先

将不同类型的数据转化成同一类型再进行运算.类型转换的一般规则是:①运算

中将所有char型转换成血型,float型转换成double型:②低级类型服从高级类

型,并进行相应的转换,数据类型由低到高的顺序为:char->int・>unsigned->

long->float->double;③赋值运算中最终结果的类型,以赋值运算符左边变量的

类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。

2、运行下面程序时,从键盘输入字母A,则输出结果是()。#include<stdio.h>

main(){charch;ch=getchar();switch(ch){case'A':printf(''AAAA\n'');

casc'B':primf(''BBBB\n'');default:printf(''CCCC\n'');))

A、AAAA

B、AAAABBBB

C、AAAABBBBCCCC

D、AAAACCCC

标准答案:C

知识点解析:本题考查“switch”语句。因为“ch=A",所以第一个switch语句,执行

“case'A'"后面的语句,输出AAAA,没有遇到break语句,所以接着再执行

“case'B"'和default,分别输出BBBB和CCCCo

3、设顺序表的长度为16,对该表进行简单插入排序。在最坏情况下需要的比较次

数为()。

A、120

B、60

C、30

D、15

标准答案:A

知识点解析:简单插入排序在最坏情况下,即初始排序序列是逆序的情况下,比较

次数为n(n-l)/2,移动次数为n(n-l)/2。本题中n=16,16x(16/)次=8x15=120。

4、以下叙述中正确的是

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

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

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

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

标准答案:D

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

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

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

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

语言的标识符可分为以下3类:①关键字,不能用于为自定义标识符命名。②预

定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又

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

没有特殊规定c

5、设二叉树共有375个结点,其中度为2的结点有187个。则度为1的结点个数

A、0

B、I

C、188

D、不可能有这样的二叉树

标准答案:A

知识点解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉

树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2M个结点;深度为

k的二叉树至多有个结点;对任何一棵二叉树T,如果其终端结点数为no,度

为2的结点数为以,则no=n2+l。本题中,度为2的结点有187个,叶子结点应该

有187+1=188个,度为1的结点个数=375-187-188=0。

6、若有定义语句:chara=,\82,;则变量a

A、包含1个字符

B、说明不合法

C、包含2个字符

D、包含3个字符

标准答案:B

知识点解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用\dckT3

位八进制数代表的一个ASCII字符,也可以、xhh'2位十六进制数代表的一个

ASCII字符。选项A中的八进制表示出现字符8,非法。

7、设表的长度为n。下列查找算法中,在最坏情况下,比较次数最少的是

A、有序表的二分查找

B、顺序查找

C、寻找最大项

D、寻找最小项

标准答案:A

知识点解析:有序表的二分法查找只适用于顺序存储的有序表。二分杳找的基本方

法是:将被查元素x与线性表的中间项进行比较,若中间项的值等于x,则说明查

到;若小于中间项的值则在线性表的前半部分以相同的方法进行查找;若大于中间

项的值则在线性表的后半部分以相同的方法进行查找。在最坏情况下,二分查找需

要比较log2n次。顺序查找、寻找最大项、寻找最小项,在最坏情况下,比较次数

都是n次。所以选项A正确。

8、数据库应用系统中的核心问题是

A、数据库设计

B、数据库系统设计

C、数据库维护

D、数据库管理员培训

标准答案:A

知识点解析:在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,

性能良好的数据库,这就是数据库设计。所以数据库设计是数据库应用的核心。

9、若有“四问3北3]={1山5”,*1^","CCC");”说明语句,则与它等价的语句

是()。

A、char**s={,rAAA","BBB","CCC"):

B、char*s[3]={nAAAM,MBBB","CCC");

C、chars[][5]={"AAA","BBB","CCC'};

D、chars[][3]=("AAA","BBB","CCC”};

标准答案:D

知识点解析:二维字符数组在定义时可省略第一维的维数,根据初始化有3个字符

串,所以选项D)中数组有3行,与已知说明语句等价。

10、将E-R图转换为关系模式时,实体和联系都可以表示为

A、属性

B、键

C、关系

D、域

标准答案:C

知识点解析:将E-R图转换为关系模式时,实体和联系都可以表示为关系。

11、有以下程序:#include<stdio.h>main(){inti,t[][3]={9>8,7,6,5,4,

3,2,1);tor(i=0;i<3;i++)printf("%cl",}程序的运行结果是()。

A、357

B、753

C、369

D>751

标准答案:A

知识点解析:二维数组t[H3]实际上指t[3][3]={{9,8,7},{6,5,4),{3,2,

1}},通过循环语句for语句可以得到i=0,I⑵[0]=3、i=Li=2,

t[0]⑵=7、i=3时循环结束,即t[2][0]=3、t⑼⑵=7,因此A选项正确。

12、以下程序的输出结果是()。#includcmain(){inty=10;whilc(y-----);

printf(,,y=%d\n,\y);}

A、y=3

B、y=-1

C、y=2

D、y=l

标准答案:B

知识点解析:在while循环中每次变量y的值减1,直到其值等于0时退出循环,

因为表达式多执行一次,这时y值再减1变为一I.

13、以下关于C语言数据类型使用的叙述中错误的是

A、若要保存带有多位小数的数据,可使用双精度类型

B、若要处理如“人员信息、”等含有不同类型的相关数据,应自定义结构体类型

C、若只处理“真''和"假”两种逻辑值,应使用逻辑类型

D、整数类型表示的自然数是准确无误差的

标准答案:C

知识点解析:在C语言中没有定义逻辑类型,而是用0代表假,用非零代表真。

14、有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);

printf("%d\n",s);)intf(intn)(staticinta=l;n+=a++;returnn;}程序运行

后的输出结果是

A、9

B、8

C、7

D、10

标准答案:A

知识点解析:在主函数中第一次调用f(a)时,得到变量s的值等于4,在第二次调

用f(a)时,在子函数f中由于变量a是一个局部静态变量,所以这次其值等于2,

因而在主函数中第二次调用f(a)后,其返回值等于5,最后变量s的值等于9。

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

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

只有一位任课教师,但每位教师可以有多门课程。关系R范式最高达到

A、1NF

B、2NF

C、3NF

D、BCNF

标准答案:B

知识点解析:第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区

分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一

属性列被称为主关键字或主键、主码。第二范式(2NF)要求实体的属性完全依赖于

主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。如果存在,

那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原

实体之间是〜对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例

的唯一标识。本题R关系模式中,课程号有不同课程名,每位老师又可以往教多

门课程,因此符含第二范式。

16、读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中

buffer代表的是()o

A、一个内存块的字节数

R、一个整型变量,代表待读取的数据的字节数

C、一个文件指针,指向待读取的文件

D、一个内存块的首地址,代表读人数据存放的地址

标准答案:D

知识点解析:fread(void*buffer»sizetsize,sizetcount,FILE"stream)的功能是从

一个文件流中读数据,读取counl个元素,每个元素size字节,如果调用成功,返

回count。buffer-用于接收数据的内存地址,大小至少是size*count字节;size是单

个元素的大小,单位是字节;count是元素的个数,每个元素是size字节;slream

是输入流。

17、若有定义和语句:inta,b;scanf("%d,%d,",&a,&b):以下选项中的

输入数据,不能把值3赋给变量a、5赋给变量b的是

A、3,5

B、3,5,

C、3,5

D、3,5,4

标准答案:C

知识点解析:在格式控制字符串中插入其他字符。则在输入的时候应该据实加入到

输入流中,不能随意加入空格等。否则无法得到正确的输入结果。

18、有以下程序,程序运行后的输出结果是#definePT3.5;#define

S(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}

A、31.5

B、7.5

C、程序有错无输出结果

D、14.0

标准答案:c

知识点解析:本题考查宏定义。预处理语句后面不能加分号,因此程序有错。如果

没力H分号的话S(a+b)=PT*a+b*a+b=3.5*l+2*l+2=7.5。

19、设有定义:struct{charmark[12];intnuml;doublenum2:}tl,t2;若变量均

已正确赋初值,则以下语句中错误的是

A、l2.numl=tl.numl:

B、t2.mark=t1.mark;

C、tl=t2;

D、l2.num2=tl.num2;

标准答案:B

知识点解析:这个题目主要涉及到结构体的定义与赋值操作。根据题意结构体变量

11,12的成员变量mark是字符数组,对于字符数组之间的赋值操作应该使用循环

语句对每个字符进行赋值,而选项A)是用数组名实现字符数组之间的赋值操作,

是错误的。

20、若有以下程序段im「二8;prinlf("%d\n",r>>l);输出结果是

A、8

B、4

C、16

D、2

标准答案:B

知识点解析:定义了整型变量r,其值等于8,在输出语句中,把变量r的值向右

移动一位,在C语言中把变量向右移动一位,相当于其值除以2,所以在题中把变

量「的值8除2,得到其值等于4。

21、有以下程序main(){inta=3;dO{printf("%d,",a-=2);}while(!(-a));printf(M

\n"):}程序运行后的输出结果是

A、1,

B、1,-2,

C、3,0,

D、1,0

标准答案:B

知识点解析:循环体执行两次。首先输出a=l,然后判断表达式!(--a),a为0,循

环条件表达式值为1,执行第二次循环体,输出a=2。判断循环条件表达式值为

0,循环退出。

22、有以下程序includemain。{FILE*fp;inti,a[6]={l,2,3,4,5,6);

fp=fopen("d2.dal“,“w+”);for(i=0;i<6;i++)fprintf(fp,"%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("%d',alij);}

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

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

C、4,5,6,L2,3,

D、1,2,3,3,2,1,

标准答案:B

知识点解析:在程序中定义了一个整型数组a[6],并对它赋初值,并以写入的方式

打开了文件d2.date然后利用一个for循环把数组a中的元素数据写入文件

d2.dat中,调用函数rewind把将文件内部的位置指针重新指向一个文件的开头,

再利用for循环语句把文件中的数据依次写入到倒序排列的数组a中,最后输出数

组a中的数组元素。

23、以下叙述中正确的是

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

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

体,并中止循环体的执行

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

D^在while语句和do-while语句中无法使用continue语句

标准答案:A

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

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

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

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

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

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

A、12.0Xa234.5e0

B、028.5e-3-Oxf

C、.1774el.5Oabc

D、0x8A10,0003.e5

标准答案:A

知识点解析:C语言中八进制整型常量的开头是数字0,十六进制整型常量的开头

数字是Ox。C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实

型常量必须要有小数点;指数形式,以k“或“E”后跟一个整数来表示以10为底数

的嘉数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。

B)选项中028错误,八进制中没有数字8。C)选项中4M.5中e后面的指数不是整

数。D)选项中3.e5小数点后面缺少数字。

25、有以下程序#includemain(){char*s="12134";intk=0,a=0;while(s[k+l]){k++;

if(k%2==0){a=a+(s[k]-,0,+l);continue;}a=a+(s[k]-,0,);}

printf(,,k=%da=%d\n,',k,a);}程序运行后的输出结果是

A、k=5a=15

B、k=4a=12

C^k=6a=11

D、k=3a=14

标准答案:B

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

while一次,得到k=2,a为4;当k=2时,执行while一次,得到k=3,a为7;当

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

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

卷第3套

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

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

A、所谓算法就是计算方法

B、程序可以作为算法的一种描述方法

C、算法设计只需考虑得到计算结果

D、算法设计可以忽略算法的运算时间

标准答案:B

知识点解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算

方法,也不等于程序。算法设计需要考虑可行陛、确定性、有穷性与足够的情报,

不能只考虑计算结果。算法设计有穷性是指操作步骤有限且能在有限时间内完成,

如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义

的,。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一

种描述方法。

2、下列选项中,不能用作标识符的是

A、_1234

B、12

c、jnt_2_

D、2_int_

标准答案:D

知识点解析:C语言中标识符必须以字母或者下划线开始,选项D中是以数字开

始的不能作为标识符。

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

A、只能消除一个逆序

B、能消除多个逆序

C、不会产生新的逆序

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

标准答案:B

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

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

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

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

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

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

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

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

A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化

B、循环队列中的元素个数随队头指针的变化而动态变化

C、循环队列中的元素个数随队尾指针的变化而动态变化

D、以上说法都不对

标准答案:A

知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指

针front指向排头元素骰前一个位置°因此,从排头指针front指向的后一个位置直

到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中

的元素个数随队头指针和队尾指针的变化而变化。A选项正确。

5、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为

A、log2n

B、n/2

C>n

D、n+1

标准答案:c

知识点解加:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元

素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有

元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。

6、以下关于C语言数据类型的叙述中正确的是()。

A、C基本数据类型包括:分为整型、实型、浮点型、字符型四种

B、实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形

式、指数形式

C、若要处理如“人员信息,,等含有不同类型的相关数据,应自定义结构体类型

D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型

标准答案:C

知识点解析:C基本数据类型包括:分为整型、实型、枚举型、字符型四种,实型

就是浮点型,实型数据只有十进制,没有2、8、16进制表达,在C语言中没有定

义逻辑类型,而是一般用0代表假,用非零代表真。

7、设顺序表的长度为40,对该表进行冒泡排序。在最坏情况下需要的比较次数为

A、780

B、820

C、40

D、41

标准答案:A

知识点解析:冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算

法。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换

他们两个;对每一对相邻元素作同样的工作,从开始笫一对到结尾的最后一对。在

这一点,最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最

后一个:持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要

比较。冒泡排序的最坏时间复杂度为(n*(n—1))/2=780o

8、在数据库系统中,用户所见的数据模式为

A、概念模式

B、外模式

C、内模式

D、物理模式

标准答案:B

知识点解析:用户所见到的数据模式是外模式也称用户模式。它是用户的数据视

图,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它

有关的外模式,这样不我可以屏蔽大量无关信息,而且有利于数据维护。

9、以下关于return语句的叙述中正确的是

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

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

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

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

标准答案:B

知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据

不同的情况设置多条relurn语句返回函数的值。

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

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

A、20

B、30

C、10

D、40

标准答案:B

知识点解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数

组a中的元素的值不变,

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

A、x=n%2.5:

B、x+n=i;

C、x=5=4+I;

D^x=y=5;

标准答案:D

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

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

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

算是

A、并

B、自然连接

C、笛卡尔积

D、差

标准答案:A

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

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

13、若有定义typedefin产T;T则a的定义与下面哪个语句等价

A、int*a[10];

B>int(*a)[10];

C、int*a;

D、inta[10];

标准答案:A

知识点解析:typedef的主要功能是为存在的类型命名,后面的代码中可以利用该

新定义的类型名定义变量,题目中定义了整型指针类型T.而后利用T定义了整型

指针数组a,含有10个元素,选项A中定义了整型指针数组a,选项B定义了一

个指向一维数组的指针a,选项C定义指针变量,而选项D为定义整型数组最常用

的形式,数组a中可以存放10个数据元素。

14>有以下程序段intn,t=l,s=0:scanf("%d",&n);do(s=s++;t=t—2;}

while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是

A、任意正奇数

B、任意负偶数

C、任意正偶数

D、任意负奇数

标准答案:D

知识点解析:本题考查基本输入和循环。程序代码的功能是通过scanf给变量n赋

值,在do…while循环中,s变量自增,t变量每次减2,t的初值为1,循环执行执

行一次后t的值变成一1,然后是一3、一5…,直到t的值和n的值相同循环结束。

从I的值的变化可知,I是一个变化的负奇数,因此输入的n如果是负奇数,则循

环能退出,否则是死循环。

15、若有以下程序#includc#includc#includcstructstu{char*name,gender;int

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

strcpy(a.namc,nZhaou);b=a;b.gender=T;b.score=350;strcpy(,"Qian");

printf("%s,%c,%dj,,a.gender,a.score);printf("%s,%c,%d\nH,,

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

A、Zhao,m,290,Zhao,f,350

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

C^Qian,f,350,Qian,f,350

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

标准答案:D

知识点解析:本题中考查结构体中变量的引用,a结构体中name被修改为Qian,

所以本题答案为D。

16、若要定义一个具有5个元素的整型数组,以下错误的定义语句是

A>inta[5]={0);

B、intb||={0,0,0,0,0);

C>intc[2+31

D、inti=5,d[i];

标准答案:D

知识点解析:本题考查一维数组的定义,C语言中一维数组的定义方式为:类型说

明符数组名[常量表达式。选项A)正确;选项B)初始化了5个元素,因此数组

长度为5;选项C)常量表达式2+3的值为5,正确;选项D)数组长度不是常量表

达式,错误。

17、下面不属于软件测试实施步骤的是

A、集成测试

B、回归测试

C、确认测试

D、单元测试

标准答案:B

知识点解析:软件测试主要包括单元测试、集成测试、确认测试和系统测试。

18、若有定义和语句:inta,b;scanf("%d,%d,",&a,&b);以下选项中的输入数据,不

能把值3赋给变量a、5赋绐变量b的是

A、3,5

B、3,5,

C、3,5

D、3,5,4

标准答案:C

知识点解析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到

输入流中,不能随意加入空格等,否则无法得到正确的输入结果。

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

A、N—S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点。析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典

DD,判定树与判定表,所以选择B)。

20、有以卜程序#includevoidfunc(intn){staticintnum=1;num+=n;printf("%d",

num);}main(){func(3);func(4);printf("\n");}程序运行后的输出是()。

A、48

B、45

C、35

D、34

标准答案:A

知识点解析:func()有一个静态变量num,静态变量的初始化只进行一次,其值在

程序运行过程中一直存在。调用func(3)时num被初始化为I,语句"num+=n;"计

算得num值为4,输出结果为4;调用func(4)时num为上一次计算的结果4,再次

计算num=8,输出结果为8,。答案选A。

21、有以卜程序段TypedefstructNODE{ininum;structNODE*next;}OLD;以

下叙述中正确的是

A、以上的说明形式非法

B、NODE是一个结构体类型

C

温馨提示

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

评论

0/150

提交评论