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

付费下载

下载本文档

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

文档简介

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

一、公共基础选择题(本题共10题,每题7.0分,共

10分。)

1、在一棵二叉树上,第5层的结点数最多是()。

A、8

B、9

C、15

D、16

标准答案:D

知识点解析:根据二叉树的性质:二叉树第i(i>l)层上至多有个结点。得到第

5层的结点数最多是16个。

2、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为

A、63

B、64

C、6

D、7

标准答案:B

知识点解析:顺序查找是从线性表的第一个元素开始依次向后查找,如果线性表

中的笫一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查

找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线

性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。

3、下面关于完全二叉树的叙述中,错误的是_____°

A、除了最后一层外,每一层上的结点数均达到最大值

B、可能缺少若干个左右叶子结点

C、完全二叉树一般不是满二叉树

D、具有结点的完全二叉树的深度为[k)g2n]+l

标准答案:B

知识点解析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉

树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上

只缺少右边的若干子结点(叶子结点)的二叉树。

4、下列描述中正确的是o

A、程序就是软件

B、软件开发不受计算机系统的限制

C、软件既是逻辑实体,乂是物理实体

D、软件是程序、数据与相关文档的集合

标准答案:D

知识点解析•:程序是软件的一部分,软件是一种逻辑实体,它的开发、运行都依赖

计算机系统,因此出现了软件的移植问题。

5、源程序的文档不包拈()。

A、符合号名的命名要有实际意义

B、正确的文档形式

C、良好的视觉组织

D、正确的程序注释

标准答案:B

知识点解析:本题主要考查源程序的定义:①符号名应具有一定实际的含义;②

正确的程序注释;③良好的视觉组织。

6、下列实体的联系中,属于多对多联系的是()。

A、学生与课程

B、学校与校长

C、住院的病人与病床

D、职工与工资

标准答案:1

知识点解析:只有选项A符合多对多联系的条件,因为一个学生可以选修多门课

程,而一门课程又可以由多个学生来选修,所以学生与课程之间的联系是多对多联

系。

7、算法一般都可以用控制结构组合而成。

A、循环、分支、递归

B、顺序、循环、嵌套

C、循环、递归、选择

D、顺序、选择、循环

标准答案:8

知识点解析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的

执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以用

顺序、选择、循环三种基本控制结构组合而成。

8、设a=2、b=3、c=4,则表式a+b〉c&&b==c&&a||b+c&&b+c的值为。

A、5

B、8

C、0

D、1

标准答案:8

知识点解析:暂无解析

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

A、树结构

B、网结构

C、线性表

D、二维表

标准答案:8

知识点解析:在关系数帚库中,用二维表来表示实体之间联系。

10、关系代数运算是以为基础的运算。

A、关系运算

B、谓词运算

C、集合运算

D、代数运算

标准答案:4

知识点解析:关系代数运算是以关系代数作为运算对象的一组高级运算的集合。它

的基本操作是并、交、差、笛卡尔积,另外还包括垂直分割(投影)、水平分割(选

择)、关系的结合(连接)等。

二、选择题(1分)(本题共〃题,每题1.0分,共〃

分。)

II、卜列表达式中,可以正确表示烂0或X村的关系是()。

A、(x>=l)10(x<=0)

x>lIIx-0

C、x>=lORx<=0

D、X>=l&&x<=0

标准答案:A

知识点解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或

的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是71”。

12>有以下程序#include#inckideStructA{inta;charb[10];doublec:):structA

f(structAt);main(){structAa={1001,uZhangDaM,1098.0);a=f(a);printf("%

d,%s,%6.1f\n'\a.a,a.b,a.C;}structAf(StructAt){t.a=1002;

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

()o

A、1001,ZhangDa,1098.0

1002,ZhangDa,1220.0

C、1001,WangPeng,1098.0

D、1002,WangPeng,1220.0

标准答案:D

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

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

回在屏幕上输出。

13>E!^Hchara;intb;floatc;doubled;则表达式a-b+c-d结果为()型。

A、double

B、float

C、int

D、char

标准答案:A

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

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

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

型,并进行相应的转换,数据类型由低到高的顺序为:

char->int->unsigned->long->float->double;③赋值运算中最终结果的类型,以赋值

运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,

并进行相应转换。

14、下面关于数据库三级模式结构的叙述中,正确的是()。

A、内模式可以有多个,外模式和模式只有一个

B、外模式可以有多个,内模式和模式只有一个

C、内模式只有一个,模式和外模式可以有多个

D、模式只有一个,外模式和内模式可以有多个

标准答案:B

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

个数据库可以有多个外模式.但只有一个模式和一个内模式c

15、若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果

是#includemain(){chare;intv0=1,v1=0,v2=0;do{switch(c=getchar())

{case'a':case'A':case'e':case'E':case'i':caseT:case'o':case'O':

case'u':case'U':vl+=1;default:v0+=l;v2+=l;}}while(c!=,\n,);

printf("vO=%d,v1=%d,v2=%d\n",v0,vl,v2);)

