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

下载本文档

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

文档简介

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

卷第1套

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

1、下列叙述中正确的是

A、循环队列是队列的一种链式存储结构

B、循环队列是队列的一种顺序存储结构

C、循环队列是非线性结构

D、循环队列是一种逻辑结构

标准答案:B

知识点解析:本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线

性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。

2、下列叙述中正确的是

A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D、以上都不正确

标准答案:B

知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所

占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分

为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个

元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储

空间要大一些。

3、设有定义:longx=745321L,则能正确输出变量x的语句是()。

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

B、printf(nx=%LD\n",x);

C、printf(nx=%dl\n",x);

D、printf("x=%Id\n",x);

标准答案:D

知识点解析:本题考查C语言中长整型数据的输出。在题中格式控制符只有采用

格式字符%Id,且必须是小写字母d,才能表示输出长整型数据X。

4、在最坏情况下()。

A、快速排序的时间复杂度比冒泡排序的时间复杂度要小

B、快速排序的时间复杂度比希尔排序的时间复杂度要小

C、希尔排序的时间复杂度比直接插入排序的时间复杂度要小

D、快速排序的时间复杂度与希尔排序的时间复杂度是一样的

标准答案:c

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

数为0(/),希尔排序所需要的比较次数为O(nL5),所以答案选C。

5、下面程序的输出是main(){inti=9;for(;i>0;i-){if(i%3==0)

(printf(H%d",—i);continue:})}

A、741

B、852

C、963

D、875421

标准答案:B

知识点解析:本题考查continue的应用。程序中for循环体内有一个continue语

句,它的功能是提前结束本次循环体(即循环体的后半部分不执行了),直接来到下

一次循环的条件判断。本题中,当i值为3的倍数(9,6,3)时,表达式i%3值为

0,输出—i(8,5,2),否则无输出。第6次循环结束后,i—使i得0,此时i>0为

假,循环结束。

6、若有定义语句:chars[10]="1234567\0\0H;,则strlen(s)的值是

A、7

B、8

C、9

D、10

标准答案:A

知识点解析:本题考查字符串数组和字符串函数。数组s有7个数字,然后跟着结

束符“\0”,因此数组s的长度为一

7、若有定义:doublea=22;inti=0,k=18;»则不符合C语言规定的赋值语句是

()o

A、i=(a+k)<=(i+k);

B、i=a%ll;

C、a=a++,i++

D、i=!a:

标准答案:B

知识点解析:取模运算符“%”、二元运算符具有左结合性,参与运算的量均为整

型。B选项中的a变量是double实型,不符合规定,

8、下列叙述中正确的是

A、对象标识具有唯一性

B、属性是对象的动态属性

C、任何对象都必须有多态性

D、对象是对象属性和方法的封装体

标准答案:A

知识点解析:每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。

在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。

9、有以下程序#includcintfun(inta,intb){if(b==O)returna;elsereturn(fun(-a,—

b));}main(){printf("%dha",fun(4,2));)程序的运行结果是

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:由程序可知函数fun(inta,intb)是一个递归函数。所以当主函数中调用

fun(4,2)时,其执行过程如下:fun(4,2)->fun(3,l)->fun(2,0),其返回值为2。

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

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

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

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

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

标准答案:C

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

11、以下关于retum语句的叙述中正确的是

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

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

C、定义成yoid类型的函数中可以有带返回值的return语句

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

标准答案:B

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

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

12、以下叙述中错误的是

A、C程序在运行过程中所有计算都以二进制方式进行

B、所有C程序都需要编译链接无误后才能运行

C、C程序在运行过程中所有计算都以十进制方式进行

D、C程序中字符变量存放的是字符的ASCH值

标准答案:C

知识点解析:计算机程序都是编译为二进制的代码,计算机才会执行。

13、以下选项中表示一个合法的常量是(说明:符号□表示空格)

A、123E0.2

B、2.7ea

C、0999n

D、OXab

标准答案:D

知识点解析:本题考查C语言中的常量。选项A字母E后面必须是整型数,浮点

数错误:选项B字母e后面没有整型数:选项C以0开始表示8进制数,8进制数

没有9;选项D是一个正确的16进制常数。

14、以下合法的字符型常量是

A、’\xl3,

B、'\081'

C、'65,

D.,/n,

标准答案:A

知识点解析:本题考查字符型常量。选项A)正确,使用了转义字符“\",X13表

示16进制的13;选项B)同样使用了转义字符,但081错误,以0开始表示8进

制,8进制数字的范围是0.7,没有8;选项C)错误,65是一个字符串,不是字

符;选项D)错误,换行符是“\rT。

15、有以下程序#includemain(){inta=5,b=l,t;t=(a<<2)|b;printf("%d\n",t);)程序

运行后的输出结果是()o

A、1

B、11

C、6

D、21

标准答案:D

知识点解析:本题考查访运算,以及按位或操作,将a左移一位相当于是将a乘以

