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

下载本文档

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

文档简介

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

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

10分。)

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

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

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

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

储在其他元素的前面

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

序也是任意的

标准答案:D

知识点解析:在线性链表中,各元素在存储空间中的位置是任意的,各元素的顺

序也是任意的,依靠指针来实现数据元素的前后件关系。

2、假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

A^log2n

B、n2

C、0(nL5)

D、n(n-l)/2

标准答案:D

知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的

从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-l)/2o

3、在下列几种排序方法中,要求内存量最大的是o

A、插入排序

B、选择排序

C、快速排序

D、归并排序

标准答案:8

知识点解析:快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两

部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分

记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中

的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基

本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的前面(这是它

应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将

两个或两个以上的有序表组合成一个新的有序表。

4、下列程序的输出结果是_____o#include<stdio.h>main(){inti,j,k,a=3,

b=2;i=(—a==b++)?—a;++b;j=a++;k=b:printf("i=%d,j=%d,k=%d\n",i,

j,k);}

A、i=2,j=l,k=3

B、i=l,j=l,k=2

C、i=4,j=2,k=4

D、i=Lj=Lk=3

标准答案:8

知识点解析:暂无解析

5、在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的

阶段是o

A、概要设计

B、详细设计

C、可行性分析

D、需求分析

标准答案:8

知识点器析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准

确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。

6、在面向对象的程序设计中,能表示类之间相似性质的机制是()。

A、继承

B、封装

C、分类

D、动态连接

标准答案:1

知识点解析:在面向对象的程序设计中,继承是表示类之间相似性的机制。

7、结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。

A、对象

B、数据结构

C、数据流

D、目标

标准答案:4

知识点解析:结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、

逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的

逻辑模型。

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

A、关系运算

B、谓词运算

C、集合运算

D、代数运算

标准答案:4

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

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

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

9、能将高级语言编写的源程序转换为目标程序的软件是

A、汇编程序

B、编辑程序

C、解释程序

D、编译程序

标准答案:D

知识点解析:此题考查考生对几个常用术语的理解。汇编程序是把用汇编语言编写

的程序翻译成二进制目标程序:编辑程序是对源程序进行输入、修改的过程,解释

程序逐语句执行,但不生成目标程序。只有编译程序是把高级语言编写的源程序转

换为目标程序。

10、从Windows环境进入MS—DOS方式后,返回Windows环境的DOS命令为

A、EXIT

B、QUIT

C、RET

D、MSDOS

标准答案:A

知识点解析:从Window*环境进入MS-DOS方式后.要想返|口|Window*环境,可

使用EXIT命令。

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

分。)

11、若有下列定义(设int类型变量占2个字节):floatx=123.4567;则下列语句:

