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

下载本文档

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

文档简介

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

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

10分。)

1、程序流程图中带有箭头的线段表示的是

A、图元关系

B、数据流

C、控制流

D、调用关系

标准答案:C

知识点解析:程序流程图是人们对解决问题的方法、思路或算法的一种图形方式

的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;

流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流:带箭头的

线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线

段表示图元关系。在模块之间用带有箭头的线段表示调用关系。

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

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

A、控制流

B、加工

C、数据存储

D、源和潭

标准答案:A

知识点解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移

动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据

源)、源和潭。

3、设有以下定义:inta=0;doubleb=1.25;char#defined2则下面语句中错误

的是o

A^a++:

B、b++;

C、C++

D、d++

标准答案:D

知识点解析:选项D中d是符号常量,不能进行++的运算。

4、关系表中的每一横行称为一个

A^元组

B、字段

C、属性

D、码

标准答案:A

知识点解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个

属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的

键或码。

5、用树形结构来表示实体之间联系的模型称为

A、关系模型

B、层次模型

C、网状模型

D、数据模型

标准答案:2

知识点解析:关系模型以二维表表示实体之间的联系,网状模型以一个不加任何条

件限制的无向图表示实体之间的联系。层次模型的基本结构为树形结构.而D选

项数据模型包括关系模型,网状模型和层次模型。

6、计算机软件一般包括应用软件和—o

A、字处理软件

B、系统软件

C、服务性软件

D、操作系统

标准答案:2

知识点解析:暂无解析

7、将E-R图转换到关系模式时,实体与联系都可以表示成()

A、属性

B、关系

C、键

D、域

标准答案:2

知识点解析:暂无解析

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

A、线性链表中的各元素在存储空间中的位置必须是连续的

B、线性链表中的表头元素一定存储在其他元素的前面

C、线性链表中的各元素在存储空间中的位国不一定是连续的,但表头元素一定存

储在其他元素的前面

D、线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺

序也是任意的

标准答案:8

知识点解析:在线性表的链式存储结构中,各数据结点的存储位置不连续,且各结

点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间

的前后关系是由各结点的指针域来指示的。所以,选项D正确。

9、线性表的链式存储结构是一种

A、随机结构

B、顺序结构

C、索引结构

D、散列结构

标准答案:2

知识点解析:线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,

还包括指针,每一个指升指向一个与木结点有逻辑关系的结点。此类存储方式属于

顺序存储。

10、在Windows环境下,下列叙述中正确的是

A、在“开始“菜单中可以增加项目,也可以删除项目

B、在“开始”菜单中不能增加项目,也不能删除项目

C、在“开始”菜单中可以增加项目,但不能删除项目

D、在“开始”菜单中不能增加项目,但可以删除项目

标准答案:A

知识点解析:在“开始”菜单中右击某项子菜单,从快捷菜单中选择"删除”命令即可

删除某项子菜单,还可以通过“开始”菜单的“设置”命令向“开始”菜单中添加项子菜

单。

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

分。)

11、当变量C的值不为2、4、6时,值也为“真”的表达式是

A、(c==2)||(c==4)||(c==6)

B、(c>=2&&c<=6)||(c:=3)||(c!=5)

C、(c>=2&&c<=6)&&!(c%2)

D、(c>=2&&c<=6)&&(c%2!=1)

标准答案:B

知识点解析:满足表达13式(c>=2&&cV=6)的整型变量c的值是2,3,4,5,

6o当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中

至少有一个为真,即不论c为何值,表达式B)都为“真”。

12、有以卜程序fun(inlx){intp;if(x==OIIx==l)retum(3);p=x-fun(x-2);return

p:)main(){printf("%d\n",fun(7));}执行后的输出结果是

A、7

B、3

C、2

D、0

标准答案:C

知识点解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归

调用,其过程可以描述为“加立7)=7-彘11(5)=7・(5加11(3))=7・(5・(3加11(1)))=7・(5・(3-

3))=7-5=2",所以最后的输出结果为2。

13、C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的

外部指的是()。

A、冠以关键字extern

B、位置在函数体外部

C、作用范围是全程的

D、位置在函数的外部

标准答案:D

知识点解析:C语言中允许用位置在函数外部的说明来指定变量、函数和其他标识

符的特征。

14、软件是指()。

A、程序

B、程序和文档

C、算法加数据结构

D、程序、数据与相关文档的完整集合

标准答案:D

知识点解析:计算机软件是包括程序、数据及相关文档的完整集合.

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

A、getc()

B、gets()

C、getchar()

D、scanf()

标准答案:B

知识点解析:canf()语句用“空格”区别不同的字符串;getc()与getchar()语句不能用于

字符串的读入。

16、以下能正确定义字符串的语句是()。