了4,所以a«2等于20,二进制表示为00010100,与b按位或得到00010101,即

21,所以选项D正确。

16^有以下程序#includeintfun(char*s){char*p=s;while(*p!=0)p++;return(p-

s);}main(){printf("%d\n",fun("goodbey!"));}程序的输出结果是

A、6

B、8

C、0

D、7

标准答案:B

知识点解析:函数fun的主要功能是计算字符串中实际字符的个数,因此

“goodbey!”含有字符为8,返回值为8。

17、以下叙述中正确的是

A、函数名代表该函数的入口地址

B、所有函数均不能接受函数名作为实参传入

C、函数体中的语句不能出现对自己的调用

D、如果函数带有参数,就不能调用自己

标准答案:A

知识点解析:函数形、实参传递的时候,要求对应位置类型一致即可,如果实参为

函数名,可以定义相应的形参为指向函数的指针变量来获得该函数的入口地址,因

此选项B)错误的,在C语言中允许进行递归调用,即自己调用自己,选项C)和选

项D)是错误的。

18、以下程序的主函数中调用了其前面定义的fun函数#inchideVstdio.h>……

main(){doublea[15],k;k=fun(a);}则以下选项中错误的fun函数首部是

A、doublefun(doublea|15])

B、doublefun(double*a)

C>doublefun(doublea[])

D、doublefun(doublea)

标准答案:D

知识点解析:本题考查函数的定义和调用。根据对fun函数的调用可知,fun函数

的返回值为double类型的,输入参数是一个double类型的地址(指车|),因此选项

D)错误。