printf("x=%5.2r,x);输出的结果是()。

A、x=123.46

B、123.4567

C、x=123.4567

D、123.46

标准答案:A

知识点解析:本题考查prinlf函数的格式。“%5.2f格式符中的“「表示以带小数点

的形式输出单精度或者双精度数;“5”表示指定数据输出宽度为5;“2”表示指定输

出数据小数位占两位数,并对截去的第一位小数做四舍五入处理。

12、已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;double

x=1.42;则以下不符合C语言语法的表达式是

A、x%(-3)

B、Wd+=-2

C、k=(a=2,b=3,a+

D、a+=9-=(b=4)*(a=3)

标准答案:A

知识点解析:“%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项A)中

的x是double型数据。

13、若二维数组a有m列,则在前的元素个数为()。

A、j*m+i

BNi*m+j

C、j*m+i+l

D、i*m+j+l

标准答案:B

知识点解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的

元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有

i*m个元枣,数组第二维的下标是j,说明它前面还有j歹U,有j个元素,所以共有

i*m+j个元素。

14、下述语句中,在字符串si和s2相等时显示“theyareEqual”的是()。

A、if(*sl==*s2)putsC'thcyarcEqual");

B、if(!strcmp(sl,s2))puts(44theyareEquaP,);

C^if(sl==s2)puts(4ttheyareEqual");

D>if(strcmp(sl,s2))puts(4tthcyarcEqual");

标准答案:B

知识点解析:字符串比较不能用“==",要用stremp®,s2)函数,字符串si和s2

相等时返回值为0,故!strcmp(sl,s2)==l,条件成立执行后面的语句,输出they

arcEquak

A

15、对下列二叉树进行中序遍历的结果是()。GH

A、ABCDEFGH

B、ABDGEHCF

C、GDBEHACF

D、GDHEBFCA

标准答案:C

知识点解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3

种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根一

按前序遍历左子树T按前序遍历右子树。②中序,按中序遍历左子树一访问根T

按中序遍历右子树。③后序,按后序遍历左子树一按后序遍历右子树—访问根。

所以对该二叉树的中序遍历结果为GDBEHACFo

16、下列程序执行后的输出结果是()。voidfune(int*a,intb[]){b[0]=*a+b;)

rnain(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);)

6

B、7

C、8

D、9

标准答案:A

知识点解析:本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因

此当执行完调用函数后,b[0]的值为8

17、有以卜程序main(){inti;for(i=0;i<3;i++)switch(i){case0:prinft("%d",i);case

2:prinft("%dn,i);default:prinft("%dM,i);))程序运行后的输出结果是

A、22111

B、21021

C、122

D、12

标准答案:4

知识点解析:本题考核的知识点是for循环和switch语句的混合应用。程序中for

循环了三次,第一次i=0,执行switch语句中case。:分支,直到遇到default语

句,退出swilch,这里共执行?三个输出语句分别输出0,0,0,第二次循环汩,

switch语句中没有匹配的分支,故只执行default语句输出1,退出switch语句:第

三此循环i=2,从switch语句中的case2:开始执行,共执行了两个输出语句输出

2、2o最后输出的结果为000122.所以,4个选项中选项C符合题意。

18、下面程序的执行结果是omain(){charstr||="querl?",*p=str;

while(putchar(*p++)!=,?5);}

A、quert

B>Rvfsu

C、quert?

D、rvfsu?

标准答案:4

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

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

19、有下列程序:#include<stdio.h>main(){inta=6,b=7,m=l;switch(a%2i

{case0:m++;break:case1:m++;switch(b%2){defaut:m++:caseO:

m++;break;))printf("%d\n",m);}程序运行后的输出结果是()。

A、I

B、2

C、3

D、4

标准答案:2

知火点解析:本题考查switch语句。笫一个switch语句,囚为a=6,a%2=0,所以

执行caseO.将m加1,遇到break语句跳出switch语句,结束循环。

20、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选

项含义不同,这个选项是O

A、k%2

B、k%2==l

C、(k%2)!=0

D、!k%2==l

标准答案:D

知识点解析:本题选项A、B、C中表达式用作if语句表达式时,其值一致,即判

断k的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项D的表达式

“!k%2=l”相当于"!(k%2)=l,若k的值为奇数,则此表达式的值为假。

21、已知字母A的ASCII代码值为65,若变量kk为char型,下列不能正确判断

出比中的值为大写字母的表达式是()。

A、kk>='A'&&kkV='Z'

B、!(kk>=,A,IIkkV=Z)

C、(kk+32)>=H&&(kk+32)V=,z'

D、isalpha(kk)&&(kk<91)

标准答案:B

知识点解析:选项A)用逻辑与运算符来连接关系表达式,A,〈二kk和kk<=,Z\以

此来判断kk的字母是否是大写字母。选项C)用逻辑与运算符来连接关系表达式

(kk+32)>=,a,fD(kk+32)<=,z\以此来判断kk的字母是否是大写字母。选项D)调

用函数isalpha。,首先判断kk是否为字母,接着通过与运算(kk<=91)来判断比是

否为大写字母;而选项B)中首先判断语句(kk>=")假如为真时,就不进行(kk

V='Z。的判断,直接进入非运算,故不能正确判断kk是否为大写字母,故选项B)

符合题意。

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

分。)

22、以下能正确定义一维数组的选项是o

A、intnum[];

B、#dcfineN100intnum[N];

C、intnum[0..100];

D>intN=100:intnum[N];

标准答案:B

知识点解析:C语言不允许对数组进行动态定义,先项D错误;选项A没有指定

数组元素的个数:选项C中定义格式错误;正确答案为选项B,其中N是符号常

量。

23、下面程序的输出结果是#include<stdio.h>#include<string.h>main(){char

*pl="abc",*p2="ABC",str[50]=,'xyz";strcpy(str+2,strcat(pl,p2)):

printf("%s\n",str);)

A、xyzabcABC

B、zabcABC

C、xyabcABC

D、yzabcABC

标准答案:C

知识点解析:本题考查的重点是拷贝字符串——使用strcpyO函数,该函数的调用

方式是:strcpy(字符数组,字符串),其中“字符串”可以是字符串常量,也可以是字

符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有

的内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复

制过来的字符串。复制时,连同结束标志'\0'一起复制;②不能用赋值运算符“:”

将一个字符串直接赋值给一个字符数组,只能用st「cpy()函数处理。另外,本题还

