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

下载本文档

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

文档简介

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

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

1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入

栈,然后再依次出栈,则元素出栈的顺序是()。

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

标准答案:B

知识点解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择

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

A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

D、循环队列中元素的个数是由队头指针和队尾指针共同决定

标准答案:D

知识点解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所

以A)错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素

的动态变化情况,所以B)与C)错误。

3、在长度为n的有序线性表中进行二分查找,最坎情况下需要比较的次数是

()<.

A、0(n)

B、O(n2)

C>(login)

D、O(nlog2n)

标准答案:C

知识点解析:当有序线性表为顺序存储时才能用二分法杳找。可以证明的是对于长

度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查

找需要比较n次。

4、下列叙述中正确的是()o

A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C、顺序存储结构能存储有序表,链式存储结构不能存储有序表

D、链式存储结构比顺序存储结构节省存储空间

标准答案:A

知识点解析:链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)

与C)错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存

储空间,所以D)错误。

5、数据流图中带有箭头的线段表示的是()o

A、控制流

B、事件驱动

C、模块调用

D、数据流

标准答案:D

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

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

6、在软件开发中,需求分析阶段可以使用的工具是().

A、N—S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典

DD,判定树与判定表,所以选择B。

7、在面向对象方法中,不属于“对象”基本特点的是()0

A、一致性

B、分类性

C、多态性

D、标识唯一性

标准答案:A

知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、

模块独立性好。所以选择A。

8、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()o

A、——对——

B、一对多

C、多对一

D、多时多

标准答案:B

知识点解析:因为一间官舍可以住多个学生即多个学生住在一个宿舍中,但一个学

生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

9、在数据管理技术发展的三个阶段中,数据共享最好的是()。

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段

和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在

各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。

T

□□ABC

ml巨mi3

10、有三个关系R、S和T如下:口」2」LDLD由

关系R和S通过运算得到关系T,则所使用的运算为()°

A、笛卡尔积

B、交

C、并

D、自然连接

标准答案:D

知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量

必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的

有序组可知R与S进行的是自然连接操作。

11、以下不能用于描述算法的是

A、文字叙述

B、程序语句

C、伪代码和流程图

D、E-R图

标准答案:D

知识点解析:算法的描述有伪代码、流程图、N-S结构图等,E-R是实体联系模

型,所以选择D。

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

A、0

B、3.13e-2.1

C、0.914

D、2.0*10

标准答案:C

知识点解析:A选项为整型数据,B选项中e后面必须为整数,D选项是表达式,

不是常量,所以选择C。

13、以下叙述中正确的是

A、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放

整型数

C>若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0

D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4

标准答案:B

知识点解析:A选项中a是实型变量,a=lU在C语言中是允许的,但是实型变量中不

可以存放整型数。C选项中执行a=b后用的值变为b的值,为9,b的值不变,仍为

9oD选项中执行a=b后,a的值为9,b的值为9,执行b=a后,a的值为9,b的值也为

9,所以选择B。

14、以下选项中合法的变量是

A^5a

B、_10_

C、A%

D、sizeof

标准答案:B

知识点解析:变量的命名要符合标识符的命名规则,即由下划线、字母或数字组成,

且必须以下划线或字母开始,也不能和关键字相同,所以选择B。

a-b

15、不能正确表示数学式;‘的表达式是

A、a/c*b

B、a*b/c

C、a/b*c

D、a*(b/c)

标准答案:C

知识点解析:/号和*号的优先级处于平级,结合性都是自左至右?所以选择C,C式子

a*c

表示的是b?

16>有以下程序#includc<stdio.h>main(){inta=3;printf("%d\n",(a+=a-=a*a));}

程序运行后的输出结果是

A、3

B、9

C、0

D、-12

标准答案:D

知识点解析:首先计算a*a,结果为9,然后执行a=a-9,即3-9,结果为6然后执行

a=(-6)+(-6),即a=的值为-12,所以选择D。

17、若变量已正确定义,以下选项中非法的表达式是

A、a!=4『b'

B、,a,=l/2*(x=y=20,x*3)

C、'a'%4

D、'A'+32

标准答案:B

知识点解析:B选项中'a,即表示a为字符常量,再给①'赋值l/2*(x=y=20,x*3),是

不正确的。因此答案为B选项。

18、有以下程序#include<stdio.h>main(){intx=35,B;charz=,B,;B=((x)&&

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

A、1

B、0

C、35

D、66

标准答案:A

知识点解析:本题重点考察逻辑运算符和关系运算符的相关知识,已知变量x为整