A、charstr[]={,\064,};

B、charstr="\x43n;

C^charstr=";

D、charstr||="\On;

标准答案:8

知识点解析:C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数

组来存放,故选项A)、C)不是字符中;选项B)定义的是一个字符变量sir,不能用

来存放字符串,所以不正确。

17、用C言编写的代码程序()。

A、可立即执行

B、是个源程序

C、经过编译即可执行

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

标准答案:2

知识点解析:C语言-一种高级语言,C语言源程序经过C语言编译程序编译之后,

生成一个后缀为.obj的二进制文件(称为目标文件),最后还要由称为“连接程

序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接在一起,生成一个

后缀.cxc的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定

义,选项C和选项D错误,所以,4个选项中选项B符合题意。

18、以下合法的赋值语勺是0

A、X=Y=100

B、D-;

C、X+Y

D、C=int(A+B)

标准答案:2

知识点解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立

成为语句的,答案B使用了C语言的自减运算符它就相当于D二D-I,所以答案B

为一赋值语句。

19、用scanf(”%d,%d",&a,&b)输入数据时,下面输入法中,正确的是

A、123,4

B、1234

C、123;4

D、123:4

标准答案:1

知识点解析:暂无解析

20、下列正确的实型常量是()。

A、E3.4

B、-12345

C、2.2e0.8

D、4

标准答案:2

知识点0析:实型常量有两种书写形式。①小数形式,它由符号、整数部分、小

数点及小数部分组成:②指数形式,由十进制小数形式加上指数部分组成,其形

式为:十进制小数e指数或十进制小数E指数。注:e或E后面的指数必须是整

数,并且在e或E的前面必须有数字。本题中,选项A)中E的前面没有数字,因

此错误。选项C)中0.8不是整数,因此错误。选项D)中4是整型常量而不是实型

常量。

21、有以下程序#inckidemain。{intx=011:printf(i<%d\n,\++x):}程序运行后

的输出结果是

A、12

B、11

C、10

D、9

标准答案:C

知识点解析:变量x初始化值为Oil.Oil为八进制数.代表十进制的9,执行

printf函数后,x先加1.然后按十进制输出,即程序输出结果为10。

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

分。)

22、下列程序的输出结果是()。point(char*pt);main(){charb[4]=

},*pt=b;pt=point(pt);printf(M%c\n',,*pt);}point(char*p){p+=3;return

P;}

A、s

B、c

C、f

D、a

标准答案:C

知识点解析:本题考查函数调用时的参数传递。函数point的参数为字符指针,当

执行函数point时,刚开始指针p指向“a”,经过+3操作后,指针p指向“『所以最

后的输出结果是f。

23、有以下程序:#inckide<stdio.h>voidfun(char*c,intD){*c=*c+l;d+=l;

printf(H%c,%c,',*c,D;}main(){chara=,F,,b=T;fun(&b,A);printf(”%c,%c\n”,a,B):}程

序的输出结果为()。

g,GF,g

B、g,FF,g

C、G,fF,G

D、f,gf,g

标准答案:A

知识点解析:暂无解析

24、若运行以下程序时,从键盘输入ADescriptorVCR>(VCR>表示回车),则下

面程序的运行结果是(卜#include<stdio.h>main。{chare;intv0=l,vl=0,v2=0;

do{switch(c=gctchar()){casc,a,:casc,A,:casc,c,:case,E,:casc'i':cascT:

case,o,:case,O,:casc,u,:casc,U,:vl+=l:default:vO+=1;v2+=1;}}whilc(c!=,\n,);

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

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

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

C、vO-ll,vl-4,v2-l1

D、v0=13,vl=4,v2=12

标准答案:D

知识点解析:本题考查的是swilch语句的应用。分析程序,do・while语句是先执行

do后面的语句再判断是否符合while的条件。V2+=l:语句无论读入的是什么字母

(包括回车符),此语句都要执行,语句default:vO+=l;亦是如此;而语句

case,U,:vl+=l;只有在读入的字母

是3、A、Q、E、T、T、Q、。、3、U时才会执行。

25、下面的for语句的循环次数为()。

A、是无限循环

B、循环次数不定

C、最多执行6次

D、最多执行5次

标准答案:D

知识点解析:暂无解析

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

A、getc()

B>gets()

C、getchar()

D、scanf()

标准答案:B

知识点解析:scanf()语句肘,空格”区别不同的字符串;geic()与gelchar。语句不能

用于字符串的读入。

27、下歹ij程序的输出结果为main。{unionu{char*name;intage;intincome:)s

="WANGLIONG";s.age=28:s.income=1000;printf("%d\n",s.age);}

A、28

B、1000

C、0

D^不确定

标准答案:B

知识点解析:本题对共用体的使用进行了考查。由于共用体所有成员共同占据一

段存储空间,所以对成员变量的赋值,后面的赋值会覆盖掉前面的赋值,因为

s.income=1000;是最后一次成员变量赋值,变量age与变量income共同占据一段

存储空间,所以age的值也为lOOOo

28、有以下程序#inckidevoidfun(int*s,intnl,intn2){inti=n1;j=n2;while(i

A、0987654321

B、4321098765

C、5678901234

D、0987651234

标准答案:C

知识点解析:函数fun(int*s,intnl,intn2)的功能是对数组s中的元素进行首尾互相

调换。所以在主函数中,当fun(a,0,3)执行完后,数组多12]={4,3,2,1,5,6,7,8,9,0};再执

行fun®4,9),数组,12]={4,3,2,1,0,9,876,5};再执行fun(a,0,9)后,数组