考查连接字符串的strcaK)函数,其调用方

24、若执行下面的程序时,从键盘输入5和2,则输出结果是main(){inta,b,k;

scanf(n%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

标准答案:C

知识点解析:本题考查简单的if…else语句。先执行条件if(a〈b),显然不成立,

再执行else语句。

25、下列程序的功能:给「输入数据后计算半径为r的圆面积s。程序在编译时出

错。main()/*Beginning*/{intr;floats;scanf("%d",£r);star*r*r;printf("s

=%f\nH,s);}出错的原因是()。

A、注释语句书写位置错误

B、存放圆半径的变量r不应定义为整型

C、输出语句中格式描述符非法

D、计算圆面积的赋值诺句使用非法变量

标准答案:D

知识点解析:在C语言程序中,可以用一个符号名宋代表一个常量,称为符号常

量。这个符号名必须在程序中进行特别的“指定”,并符合标识符的命令规则。在本

题中圆周率冗是一个符号常量,但在程序中并没有指定其值,所以编译器找不到其

值就会报错。所以选项D)正确。

26>有以卜程序point(char*p){p+=3;}main(){char

b[4]={'a','b'I','d'},*p=b;point(p);printf("%c\n",*p);}程序运行

后的输出结果是______v

A、a

B、b

C、c

D、d

标准答案:A

知识点解析:暂无解析

27、有以下程序main(){inti=l,j=2,k=3;

if(i++==]&&(++j==3||k4.+==3))pfintf("%d%d%d\n”,i,j,k);}程序运行后

的输出结果是______o

A、123

B、234

C、223

D、233

标准答案:D

知识点解析:暂无解析

28、有以卜程序#include#defineN5#defineMN+l#definef(x)(x*M)main(){int

il,i2;il=f(2);i2=f(l+l);printfC%d%d\n",il,i2);}程序的运行结果是

A、1212

BsII7

C、1111

D、127

标准答案:B

知识点解析:根据宏替段的替换规则,我们可

知,f(2)=2*N+l=2*5+l=ll,f(l+l)=l+l*N+l=l+l*5+l=7°

29、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。include<

stdio,h>main()/*Beginning*/{intr;floats;scanff"%d'*»&r);s=*n*r*r;printf^"s

=%f\n”,s);程序在编译时出错,出错的原因是()。

A、注释语句书写位置错误

B、存放圆半径的变量r不应该定义为整型

C、输出语句中格式描述符非法

D、计算圆面积的赋值语句中使用了非法变量

标准答案:8

知识点解析:本题中表达式*FI*r*r非法,且未对变量“做任何定义,所以编译时

会出现非法字符的错误信息。

30、阅读以下函数:fun(char*s1,char*s2){inti=0;

while(s1[i]=s2[i]&&s2[i]!=,\0,)i++;retum(sl[i]=,\0,&&s2[i]=,\0,);}此函数的功

能是()。

A、将s2所指字符串赋给si

B、比较si和s2所指字符串的大小,若si比s2的大,函数值为1,否则函数值为

0

C、比较si和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D、比较si和s2所指字符串的长度,若si比s2的长,函数值为1,否则函数值为

0

标准答案:4

知识点解析:在函数fun()中有两个字符型指针变量si和s2,在函数中程序执行

while循环,该循环退出条件有两个:一个是si[i]!=s2[i](两个字符串不相等):第二

个是sl[i]和s2[i]相等均为“\0”(两个字符串相等)。循环退出后,执行©urn语句,

即两个字符串相等则返回1,不相等则返回0。所以,C选项为所选。

31、下面程序的输出结果是。main(){charstr[10],c=,a,;inti=0;for(;i<

5;i++)Str[i]=c++;printf(”%s",str);}

A、abede

B、a

C、不确定

D、bedef

标准答案:4

知识点解析:字符串少一个结束标志,所以输出的结果不确定。

32、若输入1,2,下列程序的运行结果为o#dsfineSWAP(a,b)t=b;b=a;a=t

main(){inta,b,t;scanf("%d,%d",&a,&b);SWAP(a,b);printf("a=%d,b=%d\nn,

a,b);)

A、a=1,b=2

B、a=2,b=1

C^a=1,b=1

D、a=2,b=2

标准答案:2

知识点解析:暂无解析

33、有如下程序main(){intx=l,a=O,b=O;switch(x){case0:b++;case1:a++;case2:

a++;b++;}printf(,,a=%d,b=%d\n,',a,b);)该程序的输出结果是。

A、a=2,b=l

B、a=l,b=l

C、a=1,b=0

D^a=2,b=2

标准答案:1

知识点解析:在这个switch语句中,因为X的值为1,所以执行easel:后面的

a++,这样a=l。但又由于其下没有break语句,所以其后面的语句“a++;b++”也将

被执行,这样一来,a=2,b=lo

34、有下面程序段#include"stdio.h"#include"string.h"main(){char

a[3][20]={("china"}:{"isa"),{bigcountry!"}};chark[100]={0},*p=k;inti;

for(j=0;j<3;i++){p=strcat(p,a|i|);}i=strlen(p);printf(u%d\nH,i);}则程序段

的输出结果是

A、18

B、19

C、20

D、21

标准答案:2

知识点解析:字符串连接函数strcat的调用形式如下:strcat(sl,s2)。此函数用来

把C所指字符串的内容连接到"所指的字符串后面,并自动覆盖si串末尾的尾

标,函数返回si的地址值。

35、有以下程序:intf(intb[][4]){intij,s=0;for(j=0;i<4;i++){i=j;if(i>2)i=3-j;

s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4,},{0,2,4,6),{3,6,9,12),(3,2,1,0));

printf("%d\n",f(a));}执行后的输出结果是()°

A、12

B、11

C、18

D、16

标准答案:8

知识点解析:在主函数中首先定义了一个4行4列的二维数组a,并用该数组的数

组名作为实参调用函数f()。函数f()中的for循环作用,是将数组前3行中的对角

线上的元素,即b[0][0]、b[l][l].b⑵⑵和第一行的第四列元素即b[0][3]累加到变

量s中,s=a⑼⑼+a[l][l]+a⑵⑵+a⑼[3曰+2+9+4=16。然后将s的值返回在主函

数中输出。

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

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

A、if(sl>s2)S;

BNif(strcmp(sl,s2))S;

C、if(strcmp(s2,s1)>0)S;

D、if(strcmp(s1,82)>0)S;

标准答案:X

知识点解析:在C语言中字符串的比较用stremp()函数,该函数有两个参数,分别

为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,若小

于返回值小于0,相等返回值为0。字符串比较大小的标准是从第一个字符开始依

次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符中,女B

果遇到某一个字符小,该字符所在的字符串就是较小的字符串。本题中要求当si

所指字符串大于s2所指串时,执行语句s,因此应该为stremp(sl,s2)>0或者

strcmp(s2,si)VO。

37,字符串,N\"ABCDEF\"\\”的长度是()。

A、15

B、10

C、7

D、8

标准答案:2

知识点解析:本题涉及字符串最基本的2个概念:①字符串的长度是指字符串中

字符的个数,但不包括字符串结束符;②以反斜杠开头的特殊字符序列,意思

是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符

串长度之内,连同后面的字符为一个长度.

38、若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组

元素的地址为()。

A、334H

B、30DH

C、352H

D、31AH

标准答案:4

知识点解析:解答本题,首先要明白在对指针进行加,减运算的时候,数字“1”不

是十进制的数“1”,而是指“1”个存储单元长度,而1个存储单元长度占多少存储空

间,应该视具体情况而定。如果基本类型是im型,移动1个存储单元的长度就是

位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个

字节。所以p+13所指向的数组元素的地址为:300H+(13*4)H=352H。

39、在C语言中,函数返回值的类型最终取决于()。

A、函数定义时在函数首部所说明的函数类型

B、return语句中表达式值的类型

C、调用函数时主调函数所传递的实参类型

D、函数定义时形参的类型

标准答案:1

知识点解析:在C语言中,应当在定义函数时指定函数值的类型.凡不加类型说

明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return

语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一

致,则以函数值的类型为准,由系统自动进行转换。即函数类型决定返回值的类

型。

40、有以下程序:#include<stdiO.h>main(){FILE*fp;int

i=20,j=50,k,n;fp二fopen(”dl.dat","WH);fprintf(fp,

i);fprintf(fp,n%d\n",j):fclose(fp);fp=fopen("dl.dat",T',);

fscanf(fp,"%d%d",&k,&n);prinlf("%d%d\n",k,n);

fclose(fp);)程序运行后的输出结果是

A、2030

B、2050

C、3050

D、3020

标准答案:B

知识点解析:本题首先通过函数fprinlf()将变量i,j的值输出到已打开的dl.dal

文件中,再由函数fscanf()从dl.dat中读取i,j的值到k,I】。

41有以下程序voidf(intb[]){inti;

for(i=2;i<6:i++)b[i]*=2;)main(){int

a[10]={l.2.3.4.5.6.7,8.9.10).i;f(a):

for(i=0;i<10,i++)printf(”%d,n,a|i]);)程序运行后的输出结

果是

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

B、1,2,6,8,10,12,7,8,9,10,

C、1,2,3,4,10,12,14,16,9,10,

D、1,2,6,8,10,12,14,16,9,10,

标准答案:B

知识点解析:在main。中,f(a)语句的作用是对数组a[10]中从a[2]到a[5]的各个数

字乘以2,所以数组a"01中的数字就变成了“,2,6,8,10,12,7,8,9,

10),最后在屏幕上输出。

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

分。)

42、在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信

息。常见的数据模型有3种,它们分别是层次模型、网状模型和。

标准答案:关系模型

知识点解析:在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数

据和信息。通俗地讲,数据模型就是现实世界的反映,它分为两个阶段:把现实世

界中的客观对象抽象为概念模型;把概念模型转换为某一DBMs支持的数据模

型。常见的数据模型有3种,它们分别是层次模型、网状模型和关系模型。

43、在面向对象方法中,类之间共享属性和操作的机制称为【】。

标准答案:分类性

知识点。析:在面向对象方法中,类是具有共同属性、共同方法的对象的集合。所

以,类是对象的抽象,它描述了属于该对象类型的所有对象的性质。而一个具体的

对象则是其对应类的一个实例。由此可知,类是关于对象性质的描述,它包括一组

数据属性和在数据上的一组合法操作。类之间这种共享属性和操作的机制称为分类

性。

44、一个模块直接访问另一个模块的内容,称为【】藕合。

标准答案:内容

知识点解析:暂无解析

45、软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

标准答案:结构

知识点解析:路径测试是白盒测试方法中的一种,它要求对程序中的每条路径最少

检查一次,目的是对软件的结构进行测试。

46、算法复杂度主要包括时间复杂度和【】复杂度。

标准答案:空间

知识点解析:程序在计算机上运行时所耗费的时间由下列因素所决定:程序运行时

所需输入的数据总量,对源程序进行编译所需时间,计算机执行每条指令所需时

间,程序中的指令重复执行的次数。前一条取决于实现算法的计算机欺、硬件系

统,习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法的

时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。

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

47、下列程序的运行结果是o#include<stdio.h>longfunc(intx){longp;

if(x==OIIx==l)return(l);p=x*func(x-l);retum(p);}main(){printf(,,%d\n",fiinc(4));}

标准答案:24

知识点解析:本题考查函数的循环调用。p=x*func(x-l),当x=4时,不满足if语句

的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),

func(2)=2*func(l),x=l满足条件rcturn(l),则输出结果为4*3*2*1-24。

48、在两种基本测试方法中,()测试的原则之一是保证所测模块中每一个独立路径

至少执行一次。

标准答案:白盒

知识点解析:按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证

所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至

少执行一次:保证所测试模块每一循环都在边界条件和一般条件下至少各执行一

次;验证所有内部数据结构的有效性。

49、下列程序的功能是将输入的正整数按逆序输出。例如,若输入135,则输入

531,请填空。#includcmain(){intn,s;printf("Hntcranumber:");scant(u%

d",&n):printf("Output:");do{s=n%10;printf("%d">s);;}

while(n!=0);printf(H\n");}

标准答案:n/=10或n=n/10。

知识点解析:在主函数的每次循环中变量s=n%10,所以变量s的值是n的个位上

的数字,每次将其输出。在空白处填写n/10或n==n/10,就是每次循环时,将

n的值缩小10倍,这样直到n的值等于。时,就完成数字n的逆序输出。

50、设有定义"struct{inta;floatb;charc;}abc,*p_abc=&abc;",则对结构体成员a的

引用方法可以是abc.a和p_abc[]a»

标准答案:,

知识点解析:若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用

变量abc成员a的标记形式有abc.a和p_abc->ao

51、mysulen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填

空。intmystrlen(Char*slr){inti;for{i=0;!='\0';i++);return();)

标准答案:*(srt+i)或str[i]i

知识点解析:求str指向的字符串长度的算法是:用•个变量i表示字符串中字符

的位置,一开始赋值为0,取出i位置的字符,判断是否为“\0”,若不是则i的值加

1,如此循环直到取出的字符是为止,此时i的值就是字符串的长度。由此可

知,第一个空处应填第i位置上的字符*(st「+i);第二个空格应该填字符串的长度

52、若有以下函数定义,函数返回值的类型是【】。fun(doubleA){return

a*a*a;)

标准答案:im类型

知识点解析:暂无解析

53、设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出

fun函数的首部[]。要求形参名为b。main(){doubles[10][22];intn;

fun(s);}

标准答案:voidfun(doubleb|IO]|22])

知识点解析:本题答案:voidfun(doubleb|10][22])o

54、设有以下变量定义,并已赋确定的值,charw;intx;floaty;doubleZ;则表

达式:w*x+z-y所求得的数据类型为上【】。

标准答案:double型或双精度型

知识点解析:①先进行w*x的运算,先将字符型w转换成整型,运算结果为整

型;②再将w*x的结果与z相加,要先将第一步的整型转换为double型,运算结

果为double型;③最后将w*x+z的结果与y相减,要先将float型y转换成double

型,结果为double型。

55、下面rotate函数的功能是:将n行n列的矩阵A转置未AT,例如:

123415913

5678261014

当4:,则AT=

9101112371115

13141516481216

请填空#defincN4void

rotate(inta[][]){inti,j,t;for(i=0;i<N;i++)for(j=0;[];j++){t=a[i][j];[];

a[j|[i]=l;}}

标准答案:j<=ia[i][j]=aU][i]

知识点解析:将矩阵转置就是将行列互换,所以第一处应填jV=i,第二处应填

56、下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不

变,请填空。#include<stdio.h>main(){chara[]=nlabchmfye,',t;inti,j;for(i=0;i<

7;i+=2)for(j=i+2;j<9;[])if([]){t=a[i];a[i]=a[j];a[j]=ty+4-;}puts(a);

printfCXn");)

标准答案:j++a[i]>a[j]^a[j]<a[i]

知识点解析:题目要求排序的元素是下标值为偶数的元素,外循环循环4次,i的

值分别为0、2、4、6,所以内循环也循环4次,iE勺值就应为2、4、6、8,在循环

体中已经有了对j加1的操作,因此for后括号中的语句应再对j加1,保讦下标为

偶数。if语句的功能是如果后一个数比前一个数小则交换位置。

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

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

10分。)

1、算法的空间复杂度是指

A、算法程序的长度

B、算法程序中的指令条数

C、执行算法程序所占的存储空间

D、算法执行过程中所需要的存储空间

标准答案:8

知识点解析:算法的空间复杂度一般是指这个算法执行时所需耍的内存空间,其中

包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所

需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据

结构所需要的附加存储空间。

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

A、随机结构

B、顺序结构

C、索引结构

D、散列结构

标准答案:2

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

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

顺序存储。

3、设有下列二叉树:对此二义树先序遍历的结果是

A、ABCDEF

B、DBEAFC

C、ABDECF

D、DEBFCA

标准答案:4

知识点解析:二义树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍

历;遍历顺序应该为:访问根结点■,先序遍历左子树->先序遍历右子树。按照定

义,先序遍历序列是ABDECF。

4、编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风

格,在书写功能性注释时应考虑

A、仅为整个程序作注释

B、仅为每个模块作注释

C、为程序段作注释

D、为每个语句作注释

标准答案:

知识之解析4:功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在

做什么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程

序段做注释,而不是每条语句。

5、下列哪个面向对象程序设计不同于其他语言的主要特点

A、继承性

B、消息传递

C、多态性

D、静态联编

标准答案:1

知识点解析:继承是一个子类直接使用父类的所有属性和方法。它可以减少相似的

类的重复说明,从而体现出一般性与特殊性的原则,这使得面向对象程序设计语言

有了良好的重用性,也是其不同于其他语言的主要特点。

6、需求分析最终结果是产生

A、项目开发计划

B、需求规格说明书

C、设计说明书

D、可行性分析报告

标准答案:2

知识点解析:需求分析应交付的主要文档就是需求规格说明书。

7、在进行单元测试时,常用的方法是

A、采用白盒测试,辅之以黑盒测试

B、采用黑盒测试,辅之以白盒测试

C、只使用白盒测试

D、只使用黑盒测试

标准答案:1

知识点解析:白盒测试是测试程序内部逻辑结构,黑盒测试只依据程序的需求规格

说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻转结构对系统进

行测试才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以

白盒测试为主,而黑盒测试为辅。

8、数据库是0的集合,它具有统一的结构格式并存放于统一的存储介质,可被各

个应用程序所共享

A、视图

B、消息

C、数据

D、关系

标准答案:4

知识点解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放

的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。

9、下列叙述中,不正确的是

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

B、数据库系统中,数据的物理结构必须与逻辑结构一致

C、数据库设计是指设计一个能满足用户要求,性能良好的数据库

D、数据库系统是一个独立的系统,但是需要操作系统的支持

标准答案:2

知识点解析:数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一

个。

10、规范化理论中,分解()是消除其中多余的数据相关性

A、关系运算

B、内模式

C、外模式

D、视图

标准答案:I

知识点解析:数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本

思想是通过分解关系运算来消除多余的数据相关性。

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

分。)

11、以下叙述中正确的是

A、构成C语言程序的基本单位是函数

B、可以在一个函数中定义另一个函数

C、main。函数必须放在其他函数之前

D、所有被调用的函数一定要在调用之前进行定义

标准答案:1

知识点解析:根据函数的定义语法规定,在C语言程序中,不能嵌套定义,即不

能在函数中再定义函数;main。函数在C语言程序中是必须的,但函数可以放在程

序中的任意位置;当在所有函数的外部、被调用之前说明函数时,在函数说明后面

的任何位置上都可以对函数进行调用。函数说明也可以放在调用函数的说明部分,

如在main函数内部进行说明,则只能在main函数内部才能识别函数。

12、以下选项中合法的实型常数是

A、5E2.0

B、E-3

C、2.00E+00

D、I.3E

标准答案:4

知识点解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。1)