型变量,并赋值为35,变量z为字符型变量,并赋值为,B\语句B=((x)&&(z

V,b'));中,(x)的值为1,E的asscii码小于b的asscii码,所以(zVE)的值也为

1,1&&1结果为1。因此A选项正确。

19、0数学表达式xNyNz对应的C语言表达式是

A、(x>=y)||(y>=x)

B、(x>=y>=z)

C、(x>=y)!(y>=z)

D、(x>=y)&&(y>=z)

标准答案:D

知识点解析:本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于

z,因此xV=y和yV=z是逻辑与的关系。因此D选项正确。

20、有以下程序#includc<stdio.h>main(){doublex=2.0,y;if(x<0.0)y=0.0;else

if((x<5.0)&&(!x))y=I.O/(x+2.0);elseif(x<10.0)y=I.O/x;elsey=10.0;

printf(H%f\n”,y);}程序运行后的输出结果是

A、0.000000

B、0.25

C、0.5

D、1

标准答案:C

知识点解析:本题重点考察if语句,变量X和y均为double类型,由于变量X赋

值为2.0,因此执行if((xV5.0)&&(!x)),即条件为0,继续执行if(xV10.0),条件

为1,即执行y=L0/x;。依据printf()函数输出类型中f是以小数形式输出单、

双精度实数。因此C选项正确。

21、有以下程序#include<stdio.h>main(){inti,sum;for(i=l;i<6;i++)sum+=i;

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

A、随机值

B、0

C、15

D、16

标准答案:A

知识点解析:本题重点考察for语句,变量没有初始化的情况下,默认值与编译器

有关系,不同的编译器有不同的值。变量sum定义后,没有赋初值,因此会输出

随机值,故A选项正确。

22、有以下程序#includc<stdio.h>main(){inta=3;do{printf("%d,H,a-=2);)

while(!(-a));printf(M\nw);}程序运行后的输出结果是

A、1

B、1,-2,

C、3。

D、1,0

标准答案:B

知识点解析:本题重点考察do……while语句,该循环语句的特点是,先执行循环

中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循

环。因此,do-whilc循环至少要执行一次循环语句。变量a赋初值为3,每循环一次

需执行语句a-=2一次,同时循环条件使变量a自减1,所以第一次循环后变量a变

为1.第2次循环后变量a变为-2c因此A选项TF确c

23>有以下程序#includc<stdio.h>voidfun(inta,intb,intc)(a=b;b=c;c=a;}

