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

下载本文档

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

文档简介

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

卷12(共9套)

(共270题)

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

卷第1套

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

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

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

B、算法所处理的数据量

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

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

标准答案:A

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

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

所需要的额外空间。

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

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

A、4

B、5

C、6

D、不确定

标准答案:D

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

地址中,因此当fronl=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、定义语句无错,primf不能输出case的值

标准答案:B

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

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

4、有以下程序#includeVstdio.h>main(){inta=3;printR''%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[]或*a效果完全一样

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

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

标准答案:B

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

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

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

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

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

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

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

外部指的是()。

A、冠以关键字extern

B、位置在函数体外部

C、作用范围是全程的

D、位置在函数的外部

标准答案:D

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

符的特征。

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

y+=3;pfintf("%d\n",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经过选择操作就可以得到

关系To

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

b=c;c=a;printfa=%db=%dc=%d\n",a,b,c);

A、a=30b=50c=10

B、a=10b=30c=10

C、a=10b=50c=10

D、a=50b=30c=50

标准答案:C

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

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

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

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

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

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

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

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

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

D、aa[O]存放了字符串“abed”的首地址

标准答案:D

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

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

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

(a—=++A),(a+=b,b+=4);primf("%d,%d.%d\n",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

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

40

12,若有以下程序#includechar*a=,,you",b[]="welcome#you#to#China!H?

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++;}if(a[j]=,\O^break;})

printfC%s\nn,p);}则程序的输出结果是

A、#you#to#China!

B、me#you#to#China!

C、#China!

D、#to#China!

标准答案:D

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

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

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

13、若有定义inta;floalb;doublec;程序运行时输入:345〈回车,能把值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表示按照浮点型输入,”%1F表示按照长精度浮点型

输入,所以答案选A。

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

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

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

C、用typedef可以增加新类型

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

标准答案:C

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

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

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

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

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

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

A、外键

B、候选键

C、主键

D、主属性

标准答案:A

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

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

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

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

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

项A正确。

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

A、(3«4)==1

R、(3+4)>6

C、(3!=4)>2

D、3<=4

标准答案:C

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

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

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

}程序运行后的输出结果是

A、1,

B、1,—2,

C、3,0,

D、1,0

标准答案:B

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

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

0,循环退出。

18、有以卜程序#includeVstdio.h>voidmain(){chars[]=,,012xy\08s34f4w2";

inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='O'&&s[i]V='9')n++;printf("%d\

n",n);1程序运行后的输出结果是

A、0

B、7

C、3

D、8

标准答案:C

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

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

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

19、有下列程序:#include<stdio.h>/*fun函数的功能是将a所指数组元素从

大到小排序*/voidfun(int*a,intn){intt,i,j;for(i=0;i<n-1.j++)ford=i+1;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++)printf("%d,

n

c[i]);printf("\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,1,

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

标准答案:A

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

数执行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、有以下程序#include<stdio.h>main()voidfun(char*c,intd){charb=,a\

a='A';{*c=*c+l;d=d+1: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,6,1}},i,k,t;

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+4-)printf("%d;;a[0][i]);}程

序运行后的输出结果是

A、6,2,11,

B、1,126,

C、2,3,4,6,

D、6,4,32

标准答案:D

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

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

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

以输出结果为643,2。

24、以下叙述中错误的是

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

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

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

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

标准答案:A

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

制。

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

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

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

C、用typedef可以增加新类型

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

标准答案:C

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

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

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

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

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

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

卷第2套

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

1、以下叙述中正确的是

A、每个后缀为.c的C语言源程序都应该包含一个main函数

B、在C语言程序中,main函数必须放在其他函数的最前面

C、每个后缀为.c的C语言源程序都可以单独进行编译

D、在C语言程序中,只有main函数才可单独进行编译

标准答案:C

知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才

可以执行。

2、下列叙述中正确的是

A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D、上述三种说法都不对

标准答案:C

知识点解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另

一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中

元素随栈顶指针的变化而动态变化,遵循后进先出的规则。

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

A、软件具有明显的制作过程

B、软件在使用中存在磨损、老化问题

C、软件复制不涉及知识产权

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

标准答案:D

知识点解析:软件具有以下特点:软件是一种逻辑实体,而不是物理实体,具有抽

象性;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不

存在磨损、老化问题;软件的开发、运行对硬件和环境具有依赖性;软件复杂性

高,成本昂贵;软件开发涉及诸多的社会因素(包括软件知识产权及法律等问题)。

4、己知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将

变量c中的大写字母转换为对应小写字母的语句是

A、c=('A'+c)%26-'a,

B、c=C+32

C、c=C・'A'+'a'

D、c=(C-'A')%26+'a'

标准答案:A

知识点解析:由题意可知,小写字符a和大写字符A的ASCH代码相差为32,所

以选项C能将大写字符C的ASCII代码转换为小写字符c的ASCH代码;选项D

和C)左侧的表达式都是大写字符C与大写字符A的差与"的ASCII代码的和就是