一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有

小数点)。2)指数形式的小数:指数形式的实数由尾数部分、e(E)和指数部分组成

(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。选项A中,

5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字;选项D中,E后面

没有数字。

13、以下选项中合法的用户标识符是

A、long

B、_2Test

C、3Dmax

D、A.dat

标准答案:2

知识点.析:在C语言中,合法的标识符由字母、数字和下划线组成,并且第一

个字符必须为字母或者下划线,long为C语言的保留字,不能作为用户标识符。

3Dmax开头的第一个字符为数字,而C语言规定,第一个字符必须为字母或者下

划线;A.dat中的字符“『不符合C语言中用户标识符规定。

14、已知大写字母A的ASCII码值是65,小写字母a的ASCH码是97,则用八进

制表示的字符常量201'是

A、字符A

B、字符a

C、字符e

D、非法的常量

标准答案:1

知识点解析:题目中的关键是八进制101的十进制是多少。八进制的101转换为十

进制为65.也就是字符A的ASCII®„

15、以下非法的赋值语句是

A、n=(i=2,++i);

B、j++;

C、++(i+l);

D、x=j>0;

标准答案:4

知识点解析:在表达式的运算中,双目赋值运算符的格式为“变量二表达式“,单目

运算符一般形式为“运算符表达式”或“表达式运算符常量和表达式是不能被赋值

的。选项A为夏合表达式,首先计算(i=2,++i)的值,然后赋值给n;选项B为简

单自加运算;选项C在表达式++(i+l);中,(i+1)不是变量,该表达式的值为常

量,而在++运算中,其运算对象必须为变量;选项D中为复合赋值表达式。

16、设a和b均为double型变量,且a=5.5、b=25则表达式(int)a+b/b的值是

A、6.5

B、6

C、5.5

D、6

标准答案:8

知识点解析:在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是

5,其次是b/b,即2.5/25结果是1.000000,最后相加结果为6.000000(表达式的

最终结果为实型)。

17、已知i、j、k为int型变量,若从键盘输入:1,2,3〈回车〉,使i的值为1、

j的值为2、k的值为3,以下选项中正确的输入语句是

A、scanfC%2d%2d%2d\&i,&j,&k);

