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

下载本文档

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

文档简介

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

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

10分。)

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

A、快速排序

B、冒泡排序

C、直接插入排序

D、堆排序

标准答案:D

知识点解析:在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数

都为n(n-l)/2,堆排序需要的比较次数为nlog2no

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

A、125

B、n/2

C、n

D、n+1

标准答案:C

知识2解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与

表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最

坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将

这个元素与表中的所有元素进行比较,因此比较次数为no

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

A、对象

B、数据结构

C、数据流

D、目标

标准答案:C

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

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

逻辑模型。

HC

D

4、有下列二叉树,对此二叉树前序遍历的结果为()。巴

A、ACBEDGFH

B、ABDGCEHF

C、HGFEDCBA

D、ABCDEFGH

标准答案:B

知识点解析:对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访

问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子

树。

5、相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和

A、可重用性差

B、安全性差

C、非持久性

D、冗余性

标准答案:D

知识点解析:本题考查文件系统和数据库系统的区别。文件系统所管理的数据文件

基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在

3个缺点,即数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依

赖)。

6、数据处理的最小单位是()。

A、数据

B、数据元素

C、数据项

D、数据结构

标准答案:4

知识点解析:数据处理的最小单位是数据项。由若干数据项组成数据元素,而数据

是指能够被计算机识别、存储和加工处理的信息载体,数据结构是指数据之间的相

互关系和数据运算。故正确答案为选项C)。

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

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

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

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

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

标准答案:8

知识点解析:软件需求规格说明书(SRS,SoftwareRequiremenlSpecification)是需求

分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用:

①便于用户、开发人员相互理解和交流。②反映用户问题的结构,可以作为软件

开发工作的基础和依据。③作为确认测试和验收的依据。

8、为了提高测试的效率,应该

A、随机选取测试数据

B、取一切可能的输入数据作为测试数据

C、在完成编码以后制定软件的测试计划

D、集中对付那些错误群集的程序

标准答案:8

知识点。析:测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率

与该程序中已发现的错误数成正比。这一现象说明,为了提高测试效率,测试人员

应该集中对付那些错误群集的程序。

9、设栈S的初始状态为空。元素a、b、c、d、e、f依次通过栈S,若出栈的顺序

为b、d、c、f、e、a,则栈S的容量至少应该为()。

A、3

B、4

C、5

D、6

标准答案:1

知识点解析:根据条件,可做如下操作:①a、b进栈,栈中有a和b两个元素;

②b出栈,c、d进栈,栈中有a、c、d这3个元素;③d、c出栈,e>f进栈,栈

中有a、e、f这3个元素:④元素f、e、a出栈,枝为空。由此可见,进栈顺序为

a、b、c、d、e、f,出校顺序为b、d、c、f、e、a,满足题目要求。每次进栈操作

后,栈中最多有3个元素,所以,为了顺利完成这些操作,栈的容量应至少为3。

10、在软件开发中,需求分析阶段产生的主要文档是

A、软件集成测试计划

B、软件详细设计说明书

C、用户手册

D、软件需求规格说明书

标准答案:D

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

要文档之一。

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

分。)

11、下列能正确定义一维数组的选项是()。

A、4,3,7

B、3,4,7

C、5,2,7

D、2,5,7

标准答案:A

知识点解析:根据函数intfl(intx,inty){returnx>y?x:y;}和intf2(intx,inty){return

x)>?y:x;}的定义可知,如果x>y成立,则函数fl返回x的值,函数C2返回y的

值。所以fl(a,b)=4,fl(c,d)=5,f2(a,b)=3,f2(c,d)=2,故

e=f2(4,5),f=fl(3,2)=3,g=4+3+5+2-4-3=7o

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

A、控制流

B、数据流

C、模块调用

D、事件驱动

标准答案:B

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

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

13>以下程序的输出结果是omain()(inti,j,x=0;for(i=0;iV2;i++)

{x++;for(j=0;j<3;j++){if(j%2)continue;x++;}x++;)printf("x=%d\n",

x);}

A、x=4

B、x=8

C、x=6

D、x=12

标准答案:2

知识点解析:暂无解析

14、现在有以下定义,inta;doubleb;floatc;chark;则下面的表达式a/b+c-k值

的类型为:

A、int

double

C、float

D^char

标准答案:2

知识点解析:双目运算中两边运算量类型转换规律:运算数1运算数2转换绢果