小写字符c的ASCH代码。而选项A中应该是加上,a,,而不是减去匕二

5、结构化程序设计中,下面对got。语句使用描述正确的是()。

A、禁止使用goto语句

B、使用got。语句程序效率高

C、应避免滥用goto语句

D、以上说法都不对

标准答案:c

知识点。析:结构化程序设计中,应尽量避免使用GOTO语句,但不是禁止使

用,所以选择C。

6、面向对象方法中,继承是指

A、一组对象所具有的相似性质

B、一个对象具有另一个对象的性质

C、各对象之间的共同性质

D、类之间共享属性和操作的机制

标准答案:D

知识点解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义

技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它

们。

7、下列定义变量的语句中错误的是()。

A、int_int;

BNdoubleint;

C、charFor;

D、floatUSS;

标准答案:D

知识点解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了

非法字符“$",所以错误。标识符由字母、数字或下划线组成,且第一个字符必须

是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个

不同的字符,所以For不是关键字for。

8、某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子

结点数为

A;不存在这样的二叉树

B、200

C、198

D、199

标准答案:B

知识点解析:在二叉树中,设叶子结点个数为no,度为2的结点个数为n2,叶子

结点的个数计算方法no52+l=199+l=2OO,所以选项B正确。

9、若a、b、c、d都是int型变量且都已经正确赋初值,则以下不正确的赋值语句

是()。

A、a+d:

B、a++:

C、a=b=c=d=100;

D、a=(b=3)+(d=5);

标准答案:A

知识点解析:C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C、选

项D正确;在选项B中,a++是一个自加1的表达式,a被重新赋值,因此它是一

个合法的赋值表达式;选项A中,a+d是一个算术表达式,虽然最后有一个分号,

但这个表达式中没有赋值操作,因此它不是一条赋值语句。

10、若有以下程序段:intr=8;printf("%d\n",r»l);输出结果是()。

A、16

B、8

C、4

D、2

标准答案:c

知识点.析:本题考查位运算,属于基础知识。题目中的整型变量8,二进制表达

为00001000,右移一位为00000100,即4,C选项正确。

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

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

B、getchar函数用于从磁盘文件读人字符

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

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

标准答案:B

知识点解析:本题考查字符处理函数和文件做操函数,属于基础知识。其中B选

项的getehar函数用于从终端读入字符。

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

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

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

和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗

余度大;数据库系统管理阶段共享性大,冗余度小。

13、若变量已正确定义,则语句s=32;s』32;printf("%dM,s);的输出结果是

()o

A、-1

B、0

C、1

D、32

标准答案:B

知识点解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果

为1,否则结果为0,题目中两个值相同,所以结果为0。

14、子函数的功能是通过键盘输入给x所指的整型数组所有元素赋值。在下划线处

应填写的是()。#include#defineN5voidfun(intx[N]){inim;for(m=N一1;m>

=0;m——)scanf(,,%d,\_);}

A、x+m

B、x[++m]

C>x+(m++)

D、x[m+l]

标准答案:A

知识点解析:本题用f。!■循环给数组赋值,与上题类似,选项B和选项D不是地

址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环

里面又m一—自减,会导致死循环,不满足要求,选项A正确。

15、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是

A、DB包含DBS和DBMS

B、DBMS包含DB和DBS

C、DBS包含DB和DBMS

D、没有任何关系

标准答案:C