B、scanfT%d%d%d“,&i,&j,&k);

C、scant("%d,%d,%d”,&i,&j,&k);

D、scanf("i=%d,j=%d,k=%d,\&i,&j,&k);

标准答案:4

知识点解析:输入函数scanf使用该语句时,要求除格式控制符以外的字符都要原

样输入,”为非格式符,要原样输入。选项A,输入格式描述为

“%2d%2d%2d1输入要用空格隔开,不满足键盘输入1,2,3的条件;选项B

中,输入格式描述符为“%d%。d%d",输入也要用空格隔开;选项D中,输入格

式描述符为“i=%d,j=%d,k=%d",应该从键盘输入i=l,j=2,k=3,才能使得i,

j,k的值为1,2,3。

3x"

18、与数学式子n应的C语言表达式是

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

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)计算,pow(x,n)的参

数写反了。

19、设有定义:longx=-123456L:,则以下能够正确输出变量x值的语句是

A、printf("x=%d\n",x);

B、print^4x=%ld\nM,x);

C>printf(<tx=%8dL\n,\x);

D、pfint可“x=%LD\n”,x);

标准答案:2

知识点解析:x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是

“%ld”;由于C语言中是区分大小写的,“Id”中的“d”不能为大写。

20、若有以卜程序:main()(inik=2,i=2,m;m=(k+=i*=k);

printf(u%d,%d\n”,m,i);}执行后的输出结果是