19、有下列程序:include/*fun函数的功能是将a所指数组元素从大到小排序*

/voidfun(int*a,intn)main(){intt,i,j;{intc[10]={1,2,3,4,5,6,7,

8,9,0),j;for(i=0;i

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

B、0,9,8,7,6,5,I,2,3,4,

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

D、1.2.3.4,5.6.7.X.9.0.

标准答案:A

知识点解析:fun()函数的功能是对数组a□的元素从大到小进行排序。所以在主函

数执行fun(c+4,6)语句时,将从数组c的第5个元素开始的后6个元素进行从大

到小排序。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

20、有以下程序#include<stdio.h>intfuna(inta,intb){returna+b;}intfunb(int

a,intb){returna-b;}intsss(int(*t)(),intx,inty){retum((*t)(x,y));)main()|int

x;X=SSS(funa,9,3);x+=sss(funb,8,3);printf("%d\nH,x);}程序运行后

的输出结果是

A、17

B、23

C、24

D、22

标准答案:A

知识点解析:函数funa的功能计算两个数据的和,funb的功能计算两个数据的

差,函数sss中利用指向函数的指针作为函数的参数,可以在调用的时候,根据接

收的函数地址来决定调用那一个函数。主函数中调用x=sss(funa,9,3),将funa

函数的地址传递给t,因此sss函数成为求两个数据的和12,继续将funb函数地址

传给I,求两个数据差为5,和s累加后结果为17。

21、以下叙述中正确的是

A、charca[3H5]={“A“,“BB“,“CCC”};是不合语法的

B、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组

C、charcaLJl5J={,,A,,BB","CCCJ;是不合语法的

D、char*ca[3]={"An,"BBH,"CCCH);是不合语法的

标准答案:B

知识点解析:字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选

项B)的说法正确。选项A)和C)对于ca的定义是正确的。选项D)定义一个指针数

组,可以保存多个字符串的首地址。

22、在数据库设计中,将E—R图转换成关系数据模型的过程属于()。

A、需求分析阶段

B,概念设计阶段

C、逻辑设计阶段

D、物理设计阶段

标准答案:C

知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据

库中,即设计出表,所以属于逻辑设计阶段。

23、有以下程序:#includemain(){chars[]="012xy\08s34f4w2";inti,n

=0;for(i=0;s[i]!=0;i++)if(s[i]>=,0,&&s[i]<=?9*)n++;

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

A、0

B、3

C、7

D、8

标准答案:B

知识点解析:本题中遇到,'字符循环结束,所以只统计,'之前的数字字符,所以

为3o

24、数据库设计过程不包括

A、概念设计

B、逻辑设计

C、物理设计

D、算法设计

标准答案:D

知识点解析:数据库设计过程主要包括需求分析、、概念结构设计、逻辑结构分

析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。

25、若有以下程序段structst{intn;structst*next;);

structstal3|={5,&a[1]J,&a[2],9;\0,},*p;p=&a[O];则以下选项中值为6的表达式是

A、p->n

B、(*p).n

C^p->n++

D、++(p->n)

标准答案:D

知识点解析:本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中

p->n为5,++(p->n)为6,所以D选项正确。

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

卷第2套

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

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

A、算法在执行过程中所需要的计算机存储空间

B、算法所处理的数据量

C、算法程序中的语句或指令条数

D、算法在执行过程中所需要的临时工作单元数

标准答案:A

知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空

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

所需要的额外空间。

2、某带链的队列初始状态为front=rea厂NULL。经过一系列正常的入队与退队操

作后,front=10,rear=5o该队列中的元素个数为()。

A、4

B、5

C、6

D、不确定

标准答案:D

知识点解析:带链的队列使用了链表来表示队列,而链表中的元素存储在不连续的

地址中,因此当from=10,rear=5时,不能确定队列中元素的个数。

3、阅读以「程序#includemain(){intcase;floatprintF;printf("请输入2个数:

");scanf("%d%f,&case,&printF):prin七f("%d%f\n",case,printF);)

该程序在编译时产生错误,其出错原因是

A、定义语句出错,printF不能用作用户自定义标识符

B、定义语句出错,case是关键字,不能用作用户自定义标识符

C、定义语句无错,scanf不能作为输入函数使用

D、定义语句无错,prinlf不能输出case的值

标准答案:B

知识点解析:case是C话言中的一个关键字,不能用作用户标识符来使用,所以

这段程序代码在编译时就会出错。

4、有以下程序#includeVstdio.h>main(){inta=3;printfV'%d\n'',(a+=a-

=a*a));}程序运行后的输出结果是

A、9

B、0

C、3

D、-12

标准答案:D

知识点解析:对于表达式a+=a-=a*a相当于a=a.(a*a),然后计算a=a十a,a的初值

为3,则表达式的值为-12。

5、设有某函数的说明为:int*fune(inta[10],intn):则下列叙述中,正确的是

()。

A、形参a对应的实参只能是数组名

B、说明中的a[10]写成a口或*a效果完全一样

C、func的函数体中不能对a进行移动指针(如a++)的操作

D、只有指向10个整数内存单元的指针,才能作为实参传给a

标准答案:R

知识点解析:考查数组名作为函数参数。传递给形参的实参可以是数组名,还可以

是指向该数组的指针变量,选项A错误;a[10].a[]、*a做形参都是接受实参数组

首地址,效果一样,选项B正确;数组名可以看作一个指针常量,对其进行自加

自减运算相当于指针变量的自加自减,选项C错误;数组名作为函数参数时,只

传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的

长度,形参数组和实参数组长度也可以不同,选项D错误。故答案选B。

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

外部指的是()。

A、冠以关键字extem

B、位置在函数体外部

C、作用范围是全程的

D、位置在函数的外部

标准答案:D

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

符的特征。

7^有以下程序main。{血x=l,y=0:if(!x)y++;elseif(x==O)if(x)y+=2;else

y+=3;pfintf("%d\nH,y);}程序运行后的输出结果是

A、2

B、0

C、1

D、3

标准答案:B

知识点解析:x=l,if和elseif的条件都不满足,故y值不改变输出。

8、有两个关系R和T如下:

关系R得到关系T的操作是

A、选择

B、投影

C、交

D、并

标准答案:A

知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到

关系T。

9、以下程序段的输出结果是()。inta,b,c;a=10;b=50;c=30;if(a>b)a=b,

b=c;c=a;printfT'a=%db=%dc=%d\n'',a,b,c);

A、a=30b=50c=10

a=10b=30c=10

C、a=10b=50c=IO

D、a=50b=30c=50

标准答案:C

知识点解析:本题考查条件表达式,程序段首先定义三个整型变量a,b,c,并且

其初始值分圳等于10,50,30,然后判断a>b是否成立,如果条件成立,则壬b

的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件表达式不成立,所

以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等

于10,最后由输出语句输出变量a,b,c的当前值,分别为10,50,10o

10、设有定义语句:char*aa|2]={nabcd","ABCD");则以下叙述正确的是

A、aa数组的两个元素只能存放含有4个字符的一维数组的首地址

B、aa数组的值分别是字符串“abed"和“ABCD”

C、aa是指针变量,它指向含有两个元素的字符型数组

D、aa[0]存放了字符串、bed”的首地址

标准答案:D

知识点解析:题目中char*aa[2],定义了指针数组aa,有两个元素,aa⑼存放

“abed”地址,而aa[l]存放"ABCD”地址。

11、若有以下程序,则程序的输出结果是includemain()(inta=U,b=U,c=U;c=

(a—=++A),(a+=b,b+=4);printf("%d,%d.%d\nH,a,b,c);)

A、0,4,4

B、1,4,1

C、0,4,0

D、1,4,4

标准答案:C

知识点解析:表达式c=(a—=++a),(a+=b,b+=4)相当于逗号表达式,首先

计算c=(a—=++a),其中a—=++a)等价于a=a—(++a),得到a的值0,c

的值为O在计算(a+—b,b+—4)时,a和b的初值为0,计算以后,a为0,b为

4o

12、若有以下程序#includechar*a=,,you",b[]=nwelcome#you#to#China!;

main(){inti,j=0;char*p;for(i=0;b[i]!=,\0>;i++){if(*a==b[i]){p=&b[i];

for(j=0;a[j]!=>\j++){if(a[j]!=*p)break;p++;}ifi(a|j]=,\O^break;})

printfC%s\n\p):}则程序的输出结果是

A、#you#to#China!

B、me#you#to#China!

C、#China!

D、#to#China!

标准答案:D

知识点解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a,

如果含有则退出,字符指针p指向该匹配子串后面的位置,利用printf函数输出则

从该位置开始一直输出到字符串b的结尾。

13、若有定义inta;floatb;doublec;程序运行时输入:345V回车〉能把值3输入

给变量a、4输入给变量b、5输入给变量c的语句是()。

A、scanf("%d%f%lf;&a,&b,&c);

B、scanf("%d%lf%lf&a,&b,&c);

C、scanf(,'%d%f%f;&a,&b,&c);

D、scanf("%lf%lf%lf;&a,&b,&c);

标准答案:A

知识点解析:考查scanf的格式输入。scanf函数的一般形式为scanf("格式控制字符

串”,输入项1,输入项2,...),其中,”格式控制字符串”用于指定输入的格式,“%d”表

示按照十进制整型输入,”%F表示按照浮点型输入,"%f表示按照长精度浮点型

输入,所以答案选A。

14、以下关于typedef的叙述错误的是

A、typedef只是将已存在的类型用一个新的名字来代表

B、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

C、用typedef可以增加新类型

D、用typedef为类型说明一个新名,通常可以增加程序的可读性

标准答案:C

知识点解析:C语言允许用typedef说明一种新的类型名,其一般形式为:typedef

类型名标识符;在此“类型名”必须是在此语句之前已有定义的类型标识符。“标识

符''是一个用户定义标识符,用作新的类型名。Typedef语句的作用仅仅是用“标识

符”来代表已存在的“类型名”,并未产生新的数据类型.原来的类型名依然有效,

这样可以增加程序的可读性。

15、在关系表中,属性值必须是另一个表主键的有效值或空值,这样的属性是

A、外键

B、候选键

C、主键

D、主属性

标准答案:A

知识点解析:如果公共关键字在一个关系中是主关犍字,那么这个公共关键字被称

为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个

关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键

又称作外关键字。为了保持数据一致性,完整性,主要目的是控制存储在外键表中

的数据.使两张表形成关联.外键只能引用外表中的列的值或使用空值.所以选

项A正确。

16、下列关系表达式中,结果为“假”的是

A、(3«4)==1

B、(3+4)>6

C、(3!=4)>2

D、3<=4

标准答案:C

知识点常析:关系表达式和逻辑表达式的结果为非零或者0,其中0表示假,而非

零表示真,由于3!=4的结果为1,而1>2的结果为假。

17、有以下程序main(){inta=3;do{printf(M%d»”,a-=2);}while(!(—a));

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

A、1,

B、1,-2,

C、3,0,

D、1,0

标准答案:B

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

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

0,循环退出。

18、有以下程序#include<stdio.h>voidmain(){chars[]="012xy\08s34f4w2";

inti,n=0;tor(i=0;s[i]!=。;i++)V='9')n++;pnntt("%d\

n”,n);}程序运行后的输出结果是

A、0

B、7

C、3

D、8

标准答案:C

知识点解析:在主函数中的for循环语句中,当s[i]的值不等于0〜9之间的数字

时,结束循环语句的执行。由字符数组s的初值可以得到for循环语句执行了三

次,所以变量n的值等于3。

19、令,卜列程序:#include<stdio.h>/*「un函数的功能是将a所指数组元素从

大到小排序*/voidfiin(int*a,intn){intt,i,j;for(i=0;i<n-l.j++)ford=i+l;j

<n;j++)if(a[i]<a|j]){t=a[i];a[i]=a[j];a[i]=t;}}main(){intc[10]={1,2,3,

4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i+4-)printf("%d,

c[i]);printfC\n");}程序的运行结果是

A、1.2,3,4,9,8,7,6,5,0,

B、0.9,8,7,6,5,1,2,3,4,

C、0.9.8.7.6.5.4.3.2.

D、12,3,4,5,6,7,8,9,0,

标准答案:A

知识点解析:fun()函数的功能是对数组a口的元素从大到小进行排序。所以在主函

数执行fun(c+4,6)语句时,将从数组c的第5个元素开始的后6个元素进行从大

到小排序。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

20、有以下程序#inckidemain(){intc[6]={10,20,30,40,50,60),*p,*s;

p=c;s=&c[5];printf(,'%d\n,',s-p);}程序运行后的输出结果是