类型短整型长整型短整型->长整型整型长整型整型->长整型字符型整型字符

型->整型有符号整型无符号整型有符号整型->无符号整型整型浮点型整型->浮

点型在a/b的时候,a,b的类型不一致,根据类型转换规则,把整型转换成

double类型,之后的加,减类似。转化规则为char.

short—►int—>unsigned—>long—>double<—float

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

A、C语言中既有逻辑类型也有集合类型

B、C语言中没有逻辑类型但有集合类型

C、C语言中有逻辑类型但没有集合类型

D、C语言中既没有逻辑类型也没有集合类型

标准答案:8

知识点解析:在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选

项C不正确:C语言中没有集合类型,故选项B不正确。所以,D选项为所选。

16、字符串"\\\'abcd\123\xAB\t”的长度是()。

A、8

B、17

C、9

D、10

标准答案:4

知识点解析:本题中的字符串出现了5个转义字符\\、\\\\123、\xAB、\t和4个

字符,a,、,b,、\T,所以字符串的长度是9,选项C符合题意。

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

()o

A、不定值

B、4

C、3

D、1

标准答案:4

知识点解析:在||运算中,当第一个表达式的值为真时,第二个表达式将不再运

算。由于在表达式i=++i||++y;中,I的值为非0,即第一个表达式的值为真,第二

个表达式将不再运算,所以y的值没有变化,仍然为3c所以.4个选项中选项C

符合题意。

18、静态测试是一种重要的测试方式,可以发现30%到70%的逻辑设计和编码错

误。下面()不属于静态测试?

A、白盒测试

B、代码检查

C^代码质量度量

D、静态分析

标准答案:1

知识点解析:暂无解析

19、假定w、x、y>m均为int型变量,则执行下列的语句后,m的值是()。

w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

A、3

B、4

C、5

D、6

标准答案:1

知识点解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值,

当a为假时,其值等于表达式c的值。第一个表达式:w=6Vx=4为假,所以返回

x的值,即m=x=4;第二个表达式:m=4Vy=3为假,所以返回y的值,即

m=y=3o

2。、若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c

<d?c:d的值是()。

A、1

B、2

C、3

D、4

标准答案:1

知识点解析:条件表达式的形式如下:表达式1?表达式2:表达式3,所以本题条

件表达式a<b?a:c<d?c:d应该理解为a<b?a:(c<d?c:d),首先求出条件表达式

c<d?c:d的值等于2,再求条件表达式@<6=匕:2的值,由于a-I<b-4成立,所以

上述条件表达式的值等于lo

21、下列不是合法的C语言语句是()。

A、a=5

B、{inti;i++;)

C、;

D、卜}

标准答案:I

知识点解析:选项A)是一个表达式•它后面没有分号结尾(C语言中规定语句必须

以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是

一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,

也是一个空语句。

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

分。)

22、当用户要求输入的字符串中含有空格时,应使用的输入函数是

A、scanf()

B、getchar()

C、gets()

D、Setc()

标准答案:C

知识点解析:本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,

getchar函数只能输入单个字符,gelc函数是文件操作函数,显然都不符合题意。

通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。

23、设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息

的是()。

A^if(x++);

B、if(x>y&&y!=O);

Cif(x>y)x-elsey++;

D、if(y<0){;)elsex++;

标准答案:C

知识点解析:暂无解析

24>有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=l;i-){for(j=l;j<

=2;j++)printf("%dn,i+j);printf(M\n");}}程序运行的结果是()。

A、234

B、432

C、23

D、4534554334344523

标准答案:D

知识点解析:本题主要考查for循环语句的嵌套。外层主循环执行了3次,嵌套的

循环语句每轮执行2次,每次输出i+j的值,推出嵌套循环语句后换行。

25>若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=

&b;printf("%d,%d\n,',*p,**pp);则输出结果是()。

A、20,10

B、20,20

C、10,20

D、10,10

标准答案:D

知识点解析:本题考查指针变量的赋值。**pp是定义了一个指向指针的指针变

量,语句pp=&p是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内

容,即b的值。

26以下程序的输出结果是omain(){union{inti[2];long

j;charm[4];)r,*s=&r;s->i[0]=0x409;s->i[l]=0x407;

printf("%d\n",s->m[0]);)

A、9

B、49

C、7

D、47

标准答案:A

知识点解析:暂无解析

27、有以下程序:#inchide<stdio.h>floatfl(floatn){returnn*n;}floatf2(float

n){return2*n;)main(){float(*pl)(float),(*p2)(float),(*t)(float),yl,y2;pl=fl;p2=

f2;yl=p2(p1(2.0));t=pl;pl=p2;p2=t;y2=p2(p1(2.0));prinff("%

3.0f,%3.OAn”,yl,y2);}程序运行后的输出结果是()。