main(){inta=IO,b=20,c=30;fun(a,b,c);printf("%d,%d,%d\nH,c,b,a);)程序运行后

的输出结果是

A、10,20,30

B、30,20,10

C、20,30,10

D、0,0,0

标准答案:B

知识点解析:函数调用中发生的数据传送是单向的。即只能把实参的值传送给形

参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发

生改变,而实参中的值不会变化。因此B选项正确。

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

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

A、5

B、50

C、6

D、60

标准答案:A

知识点解析:首先初始叱一维数组c[6],语句p=c;指将c[0]元素的地址赋给指针

变量P;语句s=&c[5];指将c⑸元素的地址赋给指针变量s。程序最后输出s-p,

即结果为5。因此A选项正确。

25、有以下程序#include<stdio.h>main(){inta[3]={0},i,j,k=2;for(i=0;i<k;

i++)for(j=0;j<k;j++)a[j]=a[i]+l;printf("%d\nH,a[l]);}程序运行后的输出结果

A、0

B、2

C、1

D、3

标准答案:D

知识点解析:该题首先初始化一维数组a[3]所有元素都为0;执行嵌套循环for语

句,当i=0、j=0时,a[0]=a[0]+l=l;当i=0、j=l时,a[l]=a[0]+l=2;当i=l、j=0

时,a[0]=a[l]+l=3;当i=l、j=l时,a[l]=a[l]+l=3;因此D选项正确。

26、有以卜.程序#inc1udeVstdio.h>main。{inta[5]={2,4,6,8,10),*p,**k;p=a;k=

&p;printf("%d",*(p++));printf("%d\n",**k);}程序运行后的输出结果是

A、46

B、44

C、22

D、24

标准答案:D

知识点解析:首先通过p=a使p指向数组的第1个元素,所以输出2;在输出2以

后,由于p++,即p就指向数组的第2个元素,**!(就是取出p所指向元素的值,

而p指向的是数组的第2个元素,即输出4。因此D选项正确。

27、有以下程序#inckide<stdio.h>main(){intaa[3][3]={{2),{4},{6}},i,*p=

&aa[0][0];for(i=0;i<2;i++)(if(i==0)aa[i][i+I]=*p+1;else++p;printf("%d",

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

A、26

B、23

C、43

D、46

标准答案:B

知识点解析:观察题目,可以发现,*p二&aa⑼⑼语句实际是将数组aa的首地址赋

给了指针变量P,将i的值带入for循环中,i=0时,aa[0][l]=3,*p=2;*p输出的

是指针所指向的数组值,此时p所指向的是aa[0][0],输出2,而i=l时执行了++p

操作使指针向后移动指向了aa|0][l],所以在输出*p时应为3。因此B选项正确。

28、以下fun函数返回数组中最大值的下标#include<stdio.h>intfun(int*s,intn)

{inti,k;for(i=0,k=i;i<n;i++)if(s[i]>s[k]);return(k);)在横线

处应填入的内容是

A、++k

B、i=k

C^k++

D、k=i

标准答案:D

知识点解析:fun函数的功能是返回数组中最大值的下标。通过for循环语句,每

次将最大的数给k,即卜与。因此D选项正确。

29、有以下程序#includc<stdio.h>intfun(chars[]){char*p=s;whilc(*p!=0)

p++;return(p-s);}main(){printf(H%d\nH,fun(HOABCDEFM));)程序运行后的输出

结果是

A、1

B、6

C、7

D、0

标准答案:C

知识点解析:本题考查字符串作为函数参数以及while语句,本题中传入字符串

OABCDEF,然后执行fun后,就得到了该字符串中字符的个数,不包括结尾符,

该字符串有.7个字符,所以答案为C。

30、若有以下程序段charstr[4][12]={“aa"Jbbb","ccccc","d"},*strp[4];inti;for(i=

0;i<4;i++)strp[i]=str[i];不能正确引用字符串的选项是

A、str[0]

strp

C、strp[3]

D、*strp

标准答案:B

知识点解析:本题考查对字符数组中字符的引用。指针数组st「p表示每一个数组元

素都存放了一个字符串的首地址。选项B代表指针数组sirp的第一个数组元素的

地址,不是对字符的引用。所以选项B正确。

31、有以卜程序#include<stdio.h>#include<string.h>voidfun(char*s){char

a[10];strcpy(a,"STRING");s=a;}main(){char*p="PROGRAM”;fim(p);

printf("%s\n”,p);}程序运行后的输出结果是(此处□代表空格)

A、STRING

STRING□□口口

C、STRING□□口

D、PROGRAM

标准答案:D

知识点解析:本题考查字符串指针作为函数参数,本题中p作为字符串指针传入

fun中,p指向的内容并没有发生变化,所以选项D正确。

32、有以下程序#include<stdio.h>voidfun(intn,int*s){intf;if(n==l)*s=

n+1;else{fun(n-1,&f);*s=f;}}main(){intx=0;fun(4,&x);printf("%d\n,,,x);}

程序运行后的输出结果是

A、3

B、1

C、2

D、4

标准答案:C

知识点解析:本题考查函数的递归调用,将函数参数带入函数中,一步步递归即可

得到结果,结果为2,选项C正确。

33、有以下程序include<stdio.h>main(){charc[2][5]={"6938H,"8254"),*p[2];

inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p|i]|j]>0;j+=2)

s=10*s+p[i][j]-,0,;printno%d\n',,s);}程序运行后的输出结果是

A、9284

B、9824

C、6982

D、6385

标准答案:D

知识点解析:本题中首先是将二维字符数组c赋值指针数组p,然后遍历p找到两

个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为

6385

34、有以3程序#include<stdio.h>voidfun(int*$){staticintj=0;dos|j]+=

s[j+1];while(++j<2);}main(){inti,a[10]={1,2,34.5);for(i=l;i<3;i++)fun(a);

for(i=l;i<5;i++)printf("%d",a[i]);printf("\nn);}程序运行后的输出结果是

A、34756

B、5745

C>5795

D、35745

标准答案:B

知识点解析:本题主要考查do…while语句,执行fun函数后,a数组里面的元素

变为35745,输出后四个字符,所以结果为5745,选项B正确。

35、有以卜.程序段ini*p:p二malloc(sizeof(int));若要求使p指向一个

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

A、(int*)

B、int

C、int*

D、(*int)

标准答案:A

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

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

36、有以下程序#include<stdio.h>#defineSUB(X,Y)(X+1)*Ymain(){inta=3,

b=4;printf("%d\n",SUB(a++,b++));}程序运行后的输出结果是

A、25

B、20

C、12

D、16

标准答案:D

知识点》析:本题考查宏定义,宏定义只是做个简单的替换,执行

SUB(a十十,b++)=(a++十l)*b十十二16,选项D正确。

37、有以下程序include<stdio.h>main(){charc[2][5]={,,6938H;,8254H},*p|2];

inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)

s=10*s+p[i][j]-,0,;printr%d\n",s);}程序运行后的输出结果是

A、6938

B、9824

C、4528

D、6385

标准答案:D

知识点解析:本题中首先是将二维字符数组c赋值指针数组p,然后遍历p找到两

个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为

6385

38、若有以下程序段structst{intn;structst*next;};structst

a[3]={5,&a[l],7,&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选项正确。

39、有以卜程序#include<stdio.h>main(){inti=l;i=iAi;printf("%d\n",i);}程序

运行后的输出结果是

A、1

B、-1

C、0

D、7

标准答案:c

知识点解析:本题考查位运算中按位异或运算符,异或运算只有在两个比较的位不

同时其结果是1,否则结果为0,内运算符两边相同,所以结果为0,选项C正

确。

二、程序填空题(本题共1题,每题7.0分,共2分。)

40、下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个宁符),

写入文件myfile4.txt中,用一1作宁符串输入结束的标志,然后将文件的内容显

示在屏幕上。文件的读写分别由函数RcadTcxt和WfiteTcxt实现。请在程序的下

画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源

程序给出如下.不得增行或删行.也不得更改程序的结构!试题程序:#inciude<

stdio.h>#include<String.h>#includc<stdlib.h>voidWriteText(FTLE*),

voidReadText(FILE*);main(){FILE*fp;if((fp=fbpen(umyfile4.txt”,

“w"))==NULL){printfC'openfail!!\n");exit(0);)WriteText(fp);fclose(fp);

if((fp=fbpcn(4tmyfilc4.txt",ttr,,))=NULL){printf(wopenfail!!\nM);exit(O);}

ReadText(fp);fclose(fp);)/**********found***********/voidwrileText(FILE

[1]){Charstr[81]:printf(u\nEnterstringwith-1toend:\n"):gets(str);

while(strcmp(str,“一/**********found***********/fputs([2],fw);

fputsf4\fw);gets(str);)}voidReadText(FILE*fr)(charstr[81];prints\

nReadfileandoutputtoscreen:\n");fgetsfstr,81,fr);

while(!feof(fr)){/**********命und***********/printf("%s",[3]);fgets(str.

81,fr);))

标准答案:(l)*fw(2)str(3)str

知识点解析:填空1:定义函数,函数的形参是一个文件类型的指针。填空2:此

处考查fputs函数的形式,应填入sir。填空3:依据prinff函数的格式,输出字符

串内容,即prin货‘%s”,str);。

三、程序修改题(本题共I题,每题1.0分,共1分。)

41、下列给定程序中函数fun的功能是:将s所指字符串的正序和反序进行连接,

形成的新串放在t所指的数组中。例如,当s所指字符串为“ABCD”时,t所指字符

串中的内容应为“ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程

序:#include<conio.h>#include<sldio.h>#include<string.h>

/**********found***********/voidfun(chars,chart){inti,d;d=Strlen(S);

for(i=0;i<d;i++)t[i]=S[i];for(i=0;i<d;i++)t[d+i]=S[d—1-i];

/**********「ound***********/t|2*d一l]='\0';)main(){chars|100|,t|100],

printf(u\nPleaseenterstringS:"):Scanf("%S",S),fun(S,t),printg"\nThe

resultis:%s\n",t);}

标准答案:(l)voidfun(char*s,char*t)(2)t[2*d]=4\0*;或t[d+i]='\O';或

t[2*d]=0;或t[d+i]=O;

知识点解析:(1)从调用函数来看,函数传递的是数组,所以函数的形参应为指

针。(2)循环结束后回文宁符的个数为2,1个,因为数组下标是从0开始的,所以

最后一个字符的下标为2*d—l,在最后一个字符的后面加上结束符因此为

t[2*d]=t\0,;o

四、程序设计题(本题共[题,每题7.0分,共I分。)

42、请编写函数fun,其功能是:将放在字符串数纪中的M个字符串(每串的长度

不超过N),按顺序合并组成一个新的字符串。例如,若字符中数组中的M个字符

串为{“AAAA”,“RRRRRRR”,则合并后的字符串内容应该是

“AAAABBBBBBBCC”。注意:部分源程序给出如下。请勿改动主函数main和其

他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程

序:#include<stdio.h>#include<conio.h>#defineM3#defineN20void

fun(chara[M][N],char*b){}voidmain(){charW[M][N]={ttAAAA,\

“BBBBBBB”,“CC”};chara[100]={"#############"};inti;printfCThe

string:\n");for(i=0;i<M;i++)puts(w[i]);printf("\n"):fun(w,a);

printf(t4TheAstring:\n");printf("%S”,a);printR"\n、n");)

标准答案:voidfun(charchar*b){inti,j,k=0;for(i=0;i<M;i+-)/

*将字符串数组中的M个字符串,按顺序存入一个新的字符串*/for(j=0;

a[i][j]!=<\0,;j++)b[k++]=a[i][j];b[k]八(T;/*在字符串最后加上字符串结束标

记符*/}

知识点解析:本题考查:字符串连接操作。本程序中第1个for循环的作用是对二

维数组行的控制,第2个循环的作用是从同一行中取出字符并存放到一维数组b

中,语句足b[k++]=a[”U];。

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

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

1、有以下定义:structdata{inti;chare;doubled;)x;以下叙述中错误的是

()。

A、x的内存地址与x.i的内存地址相同

B、slructdata是一个类型名

C、初始化时,可以对x的所有成员同时赋初值

D、成员i、c和d占用的是同一个存储空间

标准答案:D

知识点解析:变量i、c、d是结构体变量x中三个不同的成员,占用不同的存储空

间。

2、以下函数的功能是:计算a的n次方作为函数值返回。doublefun(doublea,int

n){inti;doubles=l.0;for(i=1;i<=n;i++)S=;returns;}为实现上

述功能,函数中下划线处应填入的是()。

A、S*i

B、S*a

C、s+i*i

D、S+a*a

标准答案:B

知识点解析:s为a的(i—l)次方的结果,所以令s=s%即可得到a的i次方。

3、有以下程序:#include#includemain(){charstr0={HHello,Beijing"};

printf(n%d,%d\n",strlen(str),sizeof(str));}程序的运行结果是()。

A、13,13

B、13,14

C、13,15

D、14,15

标准答案:B

知识点解析:strlen返叵字符串的长度.不包含字符串末尾的结束字符、0"结果

为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个、

(T,所以结果为13+1=14。

4^若有说明:typedefstruct{inta;chare;)w;,则以下叙述正确的是()。

A、编译后系统为w分配5个字节

B、编译后系统为w分配6个字节

C、编译后系统为w分配8个字节

D、编译后系统不为w分配存储空间

标准答案:D

知识点解析:w是一个自定义类型,不是变量,故编译后系统不为w分配存储空

间。当w定义为结构体变量时才会为其分配存储空间。

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

A、同一个数组中所有元素的类型相同

B、不可以跳过前面的数组元素,给后面的元素赋初值0

C、定义语句:inta[10]={0};,给a数组中所有元素赋初值0

D、若有定义语句:inta[4]={l,2,3,4,5);,编译时将忽略多余的初值

标准答案:D

知识点解析:数组初始叱时,若赋初值的个数多于所定义数组的元素个数时,编译

器会报错。

6、若有以下定义:structtt{charnamef10];charsex;)aa={,'aaaa",'F'},

*P=&aa:则错误的语句是()。

A、scanf("%e",aa.sex);

B、aa.sex=getchar();

C、printf("%c\n",(*p).sex);

D、printf("%c\n",P->sex);

标准答案:A

知识点解析:sex是一个char类型变量,不是地址,A项应为scanf("%c”,

&aa.sex);。

7、C语言编译程序的功能是()。

A、执行一个C语言编写的源程序

B、把C源程序翻译成ASCH码

C、把C源程序翻译成机器代码

D、把C源程序与系统提供的库函数组合成一个二进制执行文件

标准答案:C

知识点解析:编译程序的功能是将“高级语言”翻译为“机器语言”,将c语言语句转

换成二进制的机器指令。

8、有以下程序:#includeintfun(intn){if(n)returnfun(n—I)+n;elsereturn0;}

mainO{printf(H%d\n",fun(3));}程序的运行结果是()。

A、4

B、5

C、6

D、7

标准答案:C

知识点解析:fun函数是一个递归函数,调用f(3),参数n=3,返回f(3-

1)+3=f(2)+3=f(1)+2+3=f<0)+1+2+3=0+6=6。

9、有以下程序:#includemain(){intsum=O,x=5;(10{sum+=x;)while(!—x);

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

A、0

B、5

C、14

D、15

标准答案:B

知识点解析:do-while循环,先执行循环体sum+=x,则sum=sum+x=0+5=5,再执

行while中的表达式,结果为0,退出循环,所以运行结果是5。

10、下面不属于软件设计阶段任务的是()。

A、软件的功能确定

B、软件的总体结构设计

C、软件的数据设计

D、软件的过程设计

标准答案:A

知识点解析:软件设计阶段的任务包括:①结构设计;②数据设计;③接口设

计;④过程设计。软件的功能确定是在需求分析阶段完成的。

II、有以下程序:#include#includetypedefstruetfeharname[9];charsex;float

score[2];)STU;voidf(STU*a){strcpy(a->name,"Zhao");a->sex=,m,;a->

score[i]=90.0:)main(){STUc={uQian",T,95.0,92.0),*d=&c:f(d);

printf("%s,%c,%2.Of,%2.Of\nn,d->name,c.sex,c.score[0],

c.score[l]);}程序的运行结果是()。

A、Qian,f,95,92

B、Zhao,f,95,90

C、Zhao,m,95,90

D、Zhao,f,95,92

标准答案:C

知识点解析:f函数调用时,结构体数组名作为实参传给形参指针,结构体指针a

指向数组c的首地址。因此,f可以对数组c中的元素赋值,故返回主函数之后,

数组c中的成员值已被更新。main函数中有赋值语句“*d二&c;",指针d指向结构

体数组c的首地址,故d->name=c.name,输出结果为Zhao,m,95,90。

12、在C语言程序中,下列说法正确的是()。

A、函数的定义可以嵌套,但函数的调用不可以嵌套

B、函数的定义不可以嵌套,但函数的调用可以嵌套

C、函数的定义和调用均不可以嵌套

D、函数的定义和调用均可以嵌套

标准答案:B

知识点解析:函数定义都是在函数外部进行的,函数调用是在函数内部进行的,所

以函数的定义不可以嵌套,但函数的调用可以嵌套。

13、执行以下程序段后,8的值为()。{1,2,3,4,5,6,7,8,9},

S=0,k;for(k=0;k<8;k+=2)s+=*(a+k);

A、13

B、16

C、17

D、45

标准答案:B

知识点解析:数组a中的元素为:a[O]=l,a[l]=2,...»a[8]=9<,k=0时,

s=S4-*(a+0)=0+l=l;k=2时,s=l+*(a+2)=1+3=4;k=4时,s=4+5=9;k=6时,

s=9+7=16o

14、有以下程序:#includc#dcfincM5#dcfincf(x,y)x*y+Mmain(){intk;

k=f(2,3)*f(2,3);printf("%d\n",k);}程序的运行结果是()。

A、22

B>41

C、100

D、121

标准答案:B

知识点解析:宏定义中的函数在调用时只做简单的替换,不能进行任何修改。所以

k=2*3+5*2*3+5=41o

15、有以下程序:#includemain(){charch=,Z*;ch=(ch-,A,+l)%26+,A,;

putchar(ch);)程序的运行结果是()。

A、Z

B、Y

C、B

D、A

标准答案:D

知识点解析:Z的ASCH码是90,A的ASCII码是65,所以ch=(ch,A,+l)%

26+,A,=26%26+65=65,输出65对应的字符A。

16、下面属于黑盒测试方法的是()。

A、基本路径测试

B、等价类划分

C、判定覆盖测试

D、语句覆盖测试

标准答案:B

知识点解析:等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可

能的输入数据(有效的和无效的)划分成若干个等价类进行测试。基本路径测试、判

定覆盖测试和语句覆盖测试都属于白盒测试。

17、有以下程序:#includemain(){inti,j,k,a=5»b=6;i=(a==b)?++a:—b;

j=a++;k=b;printf("%d,%d,%d\n",i,j,k);}程序的运行结果是()。

A、7,6,5

B、5,5,5

C、7,5,5

D^5,6,5

标准答案:B

知识点解析:条件表达式i=(a==b)?++a:-b;中先执行a==b,值为假,根据三元

运算符语法规则,执行-b,此时b为5,赋给i,i=5;j=a++,将a=5先赋给j,再

进行a++,j=5,a=6,k=b=5,故最后输出的是5,5,5。

18、C语言程序中,若函数无返回值,则应该对函数说明的类型是()。

A、int

B、double

C、char

D、void

标准答案:D

知识点解析:int表示返回值是整型,double表示返回值是双精度型,char表示返

回值是字符型,void表示无返回值。

19、有以下程序:#includemain(){intk,n=0;chare,slr[]="teach”;for(k=0;

str[k];k++){c=str[k]:switch(k){case1:case3:case5:putchar(c);printf(M%

d",++n);break;default:putchar(,N,);}}}序的运行结果是()。

A、NeINN

B、ela2e3

C、NelNc2N

D、NalNNNN

标准答案:C

知识点解析:程序执行过程:k=0时,c=str[0]=t,执行default分支,输出N;

k=l时,c='e',执行easel分支,没有break语句,继续执行case3分支,没有

break语句,继续执行case5分支,输出el;k=2时,c='a:输出N:k=3,

c='c',输出c2;k=4,c='h',输出N。故程序的输出结果为NelNc2N。

20、有以下程序:#includevoidfun(char(*p)[6]){inti;for(i=0;i<4;

,n

i++)printf("%c”,P[i][i]);printf("\n");}main(){chars[6][6]=('ABCDE,

"abede","12345","FGHIJ%"fghij","54321”};fun(s);}程序的运行结果是

()o

AalF

B、Ab3I

C、ABCD

D、fghij

标准答案:B

知识点解析:函数fun的功能是输出二维数组的对角线元素,所以程序会

输出s⑼[0]、s[l][l]>s⑵⑵、s[3][3],即Ab3L

21、设变量x为longin(型并已正确赋值,以下表达式中能将x的百位上的数字提

取出的是()。

A、x/10%100

B、x%10/100

C>x%100/10

D、x/100%10

标准答案:D

知识点解析:x/100的个位数是x的百位数上的数字,所以再进行除10取余运算

即可得到该数字。

22、在E-R图中,表示实体的图形是()。

A、矩形

B、椭圆

C、菱形

D、圆

标准答案:A

知识点解析:在E-R图中,矩形表示实体集,矩形内写该实体集的名字。

23、下面对软件特点描述不正确的是()。

A、软件是一种逻辑实体,具有抽象性

B、软件开发、运行对计算机系统具有依赖性

C、钦件开发涉及软件知识产权、法律及心理等社会因素

D、软件运行存在磨损和老化问题

标准答案:D

知识点解析:与硬件不同,软件在运行、使用期间不存在磨损、老化问题。

24、设x,y,z均为实型变量,代数式语言中的正确写法是()。

A、x/y*z

x%y%z

C、x/y/z

D、x*z/y

标准答案:C

知识点解析:运算符X、/的结合顺序是从左到右,所以x先除以y,再除以z。

25、有以下程序:#include#defineN4voidfun(inta[][N],intb[]){inti:for(i=0;

i<N;i++)b[i]=a[i][N-l-i];}main(){intx[N][N]={l,2,3,4,5,6,7,8,9,

10,11,12,13,14,15,16),Y[N],i;fun(x,y);for(i=0;i<N;

i++)printf("%d,“,y[i]i;printf(H\n");}程序的运行结果是()。

A、1,2,3,4,

B、3,6,9,12,

C、4,7,10,13,

D、1,5,9,13,

标准答案:C

知识点解析:调用fun函数,y[i]=x[i][N-l-i],N=4,x是4行4列的二维数组。

i=0时,y[0]=x[0][4-l]=x[0][3]=4;i=l时,y[l]=x[l][4-l-l]=x[l][2]=7;i=2

时,y[2]=x[2][4-1-2]=x[2][l]=10;i=3时,y[3]=x[3][0]=13o

26、在下列链表中,能够从任意一个结点出发直接访问到所有结点的是()。

A、单链表

循环链表

C、双向链表

D、二叉链表

标准答案:B

知识点解析:线性单链表,必须从头指针开始,才能访问到所有的结点;循环链表

的最后一个结点的指针域指向表头结点,所有结点的指针构成了一个环状链,只要

指出表中任何一个结点的位置就可以从它出发访问到表中其他所有的结点;双向链

表头结点和尾结点之间没有链接,所以如果从中间结点开始访问无法直接访问到所

有结点;二义链表从除艰结点之外的任意一个结点出发无法直接访问到所有结点。

27、有以下程序:#includemain(){inti,j,x=0;for(i=0;i<2;i++){x++;

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

x);)程序的运行结果是()“

A、x=4

B、x=6

C^x=8

D、x=12

标准答案:C

知识点解析:第一次循环:i=0,执行x++后x=l,执行内层循环j=0,由于j%2!

=0时才执行x++,即只有j取1和3时,执行x++,此时x=l+l+l=3,跳出向层循

环,执行下一条x++,x=4,第二次循环:x=l时,重复上述循环,共执行两次循

环,故x最终结果是4*2=80

28、对图书进行编目时,图书有如下属性:ISBN书号,书名,作者,出版社,出

版日期。能作为关键字的是()。

A、ISBN书号

B、书名

C、作者,出版社

D、出版社,出版日期

标准答案:A

知识点解析:关键字是由能惟一标识元组的属性或属性集合。书号可以惟一标识一

本图书,本题中,书名、作者、出版社、出版日期等字段都不能惟一标识一本图

书。

29、若主函数中有定义语句:inib[10],C;,在主函数前定义的fun函数

首部为:voidfun(intx[]),则以下选项中错误的调用语句是()。

A、fun(b);

fun(&c);

C、fun(&a[3]);

D、fun(bflI]);

标准答案:D

知识点解析:fun函数的形式参数为一个数组,需要实参为一个地址,而b[ll]是一

个整型元素,参数类型不一致,且b[U]已经溢出,所以D项错误。

30、构成C语言程序的三种基本结构是()。

A、顺序结构、转移结构、递归结构

B、顺序结构、嵌套结构、递归结构

C、顺序结构、选择结构、循环结构

D、选择结构、循环结构、嵌套结构

标准答案:C

知识点解析•:C语言程序是结构化程序,由三种基本结构组成:①顺序结构;②

选择结构;③循环结构。

31、下列形式中不合法的常量是()。

A、2.E8

B、28

C、-028

D、2e-8

标准答案:C

知识点解析:0开头表示的是八进制整型常量,八进制数只能用0〜7的数字表

示。

32、下列与栈结构有关联的是()。

A、数组的定义域使用

B、操作系统的进程调度

C、函数的递归调用

D、选择结构的执行

标准答案:C

知识点解析:函数的递归调用是指函数调用函数本身,直到满足特定条件时终止,

然后从最后被递归调用处返回。递归函数是通过栈来实现的,所以调用原则和栈的

实现相一致。

33、以下不是C语言字符型或字符串常量的是()。

A、It's

B、0

C、'a=0'

Ds,\010,

标准答案:C

知识点解析:C项是一个赋值表达式。AB两项是字符串常量,D项是字符常量。

34、下列数据结构中,属于非线性结构的是()。

A、双向链表

B、循环链表

C、二叉链表

D、循环队列

标准答案:C

知识点解析:线性结构的特点:除了首结点和尾结点外,每一个结点只有一个前驱

结点和一个后继结点。线性表、栈、队列都是线性结构,循环链表和双向链表是线

性表的链式存储结构;带链的栈是栈的链式存储结构。二叉链表是二叉树的链式存

储结构,二义树是非线性结构,所以二义链表是非线性结构。

35、有以下程序:#includemain(){intk=10;printf("%4d,%o,%x\n",k,

k,k);}程序的运行结果是()。(口代表一个空格)

A、10,12,a

B、口口10,012,a

C、010,12,a

D、口口10,12,a

标准答案:D

知识点解析:%4d表示输出占4个字符的十进制,故先输出2个空格,然后输出

10;%。表示输出八进制,所以输出10的八进制为12;%x表示输出十六进制,

即a。

36、数据库管理系统是()。

A、操作系统的一部分

B、系统软件

C、一种编译系统

D、一种通信软件系统

标准答案:B

知识点解析:系统软件主要包括:①操作系统软件;②各种语言的解释程序和编

译程序:③各种服务性程序:④各种数据库管理系统。

37若有定义:inta=l,b=2,c=3;»则执行表达式(a=b+c)||(++b)后,a,b,c的

值依次为()。

A、1,2,3

B、5,3,2

C、5,2,3

D、5,3,3

标准答案:C

知识点解析:II表示或运算,当第一个表达式为真时,第二个表达式不执行。根

据运算符的优先级规则,先计算(a=b+c),将b+c的值赋值给a,则a=5,而II右

边的括号不会被执行,所以b=2,「3。

38、有两个关系R和T如下:则由关系R得到关系T

的操作是()。

A、选择

B、交

C、投影

D、并

标准答案:C

知识点解析:关系T是由关系R的第1、3列的元组组成,这是对关系R进行投影

运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。

39、设有:chars[5],c;,则调用函数scanf能正确给s和c读入数据的是()。

A、scanf("%s%C",s,c);

B、scanf("%d%C",&s,&c);

C、scanf("%d%C",s,&c);

D、scanf("%s%C",s,&c);

标准答案:D

知识点解析:s[5]中放的是字符串,故输入的类型应该是%$;变量c中放的是字

符,故输入的类型是%却要正确读入数据必须要使用s和c的地址,而S代表就

是字符数组的首地址。

40、若变量已正确定义并赋值,则错误的赋值语句是()。

A、a+=a+1;

a=sizeof(double);

C^a=d||c;

D、a+l=a;

标准答案:D

知识点解析:赋值号』”的左边必须是一个变量名,不可以是表达式。

二、程序填空题(本题共7题,每题7.0分,共7分0)

41、请补充fun函数,该函数的功能是:计算NxN维矩阵元素的方差,结果由函

1463032

a=40617

数返回。维数在主函数中输入。例如:451548的计算结果是14.414o

,2r

/—i(xk-x)X--ix

求方差的公式为:其中小/'注意:请勿改动主函数

main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或

语句。【试题源程序】#includc#includc#dcfincN20doublefun([1]>intn){int

i,j;intk;doubles=0.0:doublef=0.0;doubleaver=0.0;double

sd=0.0;for(i=0:i<N:i++)for(j=0;j<N:j++)S+=a[i][j];aver:[2];

for(i=0;i<N;i++)for(j=0;j<N;j++)f+=(a[i][j]-aver)*(a[i]|j]-aver);f/

=(n*n);sd=[3];returnsd;)main(){inta[N]|N];intn;inti,j;doubles;

clrscr();printf("*****InputthedimensionofarrayN******\n");scanf("%cT,

&n);printf("*****Thearray*****\n");for(i=0;i<N;i++){for(j=0;j<N;

j++){a[i]|j]=rand()%50:while(a[i][j]==0)a[i][j]=rand()%60;printf("%4d",

,,

a[i][j]);}printfC\n\n);)S=fun(a,n);printf-*****THERESULT*****\

nu);printf(M%4.3f\nH,s);)

标准答案:[1]inta[][N][2]s/(n*n)[3]sqrt(f)

知识点解析:根据题目中的方差公式,先要计算矩阵元素的平均值,再求矩阵元素

与平均值差的平方的平均值,最后调用库函数求方差。填空【1】:根据函数中各

变量的使用情况及实参的类型,这里应该是对二维数组a的定义,因为二维数组做

形参,可以省略第一维的长度,但不能省略第二维的长度,所以此处应填int

a[][N]0填空【2】:这里求矩阵元素的平均值,注

温馨提示

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

评论

0/150

提交评论