A、50

B、6

C、5

D、60

标准答案:C

知识点解析:主函数中由针变量P指向数组c,S保存了数组最后一个元素的地

址,那么S中为两个地址之间的元素差5。

21>有以下程序#includeVstdio.h>main()voidfun(char*c,intd){charb=,a\

a='A';{*c=*c+l;d=d+l;fun(&b,a);printf("%c,%c\n”,b,a);printf("%

c,%c,“,*c,d);}}程序运行后的输出结果是

A、b,B,b,A

B、b,B,B,A

C、a,B,B,a

D、a,B,a,B

标准答案:A

知识点解析:本题中fun函数的参数传递方式,形参c是传地址,形参d是传值,

所以在主函数中,执行胁时,把变量b的地址传给了c,把a的值传递给了d,经

过运算,输出的值为b.Bo在主函数的输出语句中,输出变量b的值为b,变量a

的值为A。

22>有以下程序voidfun(intx,inty,int*c»int*d){*c=x+y;*d=x-y;}main(){int

a=4,b=3,c=0,d=0;fun(a,b,&c,&d);printf("%d%d\n",c,d);}程序的

输出结果是

A、43

B、34

C、71

D、00

标准答案:C

知识点解析:函数fun有四个形参,功能是利用参数的地址传递来计算前两个参数