a[12]={5,6,7,8,9,0,l,2,3,4)o

29、有如下程序main(){intn=9;while(n>6){n—;printf("%d",n);)}该程序的输出结

果是

A、987

B、876

C、8765

D、9876

标准答案:B

知识点解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪

一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n-运算,n的值变为

8,所以第一次的输出值是8,由此可以排除选项A)和D)o由循环条件n>6可以知道,

最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以

排除选项C)c

30、以下叙述错误的是。

A、共用体的所有变量都有一个相同的地址

B、结构体变量可以作为共有用体中的成员

C、共用体的成员一个时刻只有一个生效

D、耍传递共用体的成员通常采用函数

标准答案:C

知识点解析:暂无解析

31、定义a为整型变量,且设其初值为10,则表:iA式a+二a-=a*=a的值为。

A、10

B、0

C、100

D、-10

标准答案:B

知识点解析:暂无解析

32、有以下程序#includcmain(){charp[]={,a'Jb',d},q[10]={乱'b',*};

printf(H%d%d\n",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个字符,所以长度均为3o

33、以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是

()o#include<stdio.h>main(){int*p,*q,a,b;p=&a;printf("inputa:");

scanf(H%d';*p);)

A、*p表示的是指针变量p的地址

B、*p表示的是变量a的值,而不是变量a的地址

C、*p表示的是指针变量p的值

D、*p只能用来说明p是一个指针变量

标准答案:2

知识点解析:本题经过定义语句和赋值后,p表示的是变量a的地址,*p表示的是

变量a的值。

34、下列函数定义中,会出现编译错误的是o

A、rnax(intx,inty,int*z){*z=x>y?x:y;)z=x>y?x:y;

B、intmax(intx,y){intz;returnz;}

C、max(intx,inty){intz;z=x>y?x:y;return(z);)

D^intmax(intx,inty){returnx>y?x:y;)

标准答案:2'

知识点解析:在C语言中,不可以在函数的参数声明列表中用一个类型名指定多

个参数。故选项B是错误的。其正确的表示方式应为:intmax(intx,inty){....}

或intmax(x,y)intx,y;{....}

35、若已建立如下图所示的单向链表结构:

P

一•••一|E||—[F]―

s-1在该链表结构中,指针p、s分

别指向图中所示结点,则不能将S所指的结点插入到链表末尾仍构成单向链表的语

句组是。

A、p=p->next;s->nexl=p;p->next二s;

B、p=p->next;s->next=p->next;p->next=s;

C、s->next=NULL;p=p->next;p->next=s;

D、p=(*p).next;(*s).nexl=(*p).next;(*p).nexl=s;

标准答案:1

知识点解析:在答案A中:p=p->next;s->next=p:p->next=s;s的确已插到了

链表的末尾,但它的nexl却并没有为NULL,而是指向了它的直接前趋p,这样它

就不是一个单向链表(单向链表最后一个结点的next指针一定是一个NULL)o

36、以下程序的输出结果是()main(){inta=-l,b=4,k;k=(++a<=0)&<&!(b-<=0);

printf("%d%d%d\nM,k,a,B);}

A、104

B、004

C、103

D、003

标准答案:4

知识点解析:暂无解析

37、有如下程序main。{floatx=2.0,y:if(x<C0.0)y=0.0;elseif(x<10.0)y=10/x;

elsey=1.0;printf("%f\n",y):}该程序输出结果是。

A、0

B、0.25

C、0.5

D、1

标准答案:4

知识点解析:本题考查的是if,……else语句的使用。x=2.0,符合第二个IF语句的

条件xV10.0,所以执行y=1.0/x语句,即y=1.0/2.0=0.500000。

38、有以下程序:main(){ints=0,a=l,n;scanf("%d",&n);do{s+=l;a=a-2;)while

(a!=n);printf("%d\n”,s);}若要使程序的输出值为2,则应该从键盘给n输入的值是

()o

A、-1

B、-3

C、-5

D、0

标准答案:2

知识点解析:根据题目要求,最后要使输出的s值为2,在程序中改变s的值的语

句只有循环体中的s+=l:语句,向初始s的值为0.显然要使s的值变为2,该语

句必须执行两次,即dowhilc循环中的循环体要执行两次,而在do-whilc中,首

先不执行条件而执行do后面的循环体语句,然后再判断while循环条件。所以不

管循环判断条件是否为真s+=l;语句至少执行一次,根据分析,只需要while后面

括号的循环判断表达式的值为真成立一次且只能为真一次,将4个选项中的内容依

次代入该程序中不难得到只有n=3刚好使循环判断条件a!=n为真一次。故4个选

项中选项B符合题意。

39、以下叙述正确的是

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

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

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

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

标准答案:2

知识点解析:C语言中的保留字,而define不是保留字。用户标识符不允许使用保

留字。

40、有下列程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=l;k—;break;

dcfault:n=O;k-;case2:case4;n+=2;k—;break;}printf("%dH,n);}whilc(k>0&&n<

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

A、235

B、235

C、2356

D、2356

标准答案:2

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

行default语句,输出0,k减1;这时n=0,k=4,程序进行第2次循环,执行case

4:这个分支,结果是n=2,k=3,打印出2;这时n=2,k=3,程序进行第3次循环,

执行case3:这个分支,结果是n=3,k=2,打印出3;这时n=3,k=2,程序然后进行

第4次循环,执行case2:case4:这个分支,结果是n=5,k=l,打印出5,这时因为

n=5不满足nV5的循环条件,因此退出循环,程序运行结束。所以在屏幕上拧印

出的结果是0235。

41、有以下程序#include<stdio.h>#include<

string.h>voidfun(charn){chart;

intij;for(i=0;i<n-l;i++)for0—i+l;j<

n;j++)/*比较字符串的首字符大小,并交换字符串的首字符*/

if(s[i][O]>sUJlOJ){t=sliJIO];sliJIO]=sljJIO];s[j]⑼=

t;)}main(){charss[5][10|={"bcc'\"bbccn,"xy'\

"aaaacc","aabcc");fun(ss,5);printf(H%s,%s\n",

ss[0],ss[4]);)程序的运行结果是

A、xy,aaaacc

B、aaaacc,xy

C^xcc,aabcc

D、acc,xabcc

标准答案:D

知识点解析:在函数fun()中有一个两层嵌套的for循环,外循环变量i从0递增到

n-2,内循环变量i从i+1循环递增到n-1,这是选拦排序算法的标准结构。循环体

中因为逆序条件为s|j][Or\所以实现的是升序排序。由此可见,fun()函

数实现的功能是对一个二维字符数组前n行的首字符进行升序排序。主函数中定义

的二维数组初始化为{“bcc",“bbcc“,“xy”,,,aaaaccu,"aabcc1'),通过fun()函数

的排序后,结果将为acc","abcc",nby","baaacc%"xabcc")o故最终输出字符

串ss⑼和ss[4]的结果为acc,xabcc,应该选择D。

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

分。)

42、在面向对象的方法中,描述的是具有相似属性与操作的一组对象。

A、类

标准答案:

知识点解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是

对象的抽象,对象是类的实例。

43、排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、

和选择排序。

A、交换排序

标准答案:

知识点解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序

序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒

泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选

择排序和堆排序。

44、算法的复杂度主要包括时间复杂度和复杂度。

标准答案:空间

知识点解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复

杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行

这个算法所需要的内存空间。

45、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结

构、数据流、【】和处理过程。

标准答案:数据存储

知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,

是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据

项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中

存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。

46、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结

构、数据流、【】和处理过程。

标准答案:数据存储

知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,

是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据

项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中

存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。

五、填空题(本题共“题,每题分,共〃分。)

47、软件危机出现于20时纪60年代末,为了解决软件危机,人们提出了()的原理

来设计软件,这就是软件工程诞生的基础。

标准答案:软件工程学

知识点解析:为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件

工程是使计算机软件走向工程科学的途径。逐步形成了软件工程的概念,开辟了工

程学的新兴领域一软件工程学。

48、语句:x++;++x;x=l/x;执行后都使变量x中的值增1,请写出一条同一功能

的赋值语句o

标准答案:x+=1

知识点解析:本题考查"++"、”「运算符。“++“、”「只能作用于变量,不能用于

表达式或常量:前缀形式是在使用变量之前先将其值增1或减I,后缀形式是先使

用变量原来的值,使用完后再使其增1或减1。

49、以下程序用于判断a,b,c能否构成三角形,若能,输出YES,否则输出

NOo当给a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是

需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。#include<stdio.h>

main(){floata,b,c;scanf("%f%f%f,&a,&b,&c);if([])printf(,,YES\nM);/*ab.c

能构成三角形*/elseprinff(nNO\n");/*a.b.c不能构成三解形*/)

标准答案:(a+b>c)&&(a+c>b)&&(b+c>a)

知识点解析:根据构成三角形的条件:两边之和大于第三边,得出空格应该填(a+b

>c)&&(a+c>b)&&(b+c>a)或与其等价的形式。

50、以下程序中,for循环体执行的次数是【】。#defineN2#dcfineMN+1

#defineKM+1*M/2main。{inti;for(i=l;i<K;i++){......}

标准答案:4

知识点解析:本题考查宏定义。预编译时,首先将M的宏定义带入K,得到

N+l+l*N+l/2;再将N的宏定义带人,得到2+1+42+1/2=3+2+0=5,所以循环4

次。

51、在内存中,存储字符'X,要占用1个字节,存储字符串“x“要占用【】个字节。

标准答案:2

知识点解析:计算机存储一个字符用1个字节,存储字符串时,每个字符用占用I

个字节,另在字符串的有效字符之后存储1个字符串的结束标记符。所以存储字符

串“X”要占用2个字节,存储字符'X,只要1个字节。注意:sizeofO函数和strleM)函

数的作用。

52、表达式10+匕'+1.5-0.5*旧,的结果是[]o

标准答案:75.5

知识点解析:暂无解析

53、用复合的赋值运算符将变量x中的值增大2的赋值表达式是【】。

标准答案:x+=2

知识点解析:x+=2等价于x=x+2,"+=”为复合的赋值运算符。

54、以下程序的输出结果是【】。main(){unsignedshorta=65536;intb:

printf("%d\n",b=A);}

标准答案:0

知识点解析:对于一个nusignedshortshort来说,它能取的最大值是65535。这里

给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋

给它(全零)。所以a的值实际为0。

55、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式

pow(y,fabs(x))的值为[]。

标准答案:8

知识点解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计

算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0

次方,结果为8.000000。

56、求任意一个数(用16位二进制码表示)的补码。main。(unsignedinta;

[1;&a);prinlf("%o\ii”,gclbiUi(a));)unsignedinigulbils(value)

unsignedintvalue;{unsignedintz;z=[];if(z==0100000)[];else

z=value;return(z);}

标准答案:unsignedintgetbits()value&O100000z=~value+l

知识点解析:暂无解析

57、有以下程序#inculdemain(){inta[3][3]={(1,2,3),(4,5,6),(7,8,9));intB[3]={0},i;

For(i=0;i<3;i++)B[i]=a[i][2]+a[2][i];For(i=0;l<3;i++)printF("%d”,B[i]);

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

标准答案:101418

知识点解析:当i=0时,b[0]=a[0][2]+a[2][0]=3+7=10:当i=l时,b

[1]=a[1][2]+a[2][1]=6+8=14;当i=2时,b[2]=a[2][2]+a

[2][2]=9+9=18,则打印结果为101418o

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

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

10分。)

1、在软件工程中,白盒测试法可用于测试程序的内部结构,此方法将程序看做是

()。

A、循环的集合

B、地址的集合

C、路径的集合

D、目标的集合

标准答案:4

知识点解析:软件的白盒测试法是把测试对象看作一个打开的盒子,它允许测试人

员利用程序内部的逻辑结构及有关信息设计或选择测试用例,对程序所有逻辑路径

进行测试。

2、在单链表中,增加头结点的目的是()。

A、方便运算的实现

B、使单链表至少有一个结点

C、标识表结点中首结点的位置

D、说明单键表是线性表的链式存储实现

标准答案:1

知识点解析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)

的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便

于运算的实现。

3、面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是

()。

A、模拟现实世界中不同事物之间的联系

B、强调模拟现实世界中的算法而不强调概念

C、使用现实世界的概念抽象地思考问题,从而自然地解决问题

D、鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

标准答案:4

知识点解析:面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本

原理是,使用现实世界的概念抽象地思考问题,从而自然地解决问题。它强调模拟

现实世界中的概念,而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用

领域的概念去思考。

A

4、下图所示二叉树的中序遍历结果为()。

A、ABCDEF

B、DBEAFC

C、ABDECF

D、DEBFCA

标准答案:2

知识点解析:中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树,并且

在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

5、在计算机中,算法是指()。

A、查询方法

B、加工方法

C、解题方案的准确而完整的描述

D、排序方法

标准答案:4

知识点解析:计算机算法是指解题方案的准确而完整的描述,它具有的基本特征

有:可行性、确定性、有穷性和拥有足够的情报。

6、用树形结构来表示实体之间联系的模型称为()。

A、关系模型

B、层次模型

C、网状模型

D、数据模型

标准答案:2

知识点解析:层次模型的基本结构是树形结构,这种结构方式在现实世界中很普

遍,如家族结构、行政组织机构等,它们自顶向下、层次分明。

7、下列叙述中,不属于软件需求规格说明书的作用的是()。

A、便于用户、开发人员相互理解和交流

B、反映用户问题的结构,可以作为软件开发工作的基础和依据

C、作为确认测试和验收的依据

D、便于开发人员进行需求分析

标准答案:8

知识点解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重

要文档之一。它有以下几个方面的作用:①便于用户、开发人员相互理解和交

流。②反映用户问题的结构,可以作为软件开发工作的基础和依据。③作为确认

测试和验收的依据%

8、单个用户使用的数据视图的描述称为()。

A、外模式

B、概念模式

C、内模式

D、存储模式

标准答案:1

知识点解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据

模式:选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据

的整体逻辑结构的描述;选项。不正确,物理存储数据视图的描述称为内模式,

即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。

9、软件开发的结构化生命周期方法将软件生命周期划分成()。

A、定义、开发、运行维护

B、设计阶段、编程阶段、测试阶段

C、总体设计、详细设计、编程调试

D、需求分析、功能定义、系统设计

标准答案:1

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

为软件生命周期,它可以分为软件定义、软件开发及软件运行维护三个阶段。

10、按条件f对关系R进行选择,其关系代数表达式为()。

A、R|X|R

RIxIR

B、f

C、of(R)

D、nf(R)

标准答案:4

知识点解析:选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所

选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组组

成的。如果关系的逻辑条件为f,则R满足f的选择运算可以写成:af(R)o

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

分。)

11、设函数fun的定义形式为:voidfun(charch,floatx){...}则以下对函数fun

的调用语句中,正确的是()。

A、funCabc'1,3.0);

B、t=fun(,D\16.5);

C、fun(,65',2.8);

D、fun(32,32);

标准答案:8

知识点解析:调用有参函数时,实参与形参的类型应相同或赋值兼容。由于整型数

据与字符型数据可以通用,所以实参“32”与形参ch的类型是一致的;又因为整型

变量给浮点型变量赋值是相兼容的,所以选项D)正确。

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

A、C语句必须以分号结束

B、复合语句在语法上被看做一条语句

C、空语句出现在任何位置都不会影响程序运行

D、赋值表达式末尾加分号就构成赋值语句

标准答案:4

知识点解析:选项C)是错误的。例如,对于for(;;)语句,如果循环体中没有结束循

环的语句,循环将无限地进行下去,导致死循环出现。

13、以下能正确定义且赋初值的语句是()。

A、intnl=n2=10;

B、charc=32;

CNfloatf=f+1;

D、doublex=12.3E2.5;

标准答案:2

知识点解析:语句intnl=n2=10;中,由于变量n2未定义,所以此赋值语句错

误;由于赋值语句中不能存在运算表达式,所以选项C)中的赋值语句错误;选项

D)中指数表示错误,C语言规定,e后面的指数必须为整数;选项B)中的32是

ASCII码的表示形式,这是c语言中字符型数据和整型数据通用的表现,即一个字

符数据可以以字符形式出现,也可以以整数形式出现。

14、以下关于函数的叙述中正确的是()。

A、每个函数都可以被其他函数调用(包括main函数)

B、每个函数都可以被单独编译

C、每个函数都可以单独运行

D、在一个函数内部可以定义另一个函数

标准答案:2

知识点解析:C语言的函数间可以互相调用,但不能调用main函数;函数可以分

别编写、分别编译,但函数不能单独运行;函数是互相独立的,在一个函数内部不

能定义另一个函数,即函数不能嵌套定义。

15、有以下程序:#include<stdio,h>inta=2;intf(intn){staticinta:3;intt=0;

if(n%2)(staticinta=4;t+=a++;)else{staticinta=5;t-:a++;)returnt+a++;main

(){ints-a,i;for(i-0;i<3;i++)s十-f(i);piinff(u%d\n''s);}程序运行后的输出结县是

()。

A、26

B、28

C、29

D、24

标准答案:4

知识之解析:在函数外面定义的变量a是全局变量,其作用范围从定义该变量的位

置开始到本文件的结束;在f函数中的if子句(复合语句)和else子句中定义的变量

a是局部变量,其作用范围只在其所在的复合语句内;在f函数中定义的第一个变

量a是静态局部变量,其作用范围只限于函数f内部,无论被调用多少次都只初始

化一次,并且保留上次函数调用结束时的值,该变量不对复合语句产生作用,所

以,f函数的返回值是这个a变量和t值相加的结果。

16、有以下程序:#include<stdio,h>voidsum(intalJ){a[OJ=a[-lJ+atlJ;)main

n

(){inta[10]={l,2,3,4,5,6J,8,9,10);sum(&a[2]);prinff(%d\n",a[2]);}程序运行后的

输出结果是()。

A、6

B、7

C、5

D、8

标准答案:1

知识点解析:本题将主函数中a[2]的地址传递给了sum函数中的形参a[],使得

sum函数中的(a+0)为主函数中a[2]的地址,所以a[-l]即*(a-l)的值为主函数中a[l]

的值,故函数sum中a[0]=2+40由于此函数中的a是指向主函数中的a[2],所以主

函数中的a[2]的值即为6。

17、有以下程序:#includc<stdio,h>main(){intk=5,n=0;while(k>0){switch

(k){default:break;case1:n+=k;case2:case3:n+=k;}k-;printf("%d\n",n);}程

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

A、0

B、4

「、6

D、7

标准答案:8

知识点解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执

行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺

序执行case3:n+=k;得n=5;当k=l时,执行easel:n+=k;得n=6,然后顺序

执行case2:和case3:n+=k;使得n=7o

18、设有定义:intk=1,m=2;floatf=7;则以下选项中错误的表达式是()。

A、k=k>=k

B、-k++

C、k%int(f)

D、k>=f>=m

标准答案:4

知识点解析:强制类型转换的一般形式为:(类型名)(表达式),而选项C)中没有给

类型名加括号,所以选项C)错误。

19、以下不能正确计算代数式3I2,的值的c语言表达式是()。

A、1/3*sin(l/2)*sin(l/2)

B、S1H(O.5)*sin(0.5)/3

C、pow(sin(0.5),2)/3

D、l/3.0*pow(sin(1.0/2),2)

标准答案:1

知识点解析:在有运算符的表达式中,要避免两个操作数都是整数的情况。本

题选项A)中的“1/3”和“1/2”的值都为0,使选项A)的表达式值为0,但事实上代数