A、8,6

B、8,3

C、6,4

D、7,4

标准答案:4

知识点解析:在复合赋值语句中,应该由右向左依次赋值,在表达式中,右端由

i*=k得i=2*2为4,k=k+i»即k值为6,m=k故m=6o

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

分。)

21、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7>d=8、m=2、n=2,

则运算后,n的值为o

A、0

B、1

C、2

D、3

标准答案:1

知识点解析:C语言中比较表式的运算结果为0或1。0代表不成立,1表示成立。

22、以下程序的输出结果是omain(){intnum=0;while(num<=2)

{num++;printf(,'%d\n,',num);)}

标准答案:2

知识点露析:while的执行过程是:先计算条件表达式的值,若成立则执行循环

体,重复上述过程,直到条件表达式的值为“假"(值为零)时,退出循环,并转下一

语句去执行。本题在输出num的值为3之后,再判断while的循环条件3不

成立,所以不再输出num的值,故本题的答案选B。

23、下面的关键字中,不能够从循环体中跳到循环体外的是。

A、goto

B、break

C、return

D、continue

标准答案:2

知识点解析:在C语言中,可以用break语句和continue语句跳出本层循环和结束

本次循环。gol。语句可跳出多层循环,如果在函数的循环体内使用reiurn语句,就

会直接结束循环返回函数值。