的和与差。主函数中调用fun函数c计算4+3,d计算4.3值为1。

23、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},(3,7,2,5},{4,8,6J}

for(i=0;i<3;i++)for(k=i+l;k<4;k++)if(a[i][i]<

a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf(M%d,';a[O][i]);)程

序运行后的输出结果是

A、6,2,1,1,

B、

C、2,3,4,6,

D^6,4,3,2,

标准答案:D

知识点解析:利用二重for循环对二维数组a[4]⑷的主对角线上的元素{1,6,21}实

现按列从大到小排序,所以数组a[4][4]的值变为

{{6,4,3,2,},{8,2,5,7},{3,7,1,5},{4,8,6,1}},最后输出数组a[4][4]第一行上的元素,所

以输出结果为6,4,3,2。

24、以下叙述中错误的是

A、函数的返回值类型不能是结构体类型,只能是简单类型

B、只要类型相同,结构体变量之间可以整体赋值

C、可以通过指针变量来访问结构体变量的任何成员

D、函数可以返回指向结构体变量的指针

标准答案:A

知识点解析:函数的返回值类型可以是结构体类型。结构体变量之间可以相互复

制。

25、以下关于typedef的叙述错误的是

A、typedef只是将已存在的类型用一个新的名字来代表

B、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

C、用typedef可以增加新类型

D、用typedef为类型说明一个新名,通常可以增加程序的可读性

标准答案:C

知识点解析:C语言允许用typedef说明一种新的类型名,其一般形式为:typedef

类型名标识符;在此“类型名”必须是在此语句之前已有定义的类型标识符。“标识

符''是一个用户定义标识符,用作新的类型名。Typedef语句的作用仅仅是用“标识

符”来代表已存在的“类型名”,并未产生新的数据类型,原来的类型名依然有效,

这样可以增加程序的可读性。

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

卷第3套

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

1、数据字典(DD)所定义的对象都包含于()。

A、数据流图(DFD图)

B、程序流程图

C、软件结构图

D、方框图

标准答案:A

知识点解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来

就构成了数据字典,因此选A选项。

2、下列关于线性链表的叙述中,正确的是

A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C、进行插入与删除时,不需要移动表中的元素

D、以上都不正确

标准答案:C

知识点解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据

结构的存储空间可以不连续,各数据结点的存储顺序与数据元索之间的逻辑关系可

以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

3、一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结

点数为

A、219

B、221

C、229

D、231

标准答案:A

知识点解析:在二叉树中,叶子结点个数为项,则度为2的结点数n2=no-l。本题

中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点

数十度为1的结点数十度为2的结点数=70+80+69=219。

4、下列叙述中正确的是

A、循环队列是线性结构

B、循环队列是线性逻辑结构

C、循环队列是链式存储结构

D、循环队列是非线性存储结构

标准答案:A

知识点解析:为充分利用向量空间,克服“假溢出”现象的方法是:将向量空间想象

为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队

列(CircularQueue)。线性结构是一个有序数据元素的集合。常用的线性结构有:线

性表,栈,队列,双队列,数组,串。常见的非线性结构有:二维数组,多维数

组,广义表,树(二叉树等),图v

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

A、算法正确的程序可以有零个输入

B、算法正确的程序最终一定会结束

C、算法正确的程序可以有零个输出

D、算法正确的程序对于相同的输入一定有相同的结果

标准答案:C

知识点解析:算法的特征:①有穷性,一个算法(对任何合法的输人)在执行有穷步

后能够结束,并月.在有限的时间内究成;②确定性,算法中的每一步都有确切

的台义;③可行性,鼻法中的操作能够用已经买现的基本运算执行有限次来实

现;④输入,一个算法有零个或者多个输入,零个输入就是算法本身确定了初始

条件;⑤输出,一个算法有一个或者多个输出,以反映出数据加工的结果,所以

C选项错误。

6、C语言中char类型数据占字节数为

A、2

B、3

C、1

D、4

标准答案:C

知识点解析:C语言中char类型数据占字节数为10

7、下列有关宏的叙述中不正确的是()。

A、宏名必须用大写字母表示

B、双引号中出现的宏名不进行替换

C、宏名无类型

D、和其他语句的编译同时进行

标准答案:A

知识点解析:本题考查宏的使用规则:①字符替换格式为冲define标识符字符

串“,其中"标识符''称为宏名,无类型;②双引号中出现的宏名不替换;③宏名的

定义通常用大写字母,但不是必须用大写字母;④宏定义不是赋值语句,不做语

法检查。

8、下列关于数据库设计的叙述中,正确的是(),

A、在需求分析阶段建立数据字典

B、在概念设计阶段建立数据字典

C、在逻辑设计阶段建立数据字典

D、在物理设计阶段建立数据字典

标准答案:A

知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充

实和完善的。

9、下列关于栈叙述正确的是()。

A、栈顶元素最先能被删除

B、栈顶元素最后才能被删除

C、栈底元素永远不能被删除

D、栈底元素最先能被删除

标准答案:A

知识点解析♦:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈

底元素最先入栈却最后被删除。所以选择A。

10、设变量已正确定义并赋值,下列表式中正确的是()。

A、x=y+z+5,++y

B、iut(15.8%5)

C、x=y*5=x+z

D、x=25%5.0

标准答案:A

知识点解析:B选项与D选项中取模运算符%的左右两个操作数均应为整数,所

以错误。C选项中不能将x+y的值赋给表达式y*5,所以C选项错误。

II、算法的时间复杂度是指()。

A、算法的长度

B、执行算法所需要的时间

C、算法中的指令条数

D、算法执行过程中所需要的基本运算次数

标准答案:D

知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执

行过程中所需基本运算的执行次数来度量算法的工作量。

12、对软件系统总体结为图,下面描述中错误的是

A、深度等于控制的层数

B、扇入是一个模块直接调用的其他模块数

C、扇出是一个模块直接调用的其他模块数

D、原子模块一定是结构图中位于叶子结点的模块

标准答案:B

知识点解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶

段,已经从系统开发的角度出发,.把系统按功能逐次分割成层次结构,使每〜部

分完成简单的功能且各个部分之间乂保持一定的联系,这就是功能设计。在设计阶

段,基于这个功能的层次结构把各个部分组合起来成为系统。

13、软件需求规格说明书的作用不包括()。

A、软件设计的依据

B、软件可行性研究的依据

C、软件验收的依据

D、用户与开发人员对软件要做什么的共同理解

标准答案:B

知识点解析:《软件可行性分析报告》是软件可行性研究的依据。

14、若有定义:intx[10],*pt=x;,则对x数组元素的正确引用是()。

A、pt+3

B、*&x[10]

C、*(pt+10)

D、*(x+3)

标准答案:D

知识点解析•:没有A选项的引用形式。*与&放在一起作用抵消,但x[10]下标10

超出了数组下标范围,所以B选项错误。最大只能引用到x|9],而*(pt+i)表示引用

指针3所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。D选项

正确。

15、有以卜程序:#includeintfun(intx){intP;if(x==OIIx==l)return3;P=x—

fun(x—*2);return(P);}main。{primf("%d\n”,fun(9));}程序运行后的输出

结果是()。

A、4

B、5

C>9

D、7

标准答案:D

知识点解析:本题考查函数的递归调用。执行fun(9)后,fun(9)=9—(7—(5—(3—

f(l))))=7,故D选项正确。

16、有以下程序#includemain(){inty=9;for(;y>0;y—)if(y%3==0)printf(H%

d'\-y);)程序的运行结果是

A、963

B、852

C、741

D、875421

标准答案:B

知识点解析:v的值的初值为9,所以在for循环中,当y的值为9、6或3时,if

语句的条件成立,执行输出语句,输出表达式一y的值。因为自减符号在y的前

面,所以首先y的自减1,然后再输出y的值,故输H{结果为852。

17、有以下程序#includcVstdio.h>intfun(inta>intb){if(b=O)returna;、

elseretum(fun(-a,-b));}main(){printf(,,%d\n,\fun(4,2));}程序的运行结果

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:由程序可知函数fun(inta,intb)是一个递归函数。所以当主函数中调

用%。(4,2)时,其执行过程如下:fun(4,2)->fun(3,l)->fun(2,0),其返回值为

2o

18、有以下程序(说明:字母A的ASCII码值是65)includevoidfun(char*s)

{while(*s){if(*s%2)printf(u%c",*s);s++;})main(){chara[]="BYTEH;fun(A);

printfC^n");}程序运行后的输出结果是

A、BT

B、YE

C、YT

D、BY

标准答案:B

知识点解析:本题中执行fun(a)时,会取a的第一个字母B,因为B的ASCH码为

66,所以不会输出B,函数只会输出ASCII码为奇数的字母,Y的ASCII码为

89,T的ASCII码为84,E的ASCII码为69。因此B选项正确。

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

A、C程序函数中定义的自动变量,系统不自动赋确定的初值

B、在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限木复合语

句内

C、C程序函数中定义的赋有初值的静态变量,每调用一次函数赋一次初值

D、C程序函数的形参不可以说明为static型变量

标准答案:C

知识点解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,

变量定义除在函数开始位置外,在复合语句开始也可以;C选项描述是错误的,函

数内的静态变量只在第一次调用时赋值,以后调用保留上次的值;D选项描述也正

确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。

B、并

C、笛卡尔积

D、交

标准答案:A

知识点小析:等值连接是关系运算.连接运算的一种常用的连接方式。是条件连接

(或称。连接)在连接运算符为“=”号时,即9=0时的一个特例。

21、以下选项中不属于C语言程序运算符的是()。

A、<>

sizeof

C、()

D、&&

标准答案:A

知识点解析:C语言中没有运算符,如果要判定两个变量不等,应使用运算

符”!=",答案选A。

22、C语言中double类型数据占字节数为

A、4

B、12

C、8

D、16

标准答案:C

知识点解析:double类型所占字节为8。

23、合法定义一维数组的是()。

A、inta|5]={0,1,2,3,4,5};

B、chara[]-{1,2,3,4,5);

C、chara={'A',C}

D、inta[5]i()123”

标准答案:B

知识点解析:本题考查一维数组的定义,C语言中一维数组的定义必须使用[]说明

长度,长度可以省略。选项A定义的数组长度为5,元素个数为6,超过数组长

度,错误;选项B正确,编译器会根据初始化元素的个数自动计算数组的长度。

选项C中没有使用”广,不能定义一维数组;选项D中数组元素的初始化必须使用

大括号。

24,有以下程序#includeVstdio.h>intfun(){staticintx=l:x+=1:returnx;)

main(){inti,s=l;for(i=1;i<=5;i++)s+=fun();printR''%d\n'',s);}程序运

行后的输出结果是

A、11

B、21

C、6

D、120

标准答案:B

知识点解析:这道试题主要考查了局部静态变量的应用。在函数fun()中定义/局

部静态变量整型x,其初值等于I,在主函数中循环执行5次.第一次变量*的值

等于3,变量x的值等于2,第二次变量s的值等于6,变量x的值等于3,第三次

变量s的值等于10,变量x的值等于4,第四次变量s的值等于15,变量x的值等

于5,第五次变量s的值等于21,变量x的值等于6。

25、表达式:(int)((double)9/2)—9%2的值是

A、0

B、4

C、3

D、5

标准答案:C

知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强

制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等

于3o

26、以下叙述中正确的是

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

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

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

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

标准答案:D

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

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

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

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

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

名。②预定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标

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

义,但是没有特殊规定。

27、以下叙述中正确的是

A、在C程序中的八进制和十六进制,可以是浮点数

B、八进制数的开头要使用英文字母。,否则不能与十进制区分开

C、整型变量可以分为int型、short型、long型和unsigned型四种

D、英文大写字母x和英文小写字母x都可以作为二二进制数字的开头字符

标准答案:C

知识点解析:整型变量分为以下4种类型:①基本型:以im表示。②短整型:

以shorlint表示,或以shorl表示。③长整型:以longint表示,或以long表示。

④无符号型:以unsignedim表示,选项C)正确,实型常量仅有十进制表示形式,

八进制以数字0开头,十六进制开头为Ox或者0X,不是二进制。

28、若有以下程序#inckidevoidsp(inl*a){intb=2;a=&b;*a=*a*2;printf("%

d,*a);)main(){intk=3.*p=&k:sp(p):printf("%d,%d\n".k.*p):)则