A、8,16

B、8,8

C、16,16

D、4,8

标准答案:1

知识点解析:程序中定义了三个指向函数的指针变量pl、p2、I,函数返回值均是

float类型。在main函数中,pl指向了函数fl,p2指向了函数f2。语句

yl=p2(p1(2.0));先调用fl函数,将其返回值4.000000传递给f2的形参n,并将其

函数返回值8.000000赋值给yl。然后在main函数中交换pl,p2指针变量的指

向,使pl指向了函数f2,p2指向了函数fl,执行语句y2=p2(pl(2.0));先调用函

数f2,得到返回值4.000000,将其传递给fl函数的形参n,并将返回值16.000000

赋值给y2。在输出yl,y2时,各浮点数占3列,小数位数为0,即输出了:8,

16“

28、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后

两位,并将第三位四舍五入的是()。

A、x=x*100+0.5/100.0;

B、x=(x*100+0.5)/100.0

C、x=(int)(x*100+0.5)/100.0;

D、x=(x/100+0.5)/100.0:

标准答案:4

知识点解析:本题考查实型数据。题目要求保留到小数点后两位,选项A)、B)、

D)都不合要求。在选项C)中,x*100+0.5的作用是将第三位四舍五入,取整后再除

以100.0,即可得符合要求的数据。