24、以下各选项企图说明一种新的类型名,其中正确的是。

A、typedefvlint;

typedefv2=int

C、typedefintv3;

D、typedefv4:int

标准答案:4

知识点解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数

据类型取个别名。

25、为了避免嵌套的if-else的二义性,C语言规定:else与配对。

A、缩排位置相同的计

B、其之前最近的if

C、其之后最近的if

D、同一行上的if

标准答案:2

知识点解析:在if语句中又包含一个或多个if语句称为if语句的嵌套。应当注意

if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未

曾配对的)if配对。

26,在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是

Vo

A、地址传递

B、单向值传递

C、由实参传给形,再由形参传回实参

D、传递方式由用户指定

标准答案:2

知识点解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指

将实参的值复制一份传潴给形参,而传址方式是指将实参的变量地址传递给形参,

也就是实参的引用c

27、以下函数值的类型是。fun(floatx){floaty;y=3*x-4;returny;)

A、int

不确定

C、void

D、float

标准答案:1

知识点解析:C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,

函数的类型就是函数返回值的类型。

28、以下选项中,非法的字符常量是o

A、

B、27'

C、\n

D、,\xaa,

标准答案:4

知识之解析:C语言中字符常量是以单引号括起来的单个字符,或为以与三位

八进制数或两位十六进制数值代替单个字符。