A、v0=7,vl=4,v2=7

B、v0=8,vl=4,v2=8

C、vO=ll,vl=4,v2=H

D、vO-13,vl-4,v2-12

标准答案:D

知识点解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白

switch语句的语法格式:switch语句的语法格式为:switch(表达式){case常量表达

式1:语句组1;case常量表达式2:语句组2;case常量表达式n:语句组n;default:语句

组n+1;)另外,以下几点关于switch语句的重点:①系统在执行时计算开关表达式

的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配

的标号(本例中匹配的是case③找到匹配后执行后面相应的语句表,顺序

往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语

句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。一般而言,

在多分支结构中总会出现“意外”的情况,这时均可归入default程序段,作统一的处

理。default标号是可选性的,不必每次都有,视需要用定。swiich语句中还可以包含

switch语句,形成switch的嵌套。

16、以下定义语句中正确的是

A、chara='A'b='B';

B、floata=b=10.0;

C>inta=10,*b=&a;

D、float*a,b=&a;

标准答案:4

知识点解析:选项A中定义两个变量a和b,并赋初值,C语言中可以同时定义多

个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项

A不正确:选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确

的,故选项B不正确,选项D定义一个指针,然后定义了一个变量并让这个变量

的初值为该指针变量,显然这这时的指针变量还没初始化就被赋值给变量,是不对

的,故选项D不正确,所以,4个选项中选项C符合题意。

17、若有以下定义和语句:inta[]={1,2,3,4,5,6,7,8,9,10),*p=a;则值为3的表达式

是O

A、p+=2,*(p++)

B、P+=2,*++p

C、P+=3,*p++

D、P+=2,++*p

标准答案:1

知识点解析:引用一个数组元素,可以用:(1)下标法,如a国形式:(2)指针法,如

*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a⑵。B、C的内容为

a[3],D将a[2]前自加,结果为4。

18、有以下程序:main(){inti;for(i=0;i<3;i++)switch(i){case0:prinft("%d'\i);

Case2:prinft("%d",i);default:prinft("%d",i);))程序运行后的输出结果是()。

A、22ili

B、21021

C、122

D、12

标准答案:4

知识点解析:程序中for循环了三次,第一次i=O,执行switch语句中case。:分

支,直到遇到default语句,退出switch,这里共执行了3个输出语句分别输出0、

0、0,第二次循环i=l,swiich语句中没有匹配的分支,故只执行default语句瑜出

1,退出switch语句;第三次循环i=2,从switch语句中的case2:开始执行,共执

行了两个输出语句输出2、2。最后输出的结果为0)0122。所以,4个选项中选项

C符合题意。

19、下面程序的执行结果是_____omain(){charstr[]="quert?",*p=str;

while(putchar(*p-H-)!=,?!);!

A、quert

B、Rvfsu

C、quert?

D、rvfsu?

标准答案:4

知识点解析:*p++是先取*p的值,然后指针变量p指向下一个字符,putchar是先

执行(输出)再判断,所以"?”是可以显示的。

20、八进制数253.74转换成二进制数是()

A、10101011.1111

B、10111011.0101

C、11001011.1001

D、10101111.1011

标准答案:1

知识点解析:暂无解析

21、有以下程序程nchideintfun(){staticintx=l:X*=2:returnX:)main()(int

i,s=l:for(i=l;i<=3»i++)s*=fun();printf("%d\n”,s);}程序运行后的输出

结果是

A、0

B、10

C、30

D、64

标准答案:B

知识点解析:fun函数中的变量x为静态局部变量,它在内存的静态存储区中占据

着永久性的存储单元.即使退出fun函数也不释放x的存储单元,仍保留其原来的

值,函数共调用了3次fun函数,第一次调用fun函数后,x=2,s=2;第二次调用

fun函数后,x=Ls=8:第三次调用fun函数后.x=8,s=64o故程序运行后输出结

果为64。

三、选择题(2分)(本题共20题,每题7.0分,共20

分。)

22、以下程序中函数seiup的功能是返回形参指针si和s2所指字符串中较小字符

串的首地址:#include<stdio.h>#include<string.h>char*scmp(char*si,char

*s2){if(strcmp(sl,s2)<0)rcturn(sl);elsercturn(s2);}main(){inti;charstring[20],

str[3][20];fbr(i=O;i<3;i++)gets(str[i]);strcpy(string,scmp(str[O],str[l]));strcpy(slring,

scmp(string,str[2]));printfC,%s\n",string);)若运行时依次输入:abcd^abba和abc3

个字符串,则输出结果为。

A、abed

abba

C、abc

D、abca

标准答案:B

知识点解析:函数semp的功能是比较两个符号串的大小,返回值较小的那个符号

串。str⑼中存放“abed”、中存放“abba”、str⑵中存放“abc”,执行完语句

strcpy(string,scmp(sty[O],sir[l]));后string中存放"abba",执行完语句

strepy(string,scmp(string,str|2|));后string中存放"abba"。

23、对下述程序的判断中,正确的是()。#include<stdio.h>voidmain(){char

*P,s[256];p=s;while(strcmp(s,Mtheend")){printf("Inputthestring:");gets(s);while(*P)

putchar(*p++);))

A、此程序循环接收字符串并输出,直到接收到字符串“theend”为止

B、此程序循环接收字符串,接收到字符串“theend”则输出,否则程序终止

C、此程序循环接收字符串并输出,直到接收字符串“theend”为止,但因为代码有

错误,程序不能正常工作

D、此程序循环接收字符串并将其连接在一起,直到接收字符串“theend”为止,输

出连接在一起的字符串

标准答案:A

知识点解析:strcmp(strl,si⑵是比较字符串slrl和sir2,当两字符串相等时,返

同值为0,不相等时返向值为非0:所以此段程序的功能是在未接收到字符串“the

end”时,读入字符并输出。

24有以下程序#includeVstring.h>main。{charp[]={'a',2',2'},

q[10]={'a''bl'c"}:printf("%d%d\nM,strlen(p),strlen(q)):)以下叙述中正确的

A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为

3

B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D、由于p和q数组中都没有字符串结束符,故长度都不能确定

标准答案:A

知识点解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目

中可以看出数组p和q都有3个字符,所以长度均为3。

25、C语言允许函数类型缺省定义,此时函数值隐含的类型是()。

A、float

B、int

C、long

D^double

标准答案:2

知识点解析:在C语言中,对于自定义函数要遵循“先定义,后使用”的规则,如

定义时不指定函数类型,C编译系统都默认函数的返回值是int型。

26、设有如下定义:structsk{inta;floatb;)data;int*p;若要使p指向data

中的a域,正确的赋值语句是()。

A^p=&a;

B、p=data.a;

C、p=&data.a;

D^p=a;

标准答案:4

知识点解析:要注意不能将结构体变量作为一个整体进行输入和输出,只能对结构

体变量中的各个成员进行输入和输出。引用结构体变量中成员的方式有以下几种:

结构体变量名.成员名;指针变显名成员名;(咐旨制变量名).成员名。

27、以下程序调用findmax函数返回数组中的最大值findmax(inE*a,intn)

{int*p,*s;for(p=a,s=a;p-a<n;p++)if()s=p;return(*S);}main(){int

x[5]={12,21,13,6,18);printf("%d\n",findmax(x'5));}在下划线处应填入的

A、p>s

B、*p>*s

C、a[p]>a[s]

D、p-a>p-s

标准答案:2

知识点解析:在main。函数中定义了一个具有5个元素的x数组并赋初值,然后调

用flndmax。函数求数组中元素的最大值。调用时把数组元素x的首地址,传给了

形参指针变量a,把5传给形参n。在函数findmax。中定义了两种指针变量p和

s,其中s用来记录最大元素的地址,p作为循环控制变量,表示每个元素的地

址.求最大值的算法是先将第一个元素(用s记下它的地址)做为最大值,然后用最

大值(*s)与后面的每个元素比较(*可,若后面的元素大,则用s记下它的地址,所

以下划线应填“*s〈*p*或"*P>*s”。所以,4个选项中B为所选。

28、以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。void

reverse(inta||,intn){inti,t;for(i=0;i<n/2;i++){t=a|i];a[i]=a|n-l-i];a|n-l-

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

10;i++)s+=b[i];printf("%d\n",s);)程序运行后的输出结果是

A、22

B、10

C>34

D、30

标准答案:1

知识点解析:本题考查的知识点是数组名作为函数参数及函数调用。reverse。数的

功能是将具有n个元素的数组a反序存放。在主函数中调用语句是“rcvcrsc(b,

8);”,实现的功能是把b数组的前八个元素逆置,所以b数组中依次存放的值为

“8,7,6,5,4,3,2,1,9,10”。for循环了4次,分别把b[6]、b[7]、b[8]和

b[9]的值(分别是2、1、9、10)加到了s中,s的结果是22,所以最后输出的s值为

22o所以4个选项中A正确。

29、下列关于C语言数据文件的叙述中正确的是

A、文件由ASCII码字符序列组成,C语言只能读写文本文件

B、文件由二进制数据序列组成,C语言只能读写二进制文件

C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

标准答案:8

知识点解析:本题考核的知识点是文件的基本概念。C语言可以读写二进制文件和

文本文件两种,故选项A和选项B不正确;文件按数据的存放格式可分为二进制

文件和文本文件两种,其中二进制文件中数据都是以二进制的形式存放,故选项C

不正确。所以,4个选项中选项D符合题意。

30、下面程序的运行结果是omain(){unsigneda=3,b=IO;printf("%d\n',,a<

<2|b>>1);}

A、3

B、10

C、13

D、14

标准答案:4

知识点解析:本题考查移位运算和按位或运算,注意按位或运算时只要对应的二进

制位中有一个为1,结具为1:若都为0,结果为(X)

31、以下程序的输出结果是______。main(){inta⑶[4]={{1,3,5},{2,4,6},{3,5,7}};

prmtfC%d%d%d%d\nH,a[0][3],a[l][2],a[2][l];a[3][0]);}

A、650

B、1470

C、5430

D、输出值不定

标准答案:1

知识点解析:对未给出初始值的整数数组元素,被默认初始化为零。

32、以下选项中的表达式调用库函数依次求-4.5的绝对值、-4.0的平方根值、30。角

的正弦值和2的3次方值。正确的调用是()

A、abs(-4.5)

B、sqrt(-4.0)

C、sin(3.1416/6.0)

D、paw(2.0,3.0)

标准答案:4

知识点解析:暂无解析

33、有以下程序段:1]]臼10尸{1,2,3,4,5,6,7,8,9,1。}、?=&2[3],“问45J”中的值是

()。

A、5

B、6

C、8

D、9

标准答案:8

知识点解析:C语言中规定:一个数组名代表它的起始地址。本题中,定义了一个

长度为10的数组a并赋初值,数组名a就是数组的起始地址,由于数组下标是从0

开始,因此a[0]的地址也是a的值,a[l]的地址可以用a+1表示,也就是说a+1指

向数组a中下标为1的元素,同样a+i是a[i]的地址,*p=&a[3]表明指针变量p指

向元素a[3],即p指向数组a的第4个元素4,p[5]的值应为数组a中的第9个元素

的值即a[8]的值,即p⑸=9,所以b=9。故4个选项中选项D符合题意。

34、若有如下程序:main。{staticchar*a[3]={"123"J456","789");char**b;b=a;

++b;printf("%s,%s\nn,*a,*a+l);printf("%s,%s\n",*b,b[l]);)则程序运行后的输出结果

是()。

A、123,456,456,789

R、123.23456,56

C、123,23456,789

D、123,456456,56

标准答案:4

知识点解析:a为指针数组,a[0]即数组a的数组名指向字符串T23”的首地址,输

出*a为“123”,*a+l将指针下移1个存储单元,输出字符串为“23"。a[l]指向字符

串“456”的首地址,a⑵指向字符串“789”的首地址。b为指针的指针,它的值为数组

a的首地址。

35、下面软件中,属中应用软件的是()

A^Unix

B、人事管理系统

C、数据库管理理系统

D、DOS

标准答案:2

知识点解析:暂无解析

36若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复

制一个字符串:char*strl="abed",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";

A、strcpy(str2,strl)

strcpy(str3,strl)

C、strcpy(str4,strl)

D、strcpy(str5,strl)

标准答案:4

知识点解析:strcpy(sl,s2)函数的功能是将字符串s2复制到字符串si中(注意:要

保证si存储区能容纳下s2字符串)。

37、以下程序运行后的输出结果是______ointd=l:fun(intp){staticint

d=5;d+=p;printf("%d",d);returnd;}main()(inta=3;printf(,,%d\n",fun(a+fun(d)));}

A、699

B、669

C、61515

D、6615

标准答案:4

知识点解析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已

有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而

对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数

重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并

赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用

函数fun时,d初值为5,P由主函数传递过来的值为1,则d=d+p=5+l=6,由于d

是静态局部变量,在函数调用结束后,它仍保留<1=6。再次调用fun函数,d的初

值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的

值并返回主函数c

38、有以下程序段:intk=0»a=l>b=2,c=3;k=a<b?b:a;

k=k>c?c:k;执行该程序段后,k的值是o

A、3

B、2

C、1

D、0

标准答案:B

知识点解析:三目运算符的一般形式为(表达式1)?(表达式2):(表达式3),当(表

达式1)值为真时,(表达式2)的值为整个表达式的值;当(表达式1)值为假时,(表

达式3)的值为整个表达式的值。题中执行表达式“k=aVb?b:葭后,k=2,将此值代

入后一个表达式“k=k>c?c:k,由于“k>c”值为假,故k的值还等于原来k的值,

即2。

39、有以下程序main(intargc,char*argv[]){intn=0,i;

for(i=1;i<argc;i++)n=n*10+*argv[i]'O':printf("%d\n",

n);)编译连接后生成可执行文件tt.cxc。若运行时输入以下命令

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

A、12

B、12345

C、12345678

D、136

标准答案:D

知识点解析:运行时输入该命令后,参数argc的值为4,字符串数组argv[l]、

argv[2]>argv[3]分别为“12”、“345”、“678”,然后取这3个参数的第一个字符,将

其转化成原来的数字并组合成一个新的三位数。

40、若有定义语句:intm[]={5,4,3,2,l},i=4;,则下面对m数组元素的引用中错误

的是_____。

A、m|-i]

B、m[2*2]

C>m[m[0]]

D、m[m[i]]

标准答案:C

知识点解析•:一维数组的定义方式为:类型说明符数组名[常量表达式]。其中

“常量表达式”表示元素的个数,即数组长度。元素的下标从0开始,最大下标是元

素个数减一。本题定义了一个由5个元素(m[0[到间4])组成的数组。选项A表示对

m[3]的引用;选项B表示对m[4]的引用;由于m[0]的值为5,所以选项C表示

m[5],但由于m数组元素的最大下标为4,所以本引用下标越界;由于m[i]即

m[4]的值为1,所以选项D表示对m[l]的引用。

41、有以下程序#inculdeintFun(){ststicintx=1;x*=2;retumx;}main(){inti,s=l;

For(i=l;I<=2,I++)s=Fun();printF(tt%d\n,,,s);}程序运行后的输出结果是

A、0

B、1

C、4

D、8

标准答案:C

知识点解析:暂无解析

四、公共基础填空题(本题共5题,每题7.0分,共5

分。)

42、在算法的4个特性中,算法必须能执行有限个步骤之后终止指的是算法的特性

标准答案:有穷性。

知识点解析:本题考查算法的4个基本特性;可靠性、确定性、有穷性和拥有足够

的情报,其中,算法的有穷性是指算法必须在有限的时间内完成,即算法必须执行

有限个步骤之后终止。

43、诊断和改正程序中错误的工作通常称为【】。

标准答案:程序调试

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

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

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

开发阶段。

44、软件设计模块化的目的是[】o

标准答案:降低复杂性

知识点解析:模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干

模块的过程,由此分解来降低复杂性。

45、在运算过程中,能够使空表与非空表的运算统一的结构是【】。

标准答案:循环链表

知识点解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空

表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结

点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。

循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而

是指向表头结点。

46、数据结构分为逻辑结构和存储结构,循环队列属于结构。

标准答案:逻辑

知识点解析:数据的逻辑结构主要是反映数据之间的逻辑关系,而存储结构是用来

反映数据的逻辑结构在计算机存储空间中的存放形式。循环队列主要是强调数据之

间的关系,因此属于逻辑结构。

五、填空题(本题共9题,每题1.0分,共9分。)

47>下面程序的输出是[]omain(){intarr[10],i,k=0;for(i=0;i<10;i++)arr[i=i;]

fdr(l;i<4;i++)k+=arr[i]+i;printf("%d\n",k);}

标准答案:12

知识点解析:本题通过第一个for循环将数组arr[()]-arr[9]分别赋值为0-9,通过第

二个for循环的三次循环累加,求出结果为12,具体分析如下:i+l:k=0+anl”+l

即k=2;i=2:k=2+arr[2]+2即k=6;i=3:k=6+arr[3]+3即k=12;

48>当m=l,n=2,a=3,b=2,c=4时,执行d=(m=a!=B)&&(n=b>C)后,m的值

为()。

标准答案:1

知识点解析:①“sizeoF、“%”、">"、“VV”、“*=",运算符的优先级顺序为:

“*B->“>”一>“VV”T%"T“sizeor;②位运算的优先级顺序为:“〜”一“〈

<,,一“>>,,一"&,,一“八,,。(b=2)>(c=4)不成立,逻辑为假,所以n=0;

(a=3)!=(b=2)成立,逻辑为真,所以m=l。

49、下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。

请填空。intn=0,c;c=getchar();while(c!='\rT){il()n++;}

A、c>=,a,&&c<=,z,

标准答案:

知识点解析:小写字母在内存中以ASCH的形式存入,且从a到z依次递增,所

以可以直接用c>H&&cV=N判断是不是小写字母;c!=,n,判断是用换行符结束

循环。

50、设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为o

A、3

标准答案:

知识点解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达

式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后

一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

51、以下程序的运行结果是#d是neMAX(A,B)(A)>(B)?(A):(B)#define

PRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:

MAX(a+b,c+d);PRINT(t);}

A、Y=3

B、存在语法错误

C、Y=7

D、Y=0

标准答案:C

知识点解析:暂无解析

52、数据模型包括数据结构、()和数据条件。

标准答案:数据操作

知识点解析:数据模型就是现实世界的反映,数据模型所描述的内容有3个部分,

它们是数据结构、数据操作与数据约束。

53、用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储

空间,请填空。st=(char*)。

标准答案:malloc(11*sizeof(shar))。

知识点解析•:本题考查库函数调用的一些方法,要写11个字节的动态存储空间的

库函数是malloc(ll*sizeof(shar))o

54、以卜,程序的输出结果是©main。{inis,i;for(s=0,i=l;i<3;i++,

s+=i);printf("%d\n”.s);}

标准答案:5

知识点解析:此程序中,fbr循环语句后面直接跟了一个“;”,表明循环体为

空.输出语句不在for循环体内,所以在循环执行完毕后才输出s的值.s、i的初

值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的

值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和

s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。

55、有以下语句段intnl=lU,n2=2U;printf("[]M,nl,n2);要求按以下格式输出

nl和n2的值,每个输出行从第一列开始,请填空。nl=10n2=20

标准答案:n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或

n1=%2d\nn2=%2d

知识点解析:printf函数有两种参数:格式控制参数和输出项参数,其中格式控制

参数由两种成分组成:格式说明和普通字符,普通字符将被简单地复制显示,格式

说明项将引起一个输出参数项的转换与显示,它是由‘引出并以一个类型描述符

结束的字符串。本题中,nl二和n2二就是普通字符,可以直接显示,又因为nl,n2

为整数,所以格式说明项为%d,也可以在%与d之间加上域宽,另外还要在每行

输出结束时加转义字符\n进行换行。所以,应填写nl=%d\nn2=%d\n或

nI=%d\nn2=%d或n1=%2d\nn2=%2dn或n1=%2d\nn2=%2do

56、下列程序段的输出结果是【】。inln=,c-sv/itch(n++){default:

printf("errorn);break:case'a':case'A':case'b':case'B':printf("good");

break;case'c':case'C':printff'pass");case'd':case'D':printfV'wam");)

标准答案:passwam

知识点解析:n++是在执行完其所在的语句后再加I,因此,在执行case的时侯,

n的值依然为C,执行casc'c'后面的语句,先打印出“pass”;在执行完casc'c'后,

未遇到break跳出swilch,便接着执行下面的语句,又打印出warn。所以此题输出

结果是passwam。

57、有以下定义和语句,则sizeof(a)的值是[】,而sizeof(a.share)的值是[]°

structdate{intday;intmouth;intyear;union{intshare1;float

share2;[share;)a;

标准答案:104

知识点解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别

占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内

存长度等于最长的成员的长度。所以,sizeof(a.share)的值是4,sizeof(a)的值是

2+2+2+4=10。

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

一、公共基础选择题(本题共10题,每题1.0分,共

10分。)

1、由两个栈共享一个存储空间的好处是

A、减少存取时间,降低下溢发生的几率

B、节省存储空间,降低上溢发生的几率

C、减少存取时间,降低上溢发生的几率

D、节省存储空间,降低下溢发生的几率

标准答案:2

知识点解析:常常一个程序中要用到多个栈,为了不发生上溢错误,就必须给每个

栈分配一个足够大的存储空间。但实际中,很难准确地估计,若每个栈都分配过大

的存储空间,势必造成系统空间紧张:若让多个栈共用一个足够大的连续存储空

间,则可利用栈的动态特性使它们的存储空间互补。

2、设有两个串p和q,求q在p中首次出现位置的运算称作。

A、连接

B、模式匹配

C、求子串

D、求串长

标准答案:2

知识点解析:子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要

的操作之一,算法的基本思想是:从主串的开始字符起,与模式的第一个字符比

较,若相等,则继续比较后续字符,否则从主串的下一个字符起再重新与模式的字

符比较,依次类推,直至模式中的每一个字符依次和主串中的一个连续的字符序列

相等,称匹配成功,否则称匹配不成功。

3、n个顶点的连通图中边的条数至少为o

A、0

B、1

C、n-1

D、n

标准答案:4

知识点解析:在无向图(边没有方向性的图)中,若从顶点vi到vj有路径,则称vi

和vj是连通的,若该图中任意两个顶点都是连通的,则称该图为连通图。

4、对象实现了数据和操作的结合,是指对数据和数据的操作进行。

A、结合

B、隐藏

C、封装

D、抽象

标准答案:4

知识点解析:对象是由数据及可以对这些数据施加的操作组成的统一体。对象的内

部,即处理能力的实行和内部状态,对外是看不见的,这一特性称为对象的封装。

5、下列叙述中,正确的是_____o

A、软件就是程序清单

B、软件就是存放在计算机中的文件

C、软件应包括程序清单及运行结果

D、软件包括程序和文档

标准答案:8

知识点解析:软件(software)是计算机系统中与硬件相互依存的另一部分,是包括

程序、数据及相关文档的完整集合。

6、软件设计中,有利于提高模块独立性的一个准则是_____v

A、低内聚低耦合

B、低内聚高耦合

C、高内聚低耦合

D、局内聚同耦合

标准答案:4

知识点解析:模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独

立性使用耦合性和内聚性两个定性的度量标准。一般优秀的软件设计,应尽量做到

高内聚、低耦合,即减弱模块之间的耦合性,提高模块内的内聚性,有利于提高模

块的独立性C

7、软件生命周期中花费时间最多的阶段是。

A、详细设计

B、软件编码

C、软件测试

D、软件维护

标准答案:8

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

题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期

的最后一个阶段,也是夺续时间最长,花费代价最大的一个阶段,软件工程学的一

个目的就是提高软件的可维护性,降低维护的代价。

8、下列4项说法中,不正确的是o

A、数据库减少了数据冗余

B、数据库中的数据可以共享

C、数据库避免了一切数据的重复

D、数据库具有较高的数据独立性

标准答案:4

知识点解析:数据库系统具有以下4个特点:数据的集成性、数据的高共享性与低

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

9、下列4项中,必须进行查询优化的是o

A、关系数据库

13、网状数据库

C、层次数据库

D、非关系模型

标准答案:1

知识点解析:关系数据模型诞生之后迅速发展,深受用户喜爱,但关系数据模型也

有缺点,其最主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数

据模型。因此,为了提高性能,必须对用户的查询请求进行优化。

10、最常用的一种基本数据模型是关系数据模型,它的表示应采用o

A、树

B、网络

C、图

D、二维表

标准答案:8

知识点解析:关系数据模型用统一的二维表结构表示实体及实体之间的联系(即关

系)。

二、选择题(1分)(本题共10题,每题1.0分,共10

分。)

11、用c语言编写的代码程序()。

A、可立即执行

B、是一个源程序

C、经过编译即可执行

D、经过编译解释即可执行

标准答案:2

知识点露析:C语言是一种高级语言,用C语言编写的代码程序经过编译程序编译

之后,生成一个后缀为OBJ的二进制文件(称为目标文件),随后还要由“连接程序”

软件,把该OBJ文件与C语言提供的各种库函数连接在一起,生成一个以EXE为

后缀的可执行文件,才可以执行,因此C语言不能立即执行。故选项A、C和D

错误。用C语言编写的代码程序是一个源程序,选项B正确。

与数学式子三二对应的C语言表达式是()。

12、21

A、3*xn(2*x-l)

B、3*x**n(2*X-l)

C>3*pow(x,n)*(l/(2*x-l))

D、3*pow(n,x)/(2*x-l)

标准答案:4

知识点解析:在该题中,x的n次方应该调用函数pow(x,n)计算,故排除选项

A、Ro在选项D中,pow(n,x)的参数写反了,故选项C正确。

13、下列选项中,合法的C语言关键字是()。

A、VAR

B、cher

C、integer

D、default

标准答案:8

知识点解析:选项A中的VAR不是C语言中关键字,故选项A不正确:选项B

中cher,应改char,char才是C语言中的关键字,故选项B不正确;选项C中

integer在C语言中简化为int,这里应该将integer改为int,ini才是C语言中的关

键字,选项D中default为C语言中默认的关键字,故选项D正确。所以,4个选

项中选项D符合题意。

14、设有定义语句:charb='\123';则变量b包括()。

A、4个字符

B、3个字符

C、2个字符

D、一个字符

标准答案:8

知识点解析:\123为转义字符,是一个字符常量,斜线后面的是八进制数,可以由

0开头,最多由3个八进制数组成。它只代表一个字符,此八进制数就是这个字符

的代码。语句charb=、123,是给字符变量赋初值,初值为一个字符。所以,选项D

符合题意。

15、若有说明语句“inta;floatb;",以下输入语句正确的是()。

A、scanf("%f%f',&a,&b);

B、scanf("%f%dH,&a,&b);

C、scanf("%d,%f,&a,&b):

D、scanf("%6.2f%62F',&a,&b);

标准答案:4

知识点解析:说明语句中变量a为整型,变量b为实型。选项A、B和D的格式控

制中变量a的格式描述符为f,与定义的变量类型不符,故选项A、B和D错误。

16、设x、y、l均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为

()。

A、不定值

B、4

C、3

D、1

标准答案:4

知识点解析:++高于二和||,二的优先级最低。而||为自左向右的结合性,因此先计

算表达式++x的值,x的初值为3,3+1=4,4为非零值,不必再计算||右侧表达式

的值,即可得到整个逻辑表达式的值1,++y没有做运算,仍为原值3,所以,选

项C正确。

17^若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;

scanf("%d",&n);if(n++V10)printf("%d\n",n);elseprintf(',%d\nM,n-);}

A、11

B、10

C、9

D、8

标准答案:2

知识点解析:程序的功能是从键盘输入一个整数,然后执行if语句的条件表达式

n++<10o表达式n++V10,先执行nVIO,后对n加1。程序中从键盘输入的n值

为99<10,判断的条件为真,然后n加1,即n的值变为10,程序执行后面的

primf语句输出n的值为10,所以,选项B正确。

18、有以下程序段:inik=Owhile(k=l)k++;while循环执行的次数是()。

A、无限次

B、有语法错、不能执行

C、一次也不执行

D、执行I次

标准答案:1

知识点解析:程序中,k的初值为0。执行while后面小括号中的赋值表达式k=l,

则k的值为1,即整个表达式的值为真。所以执行循环体,执行语句“k++;因

为k进行自加,不再减小,没有值为0的可能,即while后面小括号中的赋值表达

式的值一直为真,不能退出循环,因此while循环将无限次地执行下去,所以,选

项A正确。

19、以下程序的输出结果是()。#include<stdio.h>main(){printf(M%d\n",

NULL);}

A、不确定的值(因变量无定义)

B、0

C、-1

D、1

标准答案:2

知识点解析:在C语言中NULL的ASCII码值为0,而输出函数要求以整形格式

输出,故最后的输出数0。所以,选项B正确。

20、执行以下程序段时,输出结果为()。doublea;a=333.721568;printf("%-

62e\nn,a);

A、输出格式描述符的域宽不够,不能输出

B、33.721568e+01

C、3.3e+02

D、-3.33e2

标准答案:4

知识点解析:格式输出符为e,数据将按科学计数形式输出。-控制数据左对齐。

所以,选项C正确。

三、选择题(2分)(本题共30题,每题1.0分,共30

分。)

21、对于下面的语句,叙述正确的是ochaicHKabcd'1;char

A、数组cl和数组c2等价

B、数组cl占用空间大于数组c2占用空间

C、数组cl占用空间小于数组c2占用空间

D、数组cl和数组c2的长度相同

标准答案:2

知识点解析:给字符数组按字符串方式初始化,则在字符串末尾有一个字符串结束

标志,占一个字节的存储空间,如逐个元素赋值,则不加字符串结束标志。

22、以下程序的运行结果是。main(){charn=0x20;printf("%d\n",n=n<<

1);)

A、100

B、160

C、128

D、64

标准答案:8

知识点解析:n初始化时值是十六进制20(即十进制32),左移1位,相当于乘以

2,结果是64。

23、判断字符型变量ch「为小写字母的表达式是o

A、'a'V=chrV='z'

B、(chr>=,a,)||(chr<=,z,)

C、(chr>=A)&&(chr<=z)

D、(chr>='a')&&(chrV='z')

标准答案:2

知识之解析:程序段中定义x值为1,!x值为0,因此循环执行的条件永远成立,

该循环是死循环。

24、若执行下面的程序时,从键盘上输入5和2,则输出结果是_____omain()

{inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b:elsek=b%a:

printf("%d\n'\k);}

A、5

B、3

C、2

D、0

标准答案:4

知识点解析:a为5,b为2,条件表达式不成立,执行日se中的语句,b%a值为

2o

25、设有如下枚举类型定义:cnumpro_lan{Basic=3,C,Dclphi=10,Pascal,Fortran);

枚举量Fortran的值为。

A、4

B、7

C、12

D、13

标准答案:4

知识点解析:定义枚举类型时,若不给枚举元素指定初值,系统将从0开始依次给

每个枚举元素赋值,若只给某个(或部分)元素指定初值,其后元素的值将依次加

lo

26下列程序段的执行结果是ointi=0;while(i++<=2)printf("%d\r',i);

A、123

B、12

C、1

D、无结果

标准答案:1

知识点解析:i++是先取值后判断,再自加,循环体输出自加后的值,循环体执行

3次,控制符\t是移动水平制表位。

27、设有以下定义:inta[3][3]={1,2,3A5,6,7,8,9};int(*ptr)[3]=a;则下列能正确

表示数组元素a[l]⑵的表式是______o

A^*((*ptr+l)[2])

B、a|2][3]

C、(*ptr+l)+2

D、*(*(a+l)+2)

标准答案:8

知识点解析:指针变量阿是指向长度为3的整型一维数组,当ptr指向二维数组a

时,pt「每移动一个单位符指向数组的下一行,*(*。+1)+2)表示数组元素

*(*(plr+l)+2)也可以。

28、以下正确的函数声明语句是______o

A、intfun(inta,B):

B>floatfun(intajnl

C、doublefun();

D、intfun(charalJU);

标准答案:4

知识点解析:函数声明语句必须以分号结束,形参要分别说明,若二维数组作为函

数的形参,则第二维的大小不能缺省。

29、下列程序段的输出结果是ostaticinta|3]={1,2,3);int**ptr,*p;p=a;

ptr=&p;(ptr[0]++)[l]+=3;printf(M%d,%d,%d\nH,**ptr,*p,a[O]);

A、5,5,10

B、1,5,5

C、5,5,1

D、输出结果不确定

标准答案:4

知识点解析:ptr指向指针变量p,p指向数组a的首地址,(ptr[0]++)[l]+=向的意

思是将p指向数组元素叩],并将它的值增3变为素此时,ptr指向p,p指向

a[lh

30、语句定义如下:charstrl[50],str2[20],ch;则下列语句正确的是______。

A、strl={"Crazy");str2=strl;

B、strl={nCrazyn);st「2={"English”};strcpy(strl,str2);

C、ch=uxy";

D、ch='x';

标准答案:8

知识点解析:strl和str2是数组名,是常量,其值不可改变,所以A和B中将字符

串常量赋值给strl和str2是错误的。字符变量ch占一个字节,只能存放一个字

符,所以C也不正确。

31、下面程序的输出结果是omain(){intx=0x48:printf("%d\nn,-x);)

A、48

B、47

C、71

D、72

标准答案:4

知识点解析:定义X时,初始值为十六进制数48,先执行前先自减,再以十正制

数71输出。

32、下面程序的输出结果是______omain(){int

a[10]={0,l,2,3,4,5,

温馨提示

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

评论

0/150

提交评论