29、若以下定义:structlink{intdaia;strucka~变

datanextdatanext

I5|J-------9|\0|

datanext

I7|

量a和b之间已有如下图所示的链表结构:指

针p指向变量a,q指向变量co则能够把c插入到a和b之间并形成新的链表的语

句组是

A^a.next=c;c.next=b:

B、p.ncxt=q;q.next=p.next;

C、p->next=&c;q->next=p->next;

D^(*p).next=q;(*q).next=&b;

标准答案:8

知识点解析:本题考核的知识点是在链表中插入结点的操作。在本题中指针p.指

向变量a,q指向变量c,要把c插入到变量n和变量b之间,就应该首先让出量a

的指针域指向变量c,即(*p).next=q,然后让变量c的指针域指向变量b,即

(*q).next=&b.所以,4个选项中D为所选。

30、以下程序运行后,如果从键盘上输入ABCDEFV回车>,则输出结果为

。#include<stdio.h>#include<string.h>func(charstr[J){intnum=0;

while(*(str+num)!=,\0,)num++;rcturn(num);p}main(){charstr[10],*p=str;

gets(p);printf("%d\nfunc(P));}

A、8

B、7

C、6

D、5

标准答案:4

知识点解析:本题通过函数gels()从键盘接收一个字符串,并通过调用fune()函

数,统计串中字符的个数。

31、下列程序执行后输出的结果是ointd=l;fun(intp){intd=5;d+=p++;

printh("%d,",d);)main()(inta=3;fuin(a);d+=a++;printf(:%d\n'\d);)

A、8,12

B、9,13

C、8,4

D、9,5

标准答案:4

知识点解析:本题执行过程如卜.:首先调用fun函数,使得实参a的值3传递给形

参P,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,

此处的d为全局变量,所以d=l+3=4(由于本题是值传递,所以在函数fun中对p值

的改变并不能引起a的改变),故本题的输出是8,4,

32、下述函数功能是ointfun(char*x){char*y=x;while(*y++);returny-x-

1;)

A、求字符串的长度

B、求字符串存放的位置

C、比较两个字符串的大小

D、将字符串x连接到字符串y后面

标准答案:1

知识点解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到

NULL,最后返回字符串首尾地址的差值,即字符串的长度。

33、阅读以下程序及对程序功能的描述,其中正确的描述是#inc1udeV3dic.h>

main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfile

name:\nn);scanf("%sH,infile);printf("Entertheoutfilename:\n");scanf("%s",

outfile);if((in=fopen(infile,"ru))==NULL){printf(Hcannotopeninfile\n");

exit(O);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");

exit(O);)while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}

A、程序完成将磁盘文件的信息在屏幕上显示的功能

B、程序完成将两个磁盘文件合二为一的功能

C、程序完成将一个磁盘文件复制到另一个磁盘文件中

D、程序完成将两个磁盘文件合并并在屏幕上输出

标准答案:4

知识点解析:本题中,最主要的是掌握几个有关文件的函数的应用。函数名:

fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);

函数名:feof功能:检查文件是否结束调用方式:feof(FILE*fp);函数名:fputc

功能:把一个字符写到磁盘文件上去调用方式:fputc(ch,fp)(ch是要输出的字符,

fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方

式:ch=fgetc(fp)(ch是字符变量,fp是文件指针变量);函数名:fclose功能:关闭

一个文件调用方式:fclose(文件指针)。

34、有以卜程序:main(){intx=0,y=0,i;for(i=l;++i){if(i%2==0){x++;

continue;}if(i%5==O){y++;break;)}printf(n%d,%d'\x,y);}程序的输出结

果是()。

A、2,1

B、2,2

C、2,5

D、5,2

标准答案:1

知识点解析:本题考查了conlinue和break语句用在循环语句中的作用。break语句

的作用是结束本层循环,而continue语句的作用是洁束本次循环直接进入到下次循

环。

35、下面程序的输出结果是omain(){intx=0x48;printf(,,%d\n,,,-x);}

A、48

B、47

C、71

D、72

标准答案:4

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

数71输出。

36、下列程序的输出结果是()。#includc<stdio.h>#include<string.h>main()(char

a[]=',\nl23\\u;printf(H%d,%d\n",strlen(A),sizeof(A));)

A、5,6

B、5,5

C、6,6

D、6,5

标准答案:1

知识点解析:转义字符,’\n,表示换行,’N表示反斜杠,函数slrlen()是计算字符串

的长度,不包括文件结束标志('\0'),函数sizeof()统计字符串所占的字节数。

37、若有定义定*p=a,则p+6表示()。

A、数组元素a[5]的值

B、数组元素a[5]的地址

C、数组元素a[6]的地址

D、数组元素a[0]的值加上5

标准答案:4

知识点解析:指针中存放的是变量的地址,指针也可以进行加减运算,这时指针移

动的最小单位是一个存储单元,而不是一个字节。所以题中p+6指的是将指针向

后移动了6个存储单元,指向a[6],存放的是a[6]的地址。

Ix>0

y=0x=0.

38、有一函数:1-I*以下程序段中不能根据x值正确计算出y值的

A、if(x>O)y=l;elseif(x==0)y=0;elsey=-l;

B、y=0;if(x>O)y=l;elseif(x<O)y=-l;

C^y=0;if(x>=0)if(x>0)y=1;elsey=

-1;

D、if(x>=0)if(x>0)y=1;elsey=0;

elsey=-1;

标准答案:C

知识点解析:暂无解析

39、以下叙述中错误的是

A、二进制文件打开后可以先读文件的木尾,而顺序文件不可以

B、在程序结束时,应当用函数fclose()关闭已打开的文件

C、在利用函数fread()从二进制文件中读数据时,可以用数组名给数组中所有元

素读入数据

D、不可以用FILE定义指向二进制文件的文件指针

标准答案:D

知识点解析:暂无解析

40、若有定义:char*x="abcdefghi";,以下选项中正确运用了strcpy函数的是

A^chary[10];strcpy(y,x[4]);

B、chary|IO|;strcpy(++y,&x|1]);

C、chary[10],*s;strcpy(s=y+5,x);

D、chary[10],*s;strcpy(s=y+l,x+1);

标准答案:D

知识点解析:选项A中x[4]是取字符e,也就是将字符复制到y中,strcpy实现的

是地址的复制所以选项A错误;选项B中++y是错误的,不允许对常量进行自加

运算(y是一个确定的地址值),所以选项B错误;选项C指针变量s指向了y向后

的第5位,则存放x时会出现越界问题,所以选项C错误:选项D中,指针变量,

指向了y向后的第一位,此时s可存放数据的长度为9,而地址“x+1”起的字符串

的地址长度也刚好为9(包括“\0”),所以开始复制不会出现地址越界问题,故选项

D正确。

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

A、gets函数用于从终端读入字符串

getchar函数用于从磁盘文件读入字符

C、fputs函数用于把字符串输出到文件

D、fwrile函数用于以二进制形式输出数据到文件

标准答案:B

知识点解析:本题考查的是输入输出函数的使用,gets和getchar函数用于从标准

输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs用于把字符串输出

到文件,fwrite用于以二进制形式输出数据到文件,故选项B)描述错误。

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

分。)

42、设一棵完全二叉树共有500个结点,则在该二叉树中有个叶子结点。

标准答案:250o

知识点解析:根据二叉树的性质:具有n个结点的完全二叉树,其父结点数为

int(n/2),而叶子结点数等于总结点数减去父结点数。

43、关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、和

自定义完整性。

标准答案:参照完整性

知识点解析:芟系模型的完整性规则包括实体完整性、参照完整性和自定义完整

性。

44、对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移

动元素的个数为【】0

标准答案:n/2

知识点解析:删除一个元素,平均移动的元素个数为(n-l+n-2+…+0)/n=(n-l)/2:插

入一个元素,平均移动元素个数为(n+n-l+n-2+……+1)/n=(n+1)/2;所以总体平均

移动元素个数为n/2。

45、设一棵完全二叉树共有700个结点,则在该二义树中有【】个叶子结点。

标准答案:350

知识点解析:在任意二叉树中,叶子结点总比度为2的结点多一个。在完全二叉树

中,最多有一个度为1的结点。设一棵完全二义树具有n个结点,若n为偶数,则

在该二叉树中有,n/2个叶子结点以及n/2-l个度为2的结点,还有一个是度为1的

结点:若n为奇数,则在该二叉树中有n/2+l个叶子结点以及n/2个度为2的结

点,没有度为1的结点。根据题意,完全二叉树共有700个结点,700是偶数,所

以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有一个是度为1

的结点。所以,本题的正确答案为350。

46、数据流图的类型有【】和事务型。

标准答案:变换型

知识点解析:典型的数据流图有两种,即变换型和事务型。

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

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

至少要执行一次。

标准答案:白盒测试

知识点解析:口盒测试的基本原则:保证所测模块中每一独立路径至少执行一次;

保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界

条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。

48、下列程序的运行结果是。#defineP(A)prinlfC^d\A)main(){int

j,a[]={l,2,3»4,5,6,7},i=5;for(j=3;j>l;j—){switch(j){case1:case2:P(a[i++]);break;

case3:P(a[-i]);}}}

标准答案:55

知识点解析:分析程序执行过程,第一次循环时,i=3,i=5,因为switch。),所以