29、以下程序的输出结果是o#include<stdio>main(){inta=200;#define

a100printf("%d",a);#undefaprintf("%d",a);}

A、200100

B、100100

C、100200

D、200200

标准答案:4

知识点解析:#deflnc宏名的有效范围为定义命令之后到本源文件结束,可以在程

序中使用#undef命令终上宏定义的作用域。本题由于#undef的作用,使a的作用范

围在#definea100到#undefa之间,故答案为Co

30、若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是o

A、i=*p;

B、*p=&j:

C、i=&j;

D、i=**p;

标准答案:2

知识点解析:指针是一种用宋存放变量地址的特殊变量。本题中指针变量p用于存

放整型变量i的地址,改变*p的值即为改变i的值。又因为和“*”两个运算符的

优先级别相同,按自右而左的方向结合,所以*&j运算,得j的地址,再进行*运

算,取所得地址里面的值,故*&j与i等价。

31、假定int类型变量占用两个字节,若有定义:imx[10]={0,2,4);,贝数组x在

内存中所占字节数是o

A、3

B、6

C、10

D、20

标准答案:8

知识点解析:当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。

因此,本题中数组x(10)不论是否为其元索初始化,它所分配的存储空间仍为

2*10=20个字节。

32、执行以下的程序段后,m的值是ointa[2][3]={{(l,2,3),{4,5,6))

intm,*p;p=aa[0][0];m=p[4];

A、4

B、5

C、3

D^不确定

标准答案:2

知识点解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型

数组a的首元素的地址1p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a

是一个2*3的二维数组,其第四个元素为即5。

33、以下程序的输出结果是omain(){inti,a[10];for(i=9;i>=0;i-

-)a[i]=10-i;prin

温馨提示

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

评论

0/150

提交评论