知识点解析:数据库系统(DaiabaseSyslem简称DBS)由下列几个部分组成:数据库

(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平

台(硬件)、系统平台之二一软件平台(软件)。这五个部分构成了一个以数据应为

核心的完整的运行实体,称为数据库系统。其中:DB(DataBase)即数据库,是统一

管理的相关数据的集合:DBMS(DatabaseManagementSystem)即数据库管理系统,

是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB

的方法。

16、以下选项中不合法的标识符是

A、FOR

B、&a

C^print

D、_00

标准答案:B

知识点露析:合法的标-只符要满足组成字符为a〜z以及A〜Z,数字字符0到9和

下划线,其中数字不开头,不能是关键字。选项Bj中,&不属于组成字符,是错

误的。

17、下面不属于黑盒测试方法的是

A、边界值分析法

B、基本路径测试

C、等价类划分法

D、错误推测法

标准答案:B

知识点解析•:常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误

推测法和因果图等。白盒测试是把程序看成装在一只透明的白盒里,测试者完全了

解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的

逻辑通路是否都按预定的要求正确地工作。白盒测试的主要技术有逻辑覆盖测试、

基本路径测试等,故选择B选项。

18^有以下程序程ifun(intn){ifln=l)retuml;elseretum(n+fun(n-l));)main()

{intx;scanf("%d'',&x);x=fun(x);printf(,,%d\n,,»x);}执行程序时,给变量

x输入10,程序的输出结果是

A、54

B、65

C、45

D、55

标准答案:D

知识点解析:在C语言中函数可以递归调用,即直接或间接地自己调用自己。本

题在函数inlfun(inm)的定义中又出现了对函数fun的调用,所以函数fun是递归函

数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程

为:

fun(l0)=10+fun(9)=10+9+fun(8)=l0+9++8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+

fun(6)=10+9++8+7+6+5-fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fu

n(2)=10+9++8+7+6+5+4+3+2+fun(I)=10+9++8+7+6+5+4+3+2+1=55

19、关于变量的定义和说明的叙述中正确的是()。

A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思

R、在复合语句中不能定义变量

C、全局变量的存储类别可以是静态类

D、函数的形式参数不属于局部变量

标准答案:C

知识点解析:C语言的关键字static说明符说明全局变量时,此变量可称作静态全

局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一

个函数内部定义的变量(包拈形参)是局部变量,它只在本函数范围内有效。不同函

数中可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部

复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。

20、学院的每名教师只能属于一个系,则实体系和实体教师间的联系是

A、一对多

B、多对多

C、多对一

D、一对一

标准答案:A

知识点3析:一对多关系是关系数据库中两个表之问的一种关系,该关系中第一个

表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可

以与第一个表中的一个行相关。本题中一个是体系有多个老师,但老师只能属于一

个系,因此是一对多关系。

21、已定义以下函数intfun(int*p){return*p;}fun函数返回值是

A、一个整数

B、不确定的值

C、形参p中存放的值

D、形参p的地址值

标准答案:A

知识点解析:返回值为指针变量指向的数据,该数据已被定义为整型。因此A选

项正确。

22、有以下程序:#include<stdio.h>#definePT3.5:#deflneS(x)PT*x*x;

main(){inta=l,b=2;prinff(M%4.lf\n%S(a+b));}程序的运行结果是()°

A、7.5

B、31.5

C、程序有错无输出结果

D、14.0

标准答案:C

知识点解析:宏定义不是C语句,末尾不需要有分号,语句prinlf(”%4.lf\n",

s(a+b));展开后为printf("%4.3.5:*a+b*a+b;);,所以程序会出后语

法错误。

23、23.以下程序的输出结果是()。main(){intm=l,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*P,*q);)

A、2,1,2,1

B、1,2,2,1

C、1,2,1,2

D、2,I,1,2

标准答案:B

知识点露析:题目中在主函数定义了3个整数指针变量p,q,r,并且使p指向

m,q指向n,再执行“r=p;p=q;q=r;”这三条语句,使q指向m,p指向n,再输

出变量“m,n,*p,*q”时,它们值分别为1,2,2,1。

24>有以下程序#include#defineSUB(a)(a)-(a)main。{inta=2,b=3,c=5,d:

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

A、-12

B、0

C、10

D、-20

标准答案:D

知识点解析:本题主要考查的是宏替换,在程序中执行d=sub(a+b)*c这条语句

时,首先要进行宏替换,依据宏SUB(a)的定义可知,上面这条语句替换为

d=(a+b)-(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即

d=5-5*5=.20,.

25、以下程序的输出结果是()。#includemain()#defineN4{intx[][N]={{1,2,

3),(4),(5,6,7,8),(9,10}),voidfun(inta[|[N],intb[])y[N],i;{inti:

fun(x,y);for(i=O;i<N;i++)b[i]=a[i][i];for(i=0;i<N;i++)printR''%d,",

y[i]):}printfCAn-);}