执行case3,调用P⑹句尸P(a[4J)=P(5),输出5:第二次循环时,j=2,i=4,因为

switch(2),所以执行case2,调用P(a[i++]):P(a[4])=P(5),输出5,之后i自加等于

5o

49、#define命令出现在程序中函数的外面,宏名的有效范围为。

标准答案:从定义到本源文件结束

知识点解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

50、以下程序的运行结果是()。intk=0;voidfun(intm)

{m+=k;k+=m;printf(',m=%d\nk=%d”.m,k++):}main(){inii=4;fun(i++);printf(Hi=%d

k=%d\n",i,k);}

标准答案:m=4k=4i=5k=5

知识点解析:在主函数main()中定义了一个变量i,并赋初值4,调用fun()函数将i

的初值传递给形参m,进行fun。函数后的运算,输出结果为m=4,k=4。将k值输

出后自行增加1,k=5,此时全局变量k的值变为5。主函数中调用fun()函数后,i

再自行增加I,i=5,所以主函数输出的结果为“i=5k=5"。

51、以下程序运行时从键盘输入:1.02.0,输出结果是:1.000000

2.000000,请填空。#includemain()(doublea;floatb:scanf("",

&a,&b);printf(H%f%f\n",a,b);}

标准答案:%lf%f

知识点解析:Double类型输出是用%If,float类型的数据输出用%f。

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

标准答案:3

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

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

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

53、以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;

成员变量link是指向自身结构体的指针,请将定义补充完整。structnode{intinfo;

【1link;);

标准答案:structnode*

知识点解析:本题中的结构类型名为structnode,所以空白处应填:siruclnode*,即定

义一个指向自身的结构体指针。

54、设二进制数A是00101101,若想通过异或运算ab使A的高4位取反,低4位

不变,则二进制数B应是【】。

标准答案:11110(X)0

知识点解析:按位异或运算的一个重要应用是让某个整型变量的二进制位取反,0

变成1,而1变成0。这只要设计这样一个位串信息,让要变反的位为1,不要改

变的位为0,用这个位吕信息与整型变量按位加就能得到希望的结果。要使字节的

高4位取反,低4位不变,则需要位串信息是11110000。

55、在计算机中,字符的比较是对它们的【】进行比较。

标准答案:ASCII码

知识点解析:C语言中,字符也可以进行比较运算,并且是按照其ASCH码值进行

的。

56、语句:x++;、++x;、x=x+l;、x=l+x;,执行后都使变量x中的值增1,请

写出一条同一功能的赋值语句(不得与列举的相同)【】。

标准答案:x+=1:

知识点解析:暂无解析

57^函数fun的功能是计算xndoublefun(doubiex,intn){inti;doubley=l;

for(i=l;i<=n;i++)y=y*x;returny;}主函数中已正确定义m、a、b变量并赋

值,而且调用fun函数计算:m=a4+b4-(a+b)3o实现这一计算的函数调用语句为

(J0

标准答案:m=fun(a,4)+fun(b,4)-fun(a+b,3);

知识点解析:函数fun(x,n)的作用是求x的n次方,因此a的4次方应该调用函数

fun(a,4),b的4次方应该调用函数fun(b,4),a+b的3次方应该调用函数

fun(a+b,3),所以题目中的数学表达式,写成C程序中的语句为m=fun(a,4)+fun(b,

4)-fun(a+b,3)o

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

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

10分。)

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

A、一个算法的空间复杂度大,则其时间复杂度必定大

B、一个算法的空间夏杂度大,则其时间复杂度必定小

C、一个算法的时间复杂度大,则其空间复杂度必定小

D、上述3种说法都不对

标准答案:D

知识点解析:算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的

执行情况,它们之间没有内在联系。

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

A、一个逻辑数据结构只能有一种存储结构

B、逻辑结构属于线性结构,存储结构属于非线性结构

C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效

D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

标准答案:D

知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形

式,一种数据结构可以艰据需要采用不同的存储结构,常用的存储结构有顺序和链

式结构。采用不同的存储结构,其处理的效率是不同的。

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

A、125

B、n/2

C、n

D、n+1

标准答案:C

知识点解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与

表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最

坏的情况下.要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将

这个元素与表中的所有元素进行比较,因此比较次数为no

4、最简单的交换排序方法是()。

A、快速排序

选择排序

C、堆排序

D、冒泡排序

标准答案:D

知识点解析:交换排序方法是指借助数据元素之间的互相交换进行排序的一种方

法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相

邻元素的交换,逐步将线性表变成有序。

5、设计程序时,应采纳的原则之一是()。

A、程序的结构应有助于读者的理解

B、限制GOTO语句的使用

C、减少或取消注释行

D、程序越短越好

标准答案:A

知识点解析:程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理

解。程序滥用GOTO语句,将使程序流程无规律,可读性差:添加注释行有利于

对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短

越好。

6、关于结构化程序设计原则和方法的描述错误的是()。

A、选用的结构只准许有一个入口和一个出口

B、复杂结构应该用嵌套的基本控制结构进行组合成套来实现

C、不允许使用GOTO语句

D、语言中所没有的控制结构,应该采用前后一致的方法来模拟

标准答案:C

知识点解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是

绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。

7、下列特征中不是面向对象方法的主要特征的是()。

A、多态性

B、继承

C、封装性

D、模块化

标准答案:D

知识点解析:面向对象没计方法与面向过程设计方法有本质的不同,其基本原理:

使用现实世界的概念抽象地思考问.题从而自然地解决问题。其特点包括:分类

性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的

特点C

8、在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送

()。

A、调用语句

B、命令

C、口令

D、消息

标准答案:D

知识点解析:在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递

者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处

理.,接受者独立决定采用什么方式完成所需的处理。

9、下列描述错误的是

A、继承分为多重继承和单继承

B、对象之间的通信靠传递消息来实现

C、在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D、类是具有共同属性、共同方法的对象的集合

标准答案:c

知识点。析:对象的封装性是指从外面看只能看到对象的外部特性;而对象的内

部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

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

A、软件交付使用后还需要进行维护

13、软件一旦交付使用就不需要再进行维护

C、软件交付使用后其生命周期就结束

D、软件维护是指修复程序中被破坏的指令

标准答案:A

知识点解析:软件生命周期一般可以分为软件定义、软件开发及软件运行维护3个

阶段。软件交付并投入运行后,需要不断地进行维护,并根据新提出的需求进行必

要而且可能的扩展和删改。

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

分。)

11、下列说法不正确的是()。

A、C语言程序是以函数为基本单位的,整个程序日函数组成

B、C语言程序的一条语句可以写在不同的行上

C、C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少

D、C语言程序的每个语句都以分号结束

标准答案:C

知识点解析:本题涉及C语言的3个基本知识点:①C语言的源程序是由函数构

成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主

函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以

写在不同的行上,或者一行也可以写多条语句;⑧注释行虽然对程序的运行不起

作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释

行还是很有必要的。

12、下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=

(a++)-1;printf(n%d,%d",a,C);c+=-a+++(++B);printf("%d,%d",a,C);}

A、3,14,1

B、3/4,2

C>2,04,1

D、2,14,1

标准答案:A

知识点解析:本题主要考查自加运算符(++、・-)的使用。①前缀变量“++i、-r,在

使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后

缀变量“i++、i-”,用此时的表达式的值参与运算,在使用i之后,再使i的值加1

或者减1。题中计算表达式c=(a++)-l时先使用a的值进行计算,结果为c=2-l=

1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++B)等价

于c=C+(-a++)+(++B),c=1+(-3)+3=1»此时a=4,b=3©

13、若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是()。"=

2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

A、2

B、3

C、5

D、4

标准答案:A

知识点解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值;

当a为假时,其值等于表达式c的值。表达式运算过程:第1个表达式:w=2<x

=3为真,所以返回w的值,即m=w=2;第2个表达式:m=2Vz=5为真,所

以返回m的值,即m=2;第3个表达式:w=2Vy=4为真,所以返回m的值,

即m—2<>

14、若有定义:ima=4,b=5;floatx=3.4,y=2.1;,则下列表达式的值为()。

(float)(a+b)/2+(int)x%(inl)y

A、5.5

B、55

C、5.500000

D、55.00000

标准答案:c

知识点解析:在计算⑴oat)(a+b/2时,由于通过强制类型转换将(a+b转换成了foat

型,所以应先将2转换成float型,再进行计算,得4.500000。在计算(int)x%(int)y

时,先将x和y通过强制类型转换成im型,再进行求余运算,得1。又因为

4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到

5.500000。[知识扩展]类型转换的一般规则是:低级类型服从高级类型,并进行相

应的转换。数据类型的级别由低到高的排序表示为:

char—>int—*unsigned—>long—>float—>double0

15、在ASCII代码表中每一个大写字母比它相应的小写字母的ASCII码()。

A、小32

B、小64

C、大32

D、大1

标准答案:A

知识点解析:本题考查大小写字母的Ascn码值的关系。大写字母比它相应的小

写字母的ASCII码小32o

16、下列不是合法的C语言语句是()。

A、a=5

B、{inti;i++;}

C、;

D、{;}

标准答案:A

知识点解析:选项A)是一个表达式,它后面没有分号结尾(C语言中规定语句必须

以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是

一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,

也是一个空语句。

17、下列写法正确的是()。

A^main()

main(){inti=3,j;(inti=3;j=5}

C、main()

D、main(){;)

标准答案:D

知识点解析:本题考查语句的基本构成。选项A)中j=5后面少了一个分号;选项

B)中少了“}”;选项C)不是一个完整的函数定义格式,一个完整的函数定义格式还