程序的输出结果是

A、4,3,4

B、4,3,3

C、6,3,6

D、6,6,6

标准答案:B

知识点解析:主函数中定义指针变量p指向k,调用函数sp(p),将k的地址传递给

形参指针a,函数转到卬运行,a指向b的地址,表达式*a二*a*2,相当于b=b*2,

得到*a的数据4输出。函数调用结束,此时a和b的空间撤销,而对实参k和p的

值并没有改变,仍旧是3。

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

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

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

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

D、(c>=2&&c<=6)II(c!=3)II(c!=5)

标准答案:D

知识点解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c

的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成

立,表达式的值也为真。

30、有以下程序程ncludemain。{inty=9;for(;y>0;y・・)if(y%3==0)prinlff'%

d",-y):}程序的运行结果是

A、963

B、852

C>741

D、875421

标准答案:B

知识点解析:y的值的初值为9,所以在for循环中,当y的值为9、6或3时,if

语句的条件成立,执行输出语句,输出表达式・・y的值。因为自减符号在y的前

面,所以首先y的自减1,然后再输出y的值,故输出结果为852。

31,有以下程序#include#includevoidfun(char*w,intm){chars,*pl,*p2;

pI=w;p2=w+m-l;while(pI<p2){s=*p1;*pl=*p2;*p2=s;p1++;p2—;}}main()