式312加勺值并不为0,所以选项A)错误。

20、有以下程序段:intk=0>a=l,b=2,c=3;k=a<b?b:a;k=k>c?c:K;执行

该程序段后,k的值是()。

A、3

B、2

C、1

D、0

标准答案:2

知识点解析:由于aVb成立,所以表达式aVb?b:a取b的值2,得到k=2;由于k

>c不成立,所以表达式k>c?c:k取k的值2,故k的值为2。

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

分。)

21、下面程序的功能是瑜出以下形式的金字塔图案:****************#mdude

<stdio.h>main(){intij;for(i=l;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=l;j

<=J++)printf("*");printf(,'\n");))在下划线处应填入的是()。

A、i

B、2*i-l

C、2*i+l

D、i+2

标准答案:2

知识点解析•:本题是找出打'印号的条件,从图中我们可以找到规律,第一行1

个,第二行3个“*”,第三行5个*,……,即每行中。的个数恰好是行数的2

倍减一个,由此不难得出,横线处应当填入

22、有以下程序:#include<stdio.h>main(){chark;inti;for(i=l;i<3;i++)

{scanR"%c",&k);switch(k){case'O':printf(”another\n”);caseT:

primf("number\n”);}{}程序运行时,从键盘输入:01V回车》,程序执行后的输

出结果是()。

A、anothernumber

B、anothernumberanother

C、anothernumber

D、numbernumber

标准答案:4

知识点解析:本题中没有使用break终止switch语句的执行,当k为XT时,执行完

caseU后的输出后将继续执行caseT后的输出;当k为T时,执行case”'后的

输出。

23、有以下程序:#include<sldio.h>main(){intx=0,y=5,z=3;while(z->0&&

++x<5)y=y-l:printf("%d,%d,%d\n”,x,y,z);}程序执行后的输出结果是()。

A、3,2,0

B、32-1

C、4,3,-1

D^5,-2,-5

标准答案:2

知识点解析:当x=0,y=5,z=3时,z->0&&++x<5成立,执行y=y-1;此时

y=5-l=4,z=z-1=2,x=x+l=l;条件z-->0&&++xV5仍然成立,继续执行y=y-

1,此时y=y-1=3,z=l,x=2;条件z・・>0&&++xV5仍然成立,继续执行y二y-1,

此时y=y・l=2,z=0,x=3;条件不再成立,执行条件判断后x=3,y=2,z=-lo

24有以下程序:#include<stdio.h>main(){intx=102,y=012;

printf(',%2d,%2d\n',,x,y);)执行后的输出结果是()°

A、10,01

B、02,12

C、102,10

D、02,10

标准答案:4

知识点解析:y=012是将八进制数12赋给变量y。格式符%d,用于输出十进制整

数:%md,m为指定的输出值的宽度,如果数据的位数小于m,则左端补以空

格,若大于m,则按实际位数输出。本题是将八进制数12也按十进制数输出,八

进制数12转换为十进制数为10,输出结果为102,10o

25、设有定义:intn=O,*p=&n,**q=&p;则以卜选项中,止确的赋值语句是()。

A、P=1

B、*q=2;

C、q=p;

D、*p=5;

标准答案:8

知识点解析:指针变量中只能存放地址(指针),不能将一个非地址类型的数据赋给

一个指针变量,选项A)错误;q是指向指针的指针,选项B)错误;q和p是基类型

不同的指针变量,不能相互赋值,所以选项C)错误。