包括一对花括号:选项D)正确,是一个空语句。

18、下列程序的输出结果是()。main(){inta,b,d=25;a:d/10%9;b=a&&(-l);

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

A、6』

B、2,1

C、6,0

D、2,0

标准答案:B

知识点解析:算术运行将“尸、"%”的优先级处于同一级,并且两者的结合性都是从

左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2;当逻辑运算符“&&”

两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-l)=l。

19、下列程序的输出结果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a

<B)if(b<O)c=0;elseC++;printf("%d\n",c);)

A、0

B、2

C、1

D、3

标准答案:C

知识点解析:本题考查汀语句。第一个if语句,先判断条件,发现a〈b不成立,

不再执行下列的语句,直接执行最后的printf输出语句,然后结束程序,整个过程

c的值没有发生变化。

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

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

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

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

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

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

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

标准答案:D

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

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

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

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

21、下列程序的运行结果是()。#include<stdio.h>main。{inix=5,a=l,b=2,C=

5,d=0;if(a<B)if(b!=3)if(!C)x=1;elseif(D)x=1;elsex=-l;printf("%dn,x);)

A、-1

B、0

C、1

D、不确定的值

标准答案:A

知识点解析:本题考查ifelse语句。第1个if语句,先判断条件,发现aVb条件

成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行

下列的语句;第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对

的eke语句:第4个if语句.先判断条件,d=0.条件不成立.则x-I.结束循

环。

22、耍求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确

定义,下列正确的程序段是()。

A、while((ch=getchar())!=,N,)printf(,,%c,,,ch);

B、while(ch=getchar()!='N')printfC%c”,ch);