A、3,4,8,10,

B、1,4,5,9,

C、1,0,7,0,

D、1,2,3,4,

标准答案:C

知识点解析:题目中函数fun(inta[][N],intb口)的功能是把矩阵a[N][N]主对角线上

的元素赋给一维数组b[]。在主函数中由x[][N]的初始化可知,其主对角线上的元

索是1,0,7,0o所以当执行完函数fun(x,v)后,一维数组y[]中的元素值为1,

0,7,0,选项为C。

26、以下能正确输出字符a的语句是()。

A、printf("%s'\"a");

B、printR-');

C、printf(“%c",");

D、printff%d",'a');

标准答案:A

知识点解析:输出函数primf()的一般形式为“primf(“格式控制字符串二输出项1,输

出项2,…厂,输出项的形式要和格式控制字符串中的格式控制符保持一致,“%s”为

输出字符串,“%c”为输出单个字符,“%d”为以十进制形式输出带符号整数,答案

选Ao

27、在进行数据库逻辑女计时,可将E-R图中的属性表示为关系模式的

A、属性

B、键

C、关系

D、域

标准答案:A

知识点解析:在进行数据库逻辑设计时,可将E-R图中的属性表示为关系模式的

属性。

28、在数据库中,数据模型包括数据结构、数据操作和

A、查询

B、数据类型

C、关系运算

D、数据约束

标准答案:D

知识点解析:在数据库系统中的数据模型有三个要素:数据结构、数据操作和数据

的约束条件。其中数据的约束条件包括三种:实体完整性约束条件、参照完整性约

束条件和用户定义的完整性约束条件。因此选项D正确。

29、若变量均已正确定义并赋值,以下合法的C语言赋值语句是

A^x=n%2.5;

B>x+n-i;

C、x=5=4+l;

D、x=y==5;

标准答案:D

知识点解析:选项D的含义是把关系表达式y=5的值赋给变量x。所以这是一条正

确的赋值语句。因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或

者常量。因为求余运算符“%”两侧的运算对象都应当是整型数据。

30、有以下程序程ncludeVstdio.h>main(){inty=10;while(y-);printf("y=%d\

n",y);}程序执行后的输出结果是

A、y=0

B、y=-l

C^y=l

D、while构成无限循环

标准答案:B

知识点解析:在while循环中每次变量y的值减1,直到其值等于0时退出循环,

这时y的再减1变为-1。

31、有以卜程序main(){inta=O,b=O,c=O,d=O;if(a=l)b=l;c=2;elsed=3;

printf("%d,%d,%d,%d\n",a,b,c,d);)程序输出

A、0,0,0,3

B、

C、编译有错

D、0,1,2,0

标准答案:D

知识点解析:if语句的格式为:if(表达式)语句1else语句2if和eke是C语言的

关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语

句,若需要多条语句时,则应该使用复合语句。因此题目if(a=l)b=l;c=2;else

d=3;if分支有两条语句,没构成复合语句。

32、以下叙述中正确的是

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

B、函数的返回值不能是结构体指针类型

C、在调用函数时,可以将结构体变量作为实参传给函数

D、结构体数组不能作为参数传给函数

标准答案:C

知识点解析:和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的

返回值也可以是结构体类型。

33、若有以下程序#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=

k;)returns;(main(){inti=3,j=5,*p=&i,*=&j,*r;r=f(p,q);

printf(M%d,%d,%d,%d,%d\n",i,j,*P,*q,*r);}则程序的输出结果是

A、3,5,5,3,5

B、5,3,5,3,5

C>5,3,3,5,5

D、3,5,3,5,5

标准答案:D

知识点解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小

于第二个参数,那么交爽指针的指向,这对于实参指向的数据时没有影响的。最后

返回比较大的元素的地址。主函数中p指向i,q指向j,调用r=f(P,q),返回q的

地址,因此*p=3,*q=5,*r=5o

34、有以下程序main(){chara|5][10]={"one","two","three","four","five");inti,j;char

t;for(i=0;i<4;i++)for(j=i+ly<5;j++)if(a[i][O]>a[j][O])

{t=a[i][0];a[i][O]=a[j][0];a[j][0]=t;}puts(a[l]);}程序运行后的输出结果是

A^fwo

owo

C、two

D^fix

标准答案:A

知识点解析:这个程序的执行过程是当i=0时,j=l,a[0][0]=oVa[l][0]=t;不置换;

当i=l时,j=2,a⑴⑼=t=a⑵⑼不置换;当i=2时,j=3间2n0]=l>a[3][0]=f;置换

a[2][0]=f,a[3][0]=t;此时,a⑵再置换a⑵当i=3

时,户4再[3][0]=曰43][0]不不置换;所以a川的结果为fwo。

35、若有以下程序typedefstructstu{charname[10],gender;iniscore;)STU;void

f(char*P){strcpy(P,"Qian1'):|main(){STlJa={"Zhao".290),h:b=a:

f(b.name);b.gender=T;b.score=350;printf("%s,%c,%d,",a.name,

a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,

b.score);)则程序的输出结果是

A、Zhao,m,290,Zhao,m,290

B、Qian,f,350,Qian,f,350

C^Zhao,m,290,Qian,f,350

D、Zhao,m,290,Zhao,f,350

标准答案:C

知识点解析:主函数中结构体变量定义同时赋初值。执行b=a;语句后,b的数据

和a的数据相同,调用函数f(b.name),形参指针p接收实参b.name的地址,此

时p和b.name指向同一个存储空间,流程转到f执行,p指向的存储空间仔放字

符串“Qian”,流程结束返同主函数。主函数中变量b的其他成员仔放数据。凶比a

的数据{“Zhao",'m',290},b的数据为{“Qian”,T,350}。注意本题结构体STU

类型变量a和b中的name成员为数组,不是指针,它具有自己的存储空间。

36、下面描述中不属于数据库系统特点的是

A、数据共享

B、数据完整性

C、数据冗余度高

D、数据独立性高

标准答案:C

知识点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C

错误。

37、以下叙述中正确的是

A、函数的形式参数不属于局部变量

B、对于变量而言,“定义“和“说明”这两个词实际上是同一个意思

C、在复合语句中不能定义变量

D、全局变量的存储类别可以是静态类

标准答案:D

知识点解析:声明变量不分配空间,定义变量要分配空间,所以B选项错误。符

合语句中可以定义变量,所以C选项错误。函数的形参属于局部变量,所以A选

项错误。

38、设有定义:charp[尸{T,2,3},*q=p;,以下不能计算出一个char

型数据所占字节数的表达式是()。

A^sizeof(p)

B、sizcof(char)

C、sizeof(*q)

D、sizeof(p[0])

标准答案:A

知识点解析:根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所

占用的字节数,而不是char型数据所占字节数0

39、有以下程序includemain(){inti,j,m=55;for(i=l;i<=3;i++)for(j=3;j<=i;j++)

m=m%j;printf("%d\nm);}程序的运行结果是

A、0

B、1

C、2

D、3

标准答案:B

知识点解析:第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,

不满足条件,跳出内循环,第二次执行外循环i的值为2,同理也不满足内循环条件,

跳出内循环,第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,

执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。

40、设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形

式如下(注:此处□代表一个空格)□□1.0口口2.0口口3.0<回车〉则能进行正确输入的语

句是

A、scanf(n%lf%lf%lf;a,b,c);

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

C>scanf("%f%f%『,&a,&b,&c);

D、scanf(n%5.1lf%5.11^5.1lf;&a,&b,&c);

标准答案:B

知识点解析:scanf函数的一般形式为scanf(格式控制,变量1地址,变量2地址

其中,格式字符串要与数据类型保持一致,所以格式字符串中应为%lf,后面应该为变

量地址,所以需要加上符号所以选择Bo

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

卷第3套

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

1、下列叙述中正确的是

A、算法就是程序

B、设计算法时只需要考虑数据结构的设计

C、设计算法时只需要考虑结果的可靠性

D、以上三种说法都不对

标准答案:D

知识点解析:所谓算法是指解题方案的准确而完整的描述.是一组严谨地定义运算

顺序的规则,并且每一个规则都是订效的,且是明确的,此顺序将在有限的次数下

终止。算法不等于程序,也不等于计算方法。设汁算法时不仪要考虑对数据对象的

运算和操作,还要考虑算法的控制结构。

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

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

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

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

D、以上说法均不正确

标准答案:C

知识点解析:一般来说,在线性表的链式存储结构中,各数据节点的存储序号是不

连续的,并且各节点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数

据的插入和删除都不需要移动表中的元素,只需改变节点的指针域即可。

3、下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[5]={1,2,

3,4,5);int*p=a,**q=&p;printfT%d'',*(p++));printf(,,%d>,,**q);)

A、22

B、11

C、34

D、12

标准答案:D

知识点解析:。程序首先定义了一个指向一维数组a的指针p,一个指向指针变量

p的指针变量q,输出气p+)是先输出作即a[0]的值,再将指针p指向数组的下一个

元素a[1],输出**q是输出指针p所指向单元的内容,即a[l]的值。

4、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5:structst

s[3]=({101,&a),{102,&c)»{103,&b)};main(){structst*p;p=s;…}则

以下表达式中值为5的是()。

A^(p++)->m

BN*(p++)->m

C、(*p)-m

D、*(H_p)->m

标准答橐:D

知识点解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后

定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变

量s的指针p,要使表达式的值为5,就应该引用s[l].m的值,使指针p指向

s[l],++p可以实现将p指针加1,指向

5、设有表示学生选课的3张表,学生S(学号,姓名,性别,年龄,身份证号),课

程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。

A、课号,成绩

R、学号,成绩

C、学号,课号

D、学号,姓名,成绩

标准答案:C

知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的

关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C

选项。

6、有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\rT,

F(a++,b++));}程序运行后的输出结果是()。

A、12

B、15

C、16

D、20

标准答案:A

知识点解析:此题考查的是编译预处理命令以及自加运算符。“F(a++,b++)”先取

a和b的值,参加运算,再把a和b的值分别加1,所以“F(a++,

b++)=F(3,4尸3*4=12”。

7、下面描述中,不属于软件危机表现的是

A、软件过程不规范

B、软件开发生产率低

C、软件质量难以控制

D、软件成本不断提高

标准答案:A

知识点解析:软件危机主要表现在以下6个方面:①软件需求的增长得不到满

足。②软件开发成本和进度无法控制。③软件质量难以保证。④软件不可维护

或维护程度非常低。⑤软件的成本不断提高。⑥软件开发生产率的提高赶不上硬

件的发展和应用需求增长。

8、占构化程序设计的基本原则不包括

A、多元性

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,

模块化和限制使用GOTO语句,其中不包括多态性。

9、以下程序段完全正确的是

A^intk,*p=&k;scanf('r%d",p):

B、int*p;scanf("%d",p):

C、int*p;scanf("%d",&p);

D、intk,*p;*p=&k:scantf(',%d'\p);

标准答案:A

知识点解析:选项B)没有对指针进行初始化,无效指针。选项C)错在没有对指针

进行初始化,无效指针,并且在scanf("%d”,&p)中无需再进行取地址操作。选项

D),语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为尸&匕

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

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

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

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

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

标准答案:A

知识点解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理

逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细

的说明。

11、合法的C语言数值常量是()。

A、21.0Xa334.5eO

B、018.5e-3-0xf

C、.1344el.5Oabc

D、0x8A10,0003.e5

标准答案:A

知识点解析:C语言常量数制中的八进制数其开头必须是数字“0",其数字包括

0〜7,而在选项B中,D18是错误的。浮点数据的指数形式表示常量中,C语言规

定字母。或E之前必须要有数字,且e或E之后的指数必须为整,而选项C中

4el.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。

12、以下数组定义中错误的是

A、intx[][3]={0};

B、intX[2][3]={{1,2),{3,4),{5,6)};

C.intx[][3]={{l,2,3},{4,5,6)};

D、intx[2][3]={l,2,3,4,5,6);

标准答案:B

知识点解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行

的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第一维的定

义。在选项A)中赋值号左边定义了一个3行2列的二维数组,而右边用2行3列

的数字进行赋初值。所以出现了边界的越界溢出而出错。

13、下列选项中,不能用作标识符的是

A、_1234

B、_1_2

C、int_2_

D、2_int_

标准答案:D

知识点解析:C语言中标识符必须以字母或者下划线开始,选项D)中是以数字开

始的不能作为标识符。

14、若有以下程序段charstr[4][12]={“aa","bbb",,'ccccc,r,"d"},*strp[4];inti:

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

A、strp

str[O]

C、strp|3]

D、*strp

标准答案:A

知识点解析:程序段中定义指针数组*sirp,含有4个元素,for循环sirp分别俣存

了二维数组str中的4个字符串的首地址,因此strp为二级地址,不能保存字符串

的首地址,*strp或者st「p[0]中存放了字符串“aa”的首地址。所以不能正确引用字符

串的为选项A。

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

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

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

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

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

标准答案:B

知识点解析:C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错

误。

16、设循环队列的存储空间为Q(l:35),初始状态为front二reai-35。现经过一系列

入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为

A、15

B、16

C、20

D、0或35

标准答案:D

知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指

针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时:头尾

指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果

是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶

尾指针,故队空和队满时,头尾指针均相等。答案为D选项。

17、现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中P#为患者编号,Pn为

患者姓名,Pg为性别,By为出生日期,Tr(P#,D#,Date,Rt),其中D#为医生编号,

Date为就诊日期,Rt为诊断结果。检索在1号医生处就诊的病人姓名的表达式是

A、兀pn(兀p#(OD#=(Tr))A<P)

B、7tp#(QD#=(Tr)

C、兀pn(P)

D、兀pn(Tr〉vP)

标准答案:A

知识点解析:检索在1号医生处就诊的病人姓名的表达式,首先对Tr(P#,D#,

Date,Rt)关系在以就诊日期D#-1为条件作选择运算,得到在1号出诊的医生信

息,然后再与患者P(P#,Pn,Pg,By)关系作自然连接运算,对运算结果在患者编

号列作投影运算,再在患者姓名列作一次投影运算,得到在1号医生处就诊的病人

姓名。所以选项A正确。

18、若有定义:inta,b;通过语句scanf(”%d;%d”,&a,&b);能把整数3赋给

变量a,5赋给变量b的输入数据是

A、3,5

B、35

C、3;5

D、35

标准答案:C

知识点解析:在采用scanf这个函数输入数据时,要严格遵守其输入的规则定义。

本题此函数定义的规则是,在两个整数之间加分号输入。

19、以下程序段中,与语句:k=a>b?(b>c?l:0):0;功能相同的是

A、if((a>b)II(b>c))k=l;elsek=0:

BNif(a<=b)k=0;elseif(b<=c)k=1;

C、if((a>b)&&(b>c))k=1;elsek=0;

D、iffa>b)k=l;elseif(b>c)k=l:elsek=O;

标准答案:C

知识点解析:题干中的表达式的功能是当a>b并且b8时,变量k的值等于1,其

余情况下,变量k的值都是等于0。

20、设有如下函数定义intfun(intk){if(k<l)retum0;elseif(k==l)rcturni;else

returnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数

A、2

B、4

C、3

D、5

标准答案:C

知识点解析:这道题目考查了函数的递归调用,当执行调用语句n=fun(3)时.返问

n=fun(2)+1,再执行fun⑵,返回n=fun(l)+l+l,而fun(l)等于1,所以最后n的值

等于3。而函数fun总共被调用了3次。即fun(3),fun(2),fun(l)o

21、下列选项中,能够满足“只要字符串si等于字符串s2,则执行ST”要求的是

A、if(sl==s2)ST;

BNif(st

温馨提示

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

评论

0/150

提交评论