{chara[]=H123456";fun(a,strlen(a));puts(a);)程序运行后的输出结果是

A、123456

B、116611

C、161616

D、654321

标准答案:D

知识点解析:主函数中调用fun(a,6)后,指针pl指句字符串中的“1”、p2指向字符

串中的"6,While循环中,只要pl

32、以下选项中叙述正确的是()。

A、C程序中的语句要经过编译才能转换成二进制机器指令

B、算法需要包含所有三种基本结构

C、有些算法不能用三种基本结构来表达

D、简单算法的操作步骤不能超过20步

标准答案:A

知识点解析:根据算法需要只要包含顺序、分支、循环这三种基本结构中的一种或

者几种就可以,而且已经证明,由这三种基本结构组成的算法可以解决任何复杂的

问题,选项B)、C)错误;算法的友杂度是依据算法的时间复杂度和空间复杂度

来衡量的,简单算法和复杂算法没有明确的界限,选项D)错误;编译是将C语

言源程序翻译成二进制目标程序,选项A)表述正确,答案选A)。

33若有以下程序#includecharf(charx){returnx*x+,a,;}main(){chara,b=0;fbr

(a=0;a<4;a+=l){b=f(A(;putchar(B);}}则程序的输出结果是

A、abed

B、ABEJ

C、abej

D、ABCD

标准答案:C

知识点解析:该题目首先初始化变量a和b,通过for循环语句使a取值为0、1、

2、3,f函数的功能是将a*a+,a,的值返回给b,即b为a、b、e.jo最后通过字符

输出函数pulchar。将b输出。因此C选项正确。

34、以下叙述中错误的是

A、函数调用可以作为一个独立的语句存在

B、函数形参的值也可以传回给对应的实参

C、若函数有返回值,必须通过return语句返回

D、C程序必须由一个或一个以上的函数组成

标准答案:B

知识点解析:一个C程序中可以包含任意多个不同名的函数,但只能有一个主函

数。一个C程序总是从主函数开始执行。函数的值通过reiurn语句返回,return语

句中的表达式的值就是所求的函数值。在C语言中,数据只能从实参单向传递给

形参,称为“按值”传递,也即是说,当简单变量作为实参时,用户不可能在函数中

改变对应实参的值。

35、若程序中有宏定义行:#defineN100则以下叙述中正确的是

A、宏定义行中定义了标识符N的值为整数100

B、上述宏定义行实现将100赋给标示符N

C、在运行时用100替换标识符N

D、在编译程序对C源程序进行预处理时用100替换标识符N

标准答案:D

知识点解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”。其含义

是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命

令进行处理的过程。由#加行仅定义的宏就是编译预处理命令。C程序在进行编译

之前,都要先对程序中所有出现的“宏名”,都用宏定义中的替换文本进行替换。

36有以下程序main(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();

d=getchar();printf(M%c%c%c%c\n",a,b,c,d);}当执行程序时,按下列方式输入数据

(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是

A、12

B、1234

C、123

D、1234

标准答案:C

知识点解析:scanf和gelchar函数分别从键盘上读入一个字符,因此输入12空格

34,则变量a中存放的为1,b中存放2,c中存放空格,d中存放3。

37、有以下程序#include<stdio.h>main(){intc[6]={10,20,30,40,50,60},*p,*s;p=

c;s=&c|5];printf("%d\nn,s-p);)程序运行后的输出结果是

A、50

B、6

C、5

D、60

标准答案:C

知识点解析:主函数中指针变量p指向数组c,s保存了数组最后一个元素的地

址,那么s-p为两个地址之间的元素差5o

38>有以下程序#includemain(){FILE*pf;char*sl="China",*s2="Beijing";

pf=fopen("abc.dat",Hwb+,);fwrite(s2,7,l,pf);rewind(pf);/*文件位置指针回到文件开

头*/fwrite(sl,5,l,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是()。

A、Chinang

China

C,ChinaBeijing

D、BeijingChina

标准答案:A

知识点解析:语句“fwriie(s2,7,l,pf);”将指针s2指向的7个字节的数据写入到

abc.dat文件中,而后将文件指针fp重定向指向文件首,再执行语句

”fwrite(s1,5,1,pf);”时将si指向的5个字符写入当前文件,原先写入的数据会被部分

覆盖,最后文件中的内容为Chinang,答案选A。

39、有以下程序段int*p;p=malloc(sizeof(int));若要求使p指向一个int

型的动态存储单元,在横线处应填入的是

A、(int*)

B、int

C>int*

D、(*int)

标准答案:A

知识点解析:本题考查malloc函数,题目中要求p指向一个ini型的动态存储单

元,那么就应该将分配的存储单元转化为int,所以选项A正确。

40、以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0

时,进行由人到小排序。^includevoidf(int

温馨提示

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

评论

0/150

提交评论