C、while(ch=getchar()=='N')printf("%c”,ch);

D、while((ch=getchar())=='N')printf(”%c”,ch);

标准答案:A

知识点解析:while循环的执行过程如下:①计算while后面圆括号中表达式的

值。当值为非0时,执行步骤2;当值为0时,执行步骤4。②执行循环体一次。

③转去执行步骤1。④退出循环。在选项A)中,表达式(ch=getchar())!:=,N,表

示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入

的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。所以选

项A)为正确答案。

23>不能与do…while(exp)语句中的(exp)等价的表达式是()。

A、(!exp==0)

B、(exp>0IIexp<0)

C^(exp==0)

D、(exp!=0)

标准答案:C

知识点解析:本题考查.do...while循环。在do…while循环中,当表达式的值为

非零(真)时,执行循环,不能与其等价的是为零的表达式,即(exp==0)。

24、有下列程序:main(){inti;for(i=l;i<=40;i++){if(i++%5==0)if(++i%8==

O)printf("%d",i);}printf("\n");}执行后的输出结果是()。

A、5

B、24

C、32

D、40

标准答案:C

知识点解析:在for循环体中,首先判断自变量i能否被5整除,然后再自加两

次,最后判断i能否被8整除。当for循环执行到第30次时,i的值为30能被5整