26、有以下程序:#include<stdio.h>#include<stdlib.h>structNODE{intnum;

structNODE*next;};main(){struetNODE*p,*q,*r;intsum=0;p=(structNODE*)

malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(struetNODE));r=(struct

NODE*)malloc(sizeof(structNODE));P->num=l;q->num=2;r->num=3;p->

next=q;q->next=r;r->next=NULL;sum+=q->next->num;sum+=P->num;

printf("%d\n",sum);)执行后的输出结果是()

A、3

B、4

C、5

D、6

标准答案:2

知识点解析:程序中q->next=r,所以q->next->num即为r->num,值为3,而

p->num=l,所以sum=3+l=4。

27、有以下程序:#include<stdio.h>main(){inti,s=0;for(i=1;i<10;i+=2)s+

=i+l;printf("%d\n",s);}程序执行后的输出结果是()°

A、正整数1〜9的累加和

B、正整数1〜10的累加和

C、正整数1〜9中奇数之和

D、正整数1〜10中偶数之和

标准答案:8

知识点解析:通过for(i=l;iV10;i+=2河知,i取值为1〜10的奇数,即1,3,5,

7,9,i+1即为2,4,6,8,10。因此,程序的功能是计算并输出1〜10中的偶数

之和,s+=i+l就是累加这些偶数。

28设有定义:inta,*pa二&a;以下scanf语句中能正确为变量a读入数据的是()。

A、scanf("%d",pa);

scanf("%d",a);

C、scanf("%dn,&pa);

D、scanf("%d",*pa);

标准答案:1

知识点解析:scanf函数是格式输入函数,用于输入任何类型的多个数据。该函数

的一般形式为:scanf(格式控制,地址列表),其中“格式控制”是用双引号括起来的

字符串,”地址列表”是由若干个地址组成的表列,可以是变量的地址,或字符串的

首地址。题目中可以作为地址列表项的有pa和&a。所以,选项A)正确。

29、有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是

使位置指针从文件末尾向前移2*sizeof(int)字节):#inckide<stdio.h>main()

{FILE*fp;inti,a[4]={1,2,3,4),b;^fopenCtdata.dar","wb");for(i=0;i<4;i++)

fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dar',,"rbn);fseek(fp,-

2L*sizeof(int),SEEK_END);firead(&b,sizeof(ini),l,fp);/*从文件中读取sizeof(int)字节

的数据到变量b中*/幻(^你);printf("%d\n",b);}执行后的输出结果()。

A、2

B、1

C、4

D、3

标准答案:8

知识点解析:Leek(fp,-2L*sizeof(int),SEEK_END):语句的作用是使位置指针从

文件末尾向前移2*sizeof(int)字节,调用此函数后指针指向a⑵,

fread(&b,sizeof(inl),l,fp)是从文件中读取sizeof(inl)字节的数据到变量b中,也就是

从文件中读取数据3到变量b中。

30、有以卜程序:#include<stdio.h>main(){FILE*fp;inti,k=0,n=0;

fp=fopen("dl.dat",nw");for(i=l;i<4;i++)fprintf(fp,"%d",i);fclose(fp);

fp=fopen("dI.dat","r");fscanf(fp,"%d%d",&k,&n):printf("%d%d\n",k,n);fclose(fp);{执

行后的输出结果是()。

A、12

B、1230

C、123

D、00

标准答案:2

知识点解析:fprintf、fscanf函数与printf、scanf函数作用相仿,都足格式化读写函

数,其区别在于:fprinlf和fscanf函数的读写对象不是终端而是磁盘文件。这两个

函数的一般调用方式为:fprintf(文件指针,格式字符串,输出表列):fscanf(文件

指针,格式字符串,输入表列);程序首先将123写入dl.dat文件中,再从该文件

中将数据读给变量k和n。由于文件dl.dat中的数据是123

温馨提示

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

评论

0/150

提交评论