除,然后i经过两次自加1运算,值变为32,能被8整除,故执行“printf("%cT,i);”

语句,即输出32。本题的答案为选项C)。

25、下列选项中不是字符常量的是()。

A、7

B、,\x2a,

C、匕’

D、\0

标准答案:D

知识点解析:C语言规定,一个字符常量代表ASCH码字符集里的一个字符,在程

序中用单引号括起来,以便区分。“\U”表示的是竖向跳格:”\x2a,”表示的是两位

十六进制数;“匕血表示的是字符a对应的ASCII码值。

26、有下列程序:main(){inti,j;for(i=l;i<4;i++){for(j=i;j<4;j++)printf("%d*%d

=%d",ij,i*j);printf("\n");}}程序运行后的输出结果是()。

A、1*1=11*2=21*3=32*1=22*2=43*1=3

B、Pl=l1*2=21*3=32*2=42*3=63*3=9

C>1*1=11*2=22*2=41*3=32*3=63*3=9

D、1*1=12*1=22*2=43*1=33*2=63*3=9

标准答案:B

知识点解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结

束。对于外层循环自变量i的每一个值,内层循环的自变量.i每次从i开始,每次

循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打

印门’两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。

27、下列说法不正确的是()。

A、调用函数时,实参可以是表达式

B、调用函数时,实参与形参可以共用内存单元

C、调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D、调用函数时,实参与形参的类型必须一致

标准答案:B

知识点解析:暂无解析

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

A、函数名是属于用户标识符,需符合C语言对标设符的规定

B、形参只能是变量

C、为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名

D、函数中定义的变量可以与其他函数中的变量同名

标准答案:C

知识点解析:本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的

变量的作用域在函数体内,因而在不同函数体内定义的变量可以相同,不影响各个

变量的使用。

29、下列程序段中,不能正确赋值的是()。

A、char*p,ch;p=&Ch;scanf("%c",&p);

B、char*p;p=char*)malloc(l);scanf("%c",p);

C、char*p;*p=getchar();

D、char*p,ch;p=&ch;^p=getchar();

标准答案:C:

知识点解析:地址变量p指向的存储空间一定要明确,否则可能影响程序的正确

性。

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

组元素的地址为()。

A、334H

B、30DH

C、352H

D、31AH

标准答案:C

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

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

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

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

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

31、若有说明:inta口[3]={0,0};则不正确的叙述是(

温馨提示

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

评论

0/150

提交评论