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

下载本文档

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

文档简介

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

卷u(共9套)

(共313题)

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

卷第1套

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

1、数据结构主要研究的是数据的逻辑结构、数据的运算和()。

A、数据的方法

B、数据的存储结构

C、数据的对象

D、数据的逻辑存储

标准答案:B

知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学

科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

2、一棵一叉树的前序遍历结果是ARCEDF,中序遍历结果是CRAEDF,则其后序

遍历的结果是()。

A、DBACEF

B、CBEFDA

C、FDAEBC

D、DFABEC

标准答案:B

知识点解析:由于该二叉树的前序遍历结果是ABCEDF,显然A结点为根结点,

所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDAo

3、在数据处理中,其处理的最小单位是()。

A、数据

B、数据项

C、数据结构

D、数据元素

标准答案:B

知识点解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加

工处理的信息载体,数据处理的最小单位是数据项。

4、在数据库系统的内部结构体系中,索引属于()。

A、模式

B、内模式

C、外模式

D、概念模式

标准答案:B

知识点解析:内模式又祢物理模式,它给出了数据库物理存储结构与物理存取方

法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式

的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘

操作)。

5、以下()不属于对象的基本特征。

A、继承性

B、封装性

C、分类性

D、多态性

标准答案:A

知识点解析:对象具有特征:标识惟一性,指对象是可区分的;分类性,指可以将

具有相同属性和操作的对象抽象成类;多态性,指同一个操作可以是不同对象的行

为;封装性,从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体

结构以及实现操作的算法;模块独立性好,对象是面向对象的软件的基本模块,对

象内部各种元素彼此结合得很紧密,内聚性强。

6、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。

A、软件矛盾

B、软件危机

C、软件耦合

D、软件产生

标准答案:B

知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期

显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了

入门难以控制软件发展的局面,即所谓的“软件危机”。

7、关系模型允许定义3类数据约束,下列不属于数据约束的是()。

A、实体完整性约束

B、参照完整性约束

C、属性完整性约束

D、用户自定义的完整性约束

标准答案:c

知识点0析:关系模型允许3类数据约束,它们是:实体完整性约束该约束要求

关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。参照完整性

约束:该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即

在关系中的外键要么是所关联关系中实际存在的元组,耍么就为空值。用户定义

的完整性约束:用户定义的完整性就是针对某一具体关系数据库的约束条件,它反

映某一具体应用所涉及的数据必须满足的语义要求。

8、关系表中的每一行记录称为一个()。

A、七段

B、元组

C、屈性

D、关键码

标准答案:B

知识点解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称

为一个元组,对应表中的一条记录。

9、在数据库管理技术的发展中,数据独立性最高的是()。

A、人工管理

B、文件系统

C、数据库系统

D、数据模型

标准答案:C

知识点解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程

序:在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。

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

A、C语言区分大小写

B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需

要随时修改

C、整数和实数都能用C语言准确无误地表示出来

D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示

标准答案:c

知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和

Q是两个不同的变量:②变量的实质就是在内存中占据一定的存储单元,存储单

元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范

围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进

制、八进制和十六进制表示。

11、有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case

1:case3:printf(''%d'n'‘,n);break;case2:case4:printR''%d\

continue;case0:exit(O);}printf,%d\n",n);}以卜.关于程序段执行情况的叙

述,正确的是()

A、for循环语句固定执行8次

B、当产生的随机数n为4时结束循环操作

C、当产生的随机数n为1和2时不做任何操作

D、当产生的随机数n为0时结束程序运行

标准答案:D

知识点解析:当产生的随机数n为。时,执行“case。:exit(0)”这条语句,结束程序

的运行。

12、可在C程序中用作用户标识符的一组标识符是()。

A、voiddefineWORD

B、as_b3_123If

C、For-abccase

D、2cDOSIG

标准答案:B

知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个

字符必须是字母或下划线,关键字不能用作用户标识符。

13、若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。

A、a=a+7;

a=7+b+c,a++

C、int(12.3%4)

D、a=a+7=c+b

标准答案:B

知识点解析:选项A是一个C语句,不是表达式;选项B是利用一个逗号表达式

给a赋值;选项C中的“%”求余运算符要求两个运算对象都必须是整型;选项D

中.不能用表达式给表达式赋值.但是变量可以给自身赋值,例如:a=a+1„

14、有以下程序段charch;intk;ch=,a,:k=l2;prir)tf("%oc»%d,ch,ch,

k);printf(、k=%d\n”,k);已知字符a的ASCH十进制代码为97,则执行上达程

序段后输出结果是()。

A、因变量类型与格式描述符的类型不匹配输出无定值

B、输出项与格式描述符个数不符,输出为零值或不定值

C、a,97,12k=12

D、a,97,k=12

标准答案:D

知识点解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如

果格式说明的个数少于瑜出项的个数,多余的输出项不予输出;如果格式说明个数

多于输出项个数,则对于多余的格式项输出不定值或0。

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

A、计算机不能直接执行用C语言编写的源程序

B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件

C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件

D、后缀为.obj和.exe的二进制文件都可以直接运行

标准答案:D

知识点解析:C源程序经过程序编译之后生成一个后缀为obi”的二进制文件(称

为目标文件),然后由称为“连接程序''的软件包文件与C语言提供的各种库函数连

接起来生成一个后缀为“.exe”的可运行文件。

16、有以下程序#includc<stdio.h>voidmain()(inta=i,b=0;pnntf(''%

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

A、4,6

B、2,5

C、3,5

D、2,6

标准答案:B

知识点解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为

1和0;在第二条语句中,首先计£b=a+a,然后a自增两次,因此第二句结束

时,b=2»a=3,然后笫三句,a+b=5,>

17、若有代数式(其中e仅代表自然对数的底数,不是变量),则下列能

够正确表示该代数式的C语言表达式是()。

A、sqrt(abs(nAx+eAx))

B、sqrt(fabs(pow(n,x)+pow(x,e)))

C^sqrt(fabs(pow(n,x)+exp(x)))

D^sqrt(fabs(pow(x»n)+exp(x)))

标准答案:c

知识点n和e的x基次方,要分别调用C语言的数学库函数“double

pow(n,x)”和“doubleexp(x)”因为这两个函数的返回值都为double型,对两者的和计

算绝对值,调用库函数“doublefabs(pow(r),x)+exp(x))”,求出和的绝对值,再调用开

平方函数“doublesqrt(fabs(pow(n,x)+exp(x))),\这样计算出的结果就是题干中表达

式的值。

18、设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同

的是()。

A、k++

B、k+=l

C、++k

D、k+1

标准答案:A

知识点解析:因为题中有语句“intk=O;”,所以选项B、C、D都是对k的值加I,

选项A的语句k++表示先利用k的值进行运算,然后k的值才加lo

19、有下列程序,其中%u表示按无符号整数输出。main。(unsignedint

x=0xFFFF;/*x的初值为十六进制数*/printf«%u\nLx);}程序运行后的

输出结果是()。

A、-1

B、65535

C、32767

D、OxFFFb

标准答案:B

知识点解析:“%u”格式符表示以十进制形式输出无符号整形变量。本题中无符号

整形变量x=0xFFFF表示的是十六进制无符号整型变量的最大值65535,所以最后

输出的结果为65535。

20、下面程序的运行结果是()。for(i=3;i<7;i++)pFntf((i%2)?(''**%d\n')

i);

A、**3##4**5**6

B、##3**4##5**6

C、##3**4##5##6

D、**3##4**5##6

标准答案:D

知识点解析:本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf

函数输出时“**%d\n”和“##%d'n”中的“##”和“**”都是直接输出。②条件表达式

的基本格式为:“a?b:c"。它的运算规则为:当a为非。时,整个表达式的值取b

的值,当a为。时,整个表达式取c的值。

21>设有语句:if(a==l)b=2;c=3;,以下语句中与之等价的是()。

A、if(a==l){b=2;c=3;}

B>if(a!=l){;)else(b=2;c=3;}

C、if(a==l)c=3;b=2;

D^(a==l)?b=2:a=a;c=3;

标准答案:D

知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一

块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项

A、B、C均与题中所给不同,而选项D相同。

22、运行下列程序时,若输入数据为“321”,则输出结果是()。main(){intnum,

ij,k,s;scanf(''%d'',&num);if(num>99)s=3:elseif(num>9)s=2;else

s=l;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s))case3:

printf(''%d%d%d\n'',k,j,i);break;case2:printf(''%d%d\n”,k,j);

case1:printf(''%d\n",k);})

A、123

B、1,2,3

C、321

D、3,2,1

标准答案:A

知识点解析:本题考查if...else语句和switch语句。scanf函数通过键盘读入。num

的值。因为“num=321>99”,所以"s=3,i=3,i=2,k=l"。因为s=3,所以执行case

3,输出k,i,i的值,然后通过break结束:程序。

23、有以下程序#includc<stdio.h>#includc<string.h>structA{inta;char

b|10];doublec;};structAf(structAt);main(){structA

a={1001;,ZhangDaM098.0};a=f(a);printf(''%d,%s,%6.1f\n,\a.a,

a.b,a.c);)structAf(structAt){t.a=1002;strcpy(t.b»''WangPcng'');

t.c=1220.0;returnt;}程序运行后的输出结果是()。

1001,ZhangDa,1098.0

B、1002,ZhangDa,1220.0

C、1001,WangPeng,1098.0

D、1002,WangPeng,1220.0

标准答案:D

知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数

f(a),在函数f(a)中对结构体变量a的各个成员重新进行了赋值操作,并把其值返

回在屏幕上输出。

24、设有定义:charsUO];inti=O;,以下不能将一行(不超过100个字符)带有空

格的字符串正确读入的语句或语句组是()。

A、gets(s);

B、scanfp,%s'',s);

C、while((s[i-H-]=getchar())!=,\n,):s[i]=,\O':

D、do{scanff'%c'',&s[i]);)while(s[i++]!=,\n?);s[i]='\0';

标准答案:B

知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入

的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回

车或者空格。因此选项B不能,选项C和选项D中按字符逐个读入字符串s中,

直到读入的字符是换行符为止,因此正确。

25、下面4个关于C语言的结论中错误的是()。

A、可以用do…while语句实现的循环一定可以用while语句实现

B、可以用for语句实现的循环一定可以用while语句实现

C、可以用while语句实现的循环一定可以用for语句实现

D、do…while语句与while语句的区别仅是关键字“while”出现的位置不同

标准答案:D

知识点解析:本题考查几个循环语句的关系。①do…while语句、while语句、for

语句所实现的循环可以相互替代;②do…while语句和while语句的区别是

do...while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。

26>若有以卜程序段: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

B、*(p++)->m

C、(*p).m

D、*(++p)->m

标准答案:D

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

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

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

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

27、卜列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){static

intm=4;*y=s[0];m++:)voidmain(){inta[]={1,2,3,4,5},k;intx;

printf(''\n'');for(k=0:k<=4;k++){sub(a,&x);printf(''%d,”,x);)|

A、1,1,1,1,1,

1,2,3,4,5,

C、0,0,0,0,0,

D、4,4,4,4,4,

标准答案:A

知识点解析:本题中su5(int*s,int*y)函数的参数是两个指针型变量,在函数体内将

数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过

for循环,5次调用sub(a.&x)函数.每一次调用都是将数组a的第一个元素1赋给

x,并输出。

28、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);else

retum((x+y)/2);}main(){inta=4,b=5,c=6;pfintf(''%d\n",fun(2*a,

fun(b,c)));}程序运行后的输出结果是()。

A、3

B、6

C、8

D、12

标准答案:B

知识点解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即。fun(8,6)>

8!=6,所以返回6。

29、C语言中规定,程序中各函数之间()。

A、既允许直接递归调用也允许间接递归调用

B、不允许直接递归调用也不允许间接递归调用

C、允许直接递归调用不允许间接递归调用

D、不允许直接递归调用允许间接递归调用

标准答案:A

知识点解析:本题考查函数调用的基本概念。在函数调用时,只要符合函数的使

用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。

30、以下程序的输出结果是()。#include<stdio.h>main(){inta[3][3]={0,1,

2,0,1,2,。,1,2},i,j,s=I;tor(i=0;i<3;i++)tor(j=i;j<=i;j++)

s+=a[i][a][j][j];printf(''%d\n'',s);)

A、3

B、4

C、I

D、9

标准答案:B

知识点解析:当外层循环为i时,内层循环j只能取j=i,所以s+=其实就

是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[0][0]]=s+a[0][0]=l,当i=l时

s=s+a[1][a[1][1]]=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]J=s+a[2][2]=2+2=4<>

31、有以下程序:#inelude<stdio.h>#defineX5+6main(){inta=2,c;c=X*2:

printfT%d”,c);}程序运行后的输出结果是()。

A、17

B、22

C、16

D、11

标准答案:A

知识点解析:define语句仅进行简单替换,因此c=5+6*2=17c

32、当用“#defineF37.5『定义后,下列叙述正确的是()。

A、F是float型数

B、F是char型数

C、F无类型

D、F是字符串

标准答案:D

知识点解析:字符替换定义格式为:#deflne标识符(形参表)形参表达式。题中F是

代表形参表达式的标识符(字符串)。

33、若有定义语句:inta=3,b=2,c=l;,以下选项中错误的赋值表达式是()。

A、a=(b=4)=3;

B、a=b=c+1;

C^a=(b=4)+c;

D、a=l+(b=c=4);

标准答案:A

知识点解析:这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号』”的

左边一定为变量名,右边为一个C语言合法的表达式。

34、以下说法正确的是()。

A、宏定义是C语句,要在行末加分号

B、可以使用#undefine提前结束宏名的使用

C、在进行宏定义时,宏定义不能嵌套

D、双引号中出现的宏名也要进行替换

标准答案:B

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

行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程

序中可以使用#undefine;④在进行宏定义时,宏定义能层层置换,能够嵌套。

35下面程序的输出结果是()。Typedefunion{longx[l];inty[4];char

z[I0];}M;Mt:main。{printf(''%d\n",sizcof[t));)

A、32

B、26

C、10

D、4

标准答案:C

知识点解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体

的z[10]成员是联合体中占空间最长的成员。

36、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序void

sort(inta[],intn)(inti,j,t;fbr(i=O;i<n-l;i++)for(j=i+l;j<n;j++)if(a[i]<

a[j]){t=a[i];a[i]=a[j];a[j]=t;})main(){intaa[IO]={1,2,3,4,5,6,7,8,

9,10),i;sort(&aa[3],5);for(i=0;j<10;i++)ptintf(''%d,",aa[i]);

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

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

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

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

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

标准答案:C

知识点解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函

数main中调用函数"so「(&aa[3],5);”,使得数组aa中从第4个元素开始的5个

元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,

10o并输出这些元素。

37、设x=061,y=016,则z=xIy的值是()。

A、00001111

B、11111111

C、00111111

D、11000000

标准答案:c

知识点解析:本题主要考查按位或运算,x=061(二进制为00110001),y=016(•二进

制为00001110),进行或运算后结果为OOllllllo

38、函数rewind(fp)的作用是()。

A、使fp指定的文件的位置指针重新定位到文件的开始位置

13、将tp指定的文件的位置指针指向文件中所要求的特定位置

C、使fp指定的文件的位置指针向文件的末尾

D、使fp指定的文件的位置指针自动移至下一个字符位置

标准答案:A

知识点解析:位置指针重返文件头函数rewind。的调用形式为:rewind(fp)。其中,

“fp”是指向文件的文件型指针。rewind(fp)的功能是:使fp指定的文件的位置指针

重新定位到文件的开始位置。

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

卷第2套

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

1、以下选项中,当x为大于1的奇数时,值为0的表达式是()。

A、x%2==0

B、x/2

C、x%2!=0

D、x%2==1

标准答案:A

知识点解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的

奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的

值为真,即loD选项的值为真,即1。

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

A、在C语言中,逻辑真值和假值分别对应1和0

B、关系运算符两边的运算对象可以是C语言中任意合法的表达式

C、对于浮点变量x和y,表达式:x==y是非法的,会出编译错误

D、分支结构是根据算术表达式的结果来判断流程走向的

标准答案:B

知识点解析:A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:

X==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是

算数表达式的值。因此B选项正确。

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

A、a!=4IIE

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

C、’a,%4

D、'A,+32

标准答案:B

知识点解析:A选项中匕,即表示a为字符常量,再给匕,赋值1/2*(x=y=20,

x*3),是不正确的。因此B选项正确。

4、与数学表达式xNyNz对应的C语言表达式是()。

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

B、(x>=y>=z)

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

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

标准答案.D

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

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

5、若a是数值类型,贝!逻辑表达式(a==l)II(a!=l)的值是()。

A、1

B、0

C、2

D、不知道a的值,不能确定

标准答案:A

知识点解析:逻辑或“II”要求只要两边的运算对象有一个非零,结果就为真,虽

然不知道a的值,但是若a为1,则左边运算对象为I,若a的值不是1,则右边运

算对象的值为1,所以总能保证一边非零,所以结果为真,即1。

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

A、(c>=2&&c<=6)&&(c%21=1)

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

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

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

标准答案:D

知识点解析:逻辑或运算符中只要有一个运算量为真结果就是真,当c>=2&&cV

=6条件不成立时c的值肯定不是2、3、4、5、6,所以c!=3,与c!=5均成立。所

以D选项的结果一定为真。

7、有以下程序:#includemain(){inta=l,b=2,c=3,d=0;if(a:=I&&b++==2)

if(b!=2IIc--!=3)printf(M%d,%d,%d\n”,a,b,c:elseprintf(H%d,%

d,%d\n",a,b,c;elseprinff("%d,%d,%d\n",a»b»c;}程序运行后

的输出结果是()。

A、1,3,2

B、1,3,3

C、1,2,3

D、3,2,1

标准答案:B

知识点解析:在if语句中,else总是和最近的if配对,所以进入第一个if语句中条

件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需

要逐个执行判断的结果为1,进入第二个if语句条件判断,因为b!=2条件成立所

以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c--!=3)c的值

不变,也不再执行第一个else语句。打印a的值1,b的值3,c的值3。

8、若有以下程序:#includemain(){inta=l»b=2»c=3,d:4;

if((a=2)||(b=l))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%(i,%d,%d\n',

a,b,c,d;则程序的输出结果是()。

A、1,2,3,4

B、2,1,2,-I

C、5,1,2,-1

D、2,2,2,4

标准答案:D

知识点解析:第一个if语句的判断条件是逻辑或表达式,所以只要有一个运算对

象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执

行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为

20判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一

个表达式c==3,不成立,不再判断第二个运算对象,所以不执行<1=一1操作却

a=5操作。所以结果为选项D。

9、若有以下程序:#includemain(){inta=l,b=2,c=3,d=4;if((a=2)&&(b=l))

c=2;if((C==3)||(d=-l))a=5;printf("%d,%d,%d,%d\n”,a,b,c,d;}则

程序的输出结果是()。

A、2,2,2,4

B、2,L2,-1

C、5,1,2,-1

D、1,2,3,4

标准答案:c

知识点。析:第一个if语句的判断条件是逻辑与表达式,只有运算对象均非零结

果才为真,执行第一个if判断条件,均为赋值表达式,第一个运算对象a=2非

零,判断第二个表达式b=l也非零,所以条件成立执行c=2的赋值操作。执行第二

个if判断条件中的逻辑或表达式,只要有一个对象非零结果就是真,本条件中

c==3运算对象为假,所以需要判断第二个运算对象(1二一1,结果为非零,所以条

件成立,执行a=5,的操作,所以a值为5,b值为1,c值为2,d值为-1。

10、以下关于逻辑运算符两侧运算对象的叙述中正确的是()。

A、可以是任意合法的表达式

B、只能是整数0或非0整数

C、可以是结构体类型的数据

D、只能是整数0或1

标准答案:A

知识点解析:C语言的逻辑运算符比较特别,它的噪作数没有明确的数据类型,可

以是任意合法的表达式,所以选择A。

11、设有宏定义:#defineIsDIV(k,n)((k%n==l)?l:0)且变量m已正确定义并赋

值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是()。

A、判断m是否能被5和7整除

B、判断m被5和7整除是否都余1

C、判断m被5或者7整除是否余1

D、判断m是否能被5或者7整除

标准答案:B

知识点解析:本题考查逻辑运算符的相关概念。逻辑与若要为真,那么两边都要为

真,需要m能被5和7整除,且都余1,所以选项B正确。

12、表示关系式xgyWZ的C语言表达式的是()。

A、(x<=y)&&(y<=x)

B、(x<=y)II(y<=x)

C、(x<=y<=z)

D、x<=y)!(y<=x)

标准答案:A

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

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

13、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

()。

A、必须是逻辑值

B、必须是整数值

C、必须是正数

D、可以是任意合法的数值

标准答案:D

知识点解析:if语句中的表达式可以是任意合法的数值,如常量,变量表达式。所

以D选项正确。

那(x^O)

14、有以下计算公式:(x<0)若程序前面已在命令行中包含malh.h文

件,不能够正确计算上述公式的程序段是()。

A、if(x>=0)Y=sqrt(x);if(x<0)y=sqrt(-x);

B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);

C^y=sqrt(x);if(x<0)Y=sqrt(-x);

D、y=sqrt(x>=O?x:-x);

标准答案:C

知识点解析:公式的要求是无论x大于等于0还是小于0,y的值都为x绝对值的

开方。选项C中如果x值小于0,则y=sqrt(x)就要出错。本题重点考察的知识点

是:sqrl()函数。$qrt()函数的作用是开方计算,要求输人的参数x必须大于等于

0o选项C一开始调用了sqrt(x)而没有判断x的正负,所以是错误的。

15、下列条件语句中,输出结果与其他语句不同的是()。

A、if(a!=O)prinlf("%d\n",x);elseprintf("%d\n'\y);

B、if(a==O)printf("%d\n",y);elseprintf("%d\n",x):

',n

CNif(a==O)printf(%d\n'\x);e]sepnntf(%d\n",y);

D>if(a)prinlf("%d\n",x);elseprintf(',%d\n",y);

标准答案:C

知识点解析:A、B、D选项的含义均为a的值如果为0时打印y的值,否则打印x

的值。但是C选项的含义是:a的值为0时打印x的值,不为0时打印y的值,与

其他选项正好相反。

16、若有以下程序:#includemain(){inta=l,b=2,c=3,d=4,r=0;if(a!=l);

elser=1;if(b==2)r+=2;e]se;if(c!=3)r+=3;else;if(d==4)r+=4;printf(n%d\

n",r);}则程序的输出结果是()。

A、10

B、7

C、6

D、3

标准答案:B

知识点解析:else总是和与之最近的if配对,执行第一个if,判断条件不成立,执

行elser=l;语句。再执行第二个if语句中的判断条件,成立,左移执行r+=2,r

的值为3,再执行第三人if的判断条件,不成立,执行第7行else后面的空语句

再执行第四个if的判断条件d==4成立,执行r+=4,r的值为7。然后打印

输出。

17^若有以下程序:#includemain(){inta:1,b=2,c=3,d=4,r=0:if(a!=l);

e]ser=1;if(b==2)/-+=2;if(c!=3);r+:3;if(d==4)r+=4;printf("%d\n",

r);}则程序的输出结果是()。

A、3

B、7

C、6

D、10

标准答案:D

知识点解析:第一个if语句a!=l条件为假,所以执行else后的语句厂1。第二个if

语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!=3条件为假,所

以不做任何操作。执行下面的r+=3操作,r的值变为6。判断第四个if条件,d==4

条件成立,执行r+=4操作,结果为10。

18、以下叙述中正确的是()。

A、对于逻辑表达式:a++llb++,设a的值为1,则求解表达式的值后,b的值

会发生改变

B、、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值会

发生改变

C、case不是一条独立的语句,它只是if语句的一部分

D、关系运算符的结果有三种:0,1,-1

标准答案:C

知识点解析:B选项和A选项中,&&、II都是先计算左边表达式的值,当左边

表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。而且&

&、II的优先级比十十高,所以题中只需判断a的值即可知道符号表达式的真

假;D选项中,关系运算符的结果有“真”和“假”两种。因此C选项正确。

19^有以下程序:#includemain(){intx=l,y=0,a=0,b=0;switch(x){case1:

switch(y){case0:a++;break;case1:b++;break;}ca,se2:a++;b++;

break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结

果是()。

A、a=2,b=2

B、a=2,b=1

C、a=1,b=1

D、a=l,b=0

标准答案:B

知识点解析:case常量表达式只是起语句标号作用,并不是在该处进行条件判断。

在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此

case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内

层switch(y)时只执行了a++,此时a的值为1。然后执行外层case2语句的a++;

b++;a为2,b为1。所以结果为B。

20、有以下程序段:#includeinti,n:for(i=0;i<8:i++){n=rand()%5;

switch(n){case1:case3:printf("%d\n”,n);break;case2:case4:printf("%

d\n",n);continue;case0:exit(O);}printf("%d\n",n);}以下关于程序段

执行情况的叙述,正确的是()。

A、for循环语句固定执行8次

B、当产生的随机数n为4时结束循环操作

C、当产生的随机数n为1和2时不做任何操作

D、当产生的随机数n为0时结束程序运行

标准答案:D

知识点解析:cltse常量表达式只是起语句标号作用,并不是在该处进行条件判

断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就

从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。简单的

说break是结束整个循环体,而continue是结束单次循环。B选项中当产生的随机

数n为4时要执行打印操作。C选项中当产生的随机数为1和2时分别执行case3

与cased后面语句的内容。由于存在break语句所以for循环不是固定执行8次,执

行次数与产生的随机数n有关系。

21、若有定义:floatx=l.5;inta=l,b=3,c=2;则正确的switch语句是()。

A、svvitch(a+b){case1:printf("*\n");case2+1:printf(M**\n");)

B、switch((int)x);{caseI:printfC**\nH);case2:printf(H**\n");}

C^switch(x){case1.0:prinff("*\n'*):case2.0:printf("**\n");}

D^switch(a+b){case1:printf("*\n'1);casec:prinff(n**\n");}

标准答案:A

知识点解析:B选项中switch((int)x);语句不应该有最后的分号。switch(exprl),中

的cxprl不能用浮点类型或long类型,也不能为一个字符串,所以C错误。case后

面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。

22、有以下程序:#inckidemin(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)

switch(i%2){case0:switch(a[i]%2){caseO:a[i]++;break;case1:a[i]-

-;}break;case1:a[i|=0;)for(i=0;i<4;i++)printf(,'%d",a|i|);printf(H\

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

A、0304

B、2050

C、3344

D、3040

标准答案:D

知识点解析:第一次循环i为0,i%2为0,执行switch(a[0]%2)中的case。语句,

a[0]++,a⑼的值变成3;第二次循环i的值为1。i%2为1,执行easel:a[i]=0;

所以a[l]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的

easel语句,a[2]一一,a[2]的值变成4;第四次循环i的值为3,i%2为1,执夕亍

case1:a[i]=0;所以a⑶的值变成0。

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

A、在switch语句中,不一定使用break语句

B、在switch语句中必须使用default

C、break语句必须与switch语句中的case配对使用

D、break语句只能用于switch语句

标准答案:A

知识点解析:defauh语句在swilch语句中可以省略,所以B错误;switch语句中并

非每个case后都需要使用break语句,所以C错误;break语句还可以用于for等循

环结构中,所以D错误。

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

卷第3套

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

1、下列叙述中正确的是

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

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

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

D、算法的时间复杂度与空间复杂度没有直接关系

标准答案:D

知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的

时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案

为D。

2、下列叙述中正确的是

A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化

B、循环队列中的元素个数随队头指针的变化而动态变化

C、循环队列中的元素个数随队尾指针的变化而动态变化

D、以上说法都不对

标准答案:A

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

针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直

到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中

的元素个数与队头指针和队尾指针的变化而变化,A正确。

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

点数为

A、219

B、229

C、230

D、231

标准答案:B

知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-l,

叶子节点即度为0,则n2=79,总结点数为n0+nl+n2=80+70+79=229,答案为B。

4、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为

A、9

B、10

C、45

D、90

标准答案:C

知识点解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是

每次比较都要将相邻的两个元素互换,需要互换的次数为

9+8+7+6+5+4+3+2+1=45,选C。

5、构成计算机软件的是

A、源代码

B、程序和数据

C、程序和文档

D、程序、数据及相关文档

标准答案:D

知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数

据和有关的文档,选D。

6、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任

务的是

A、测试

B、设计

C、可行性研究

D、实现

标准答案:C

知识点解析:开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求

分析、总体设计和详细设计3个阶段,实施则包括编码和测试两个阶段,C不属于

开发阶段。

7、下面不能作为结构化方法软件需求分析工具的是

A、系统结构图

B、数据字典(DD)

C、数据流程图(DFD图)

D、判定表

标准答案:A

知识点解析:结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和

判定表。

8、在关系模型中,每一个二维表称为一个

A^关系

B、属性

C、元组

D、主码(键)

标准答案:A

知识点解析:关系模型采用二维表来表示,即每个二维表称为一个关系。

9、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C

的联系是

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实

体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一

个实体与之联系,则可毒出对于A中的每一个实体,C中有多个实体与联系,所

以为一对多联系。

10、有三个关系R、S和T如下:0则由关系R和S得到关系T的操作是

A^选择

B、投影

C、交

D、并

标准答案:D

知识点露析:关系T中的元素与关系R和关系S中不同元素的总和,因此为并操

作。

11、以下叙述中正确的是

A、C语言程序所调用的函数必须放在main函数的前面

B、C语言程序总是从最前面的函数开始执行

C、C语言程序中main函数必须放在程序的开始位置

D、C语言程序总是从main函数开始执行

标准答案:D

知识点解析:C语言所调用的函数可以放在调用它的函数前,也可以放在调用它的

函数后,所以A错误?C语言程序总是从main函数开始执行,所以B错误?main函数

的位置可以放在开始,也可以放在中间,也可以放在最后,所以C错误?

12、C语言程序中,运算对象必须是整型数的运算符是

A、&&

B、/

C、%

D、*

标准答案:C

知识点解析:%取余运算是二目运算符,且要求运算对象必须为整数,所以选C。

13>有以下程序#includemain(){intsum,pad,pAd;sum=pad=5;pAd=++sum,

pAd++,++pad;printf("%d\nn,pad);)程序的输出结果是

A、5

B、6

C、7

D、8

标准答案:B

知识点解析:C语言区分大小写,pad与pAd是两个不同的变量,首先将5赋值给两

个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=++sum,此时pAd

为6,sum也为6,然后计算pAd++,pAd的值变为7,++pad,pad的值变为6,所以选择

Bo

14,有以下程序#includemain(){inta=3;a+=a-=a*a;printf("%d\n",a);}程序的输

出结果是

A、0

B、9

C、3

D、-12

标准答案:D

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

a=a+a=-6+(-6),所以值为-12。

15>sizeof(double)是

A、一个整型表达式

B、一个双精度型表达式

C、一个不合法的表达式

D、一种函数调用

标准答案:A

知识点解析:sizeof是C语言中的一个操作符(operator),不是函数调用,简单的说其

作用就是返回一个对象或者类型所占的内存字节数,所以选择A。

16、有以下程序#includemain(){inta=2,c=5;printf("a=%%d,b=%%d\n'\a,c);)程

序的输出结果是

A、a=2,b=5

B、a=%2,b=%5

C、a=%d,b=%d

D、a=%%d,b=%%d

标准答案:C

知识点解析:C语言中用“%%”打印输出字符“%”,所以%%由输出为%d两个普通字

符,而不是格式控制符"%d”的含义,所以打印结果为C。

17、若有定义语句:chara=382,;则变量a

A、说明不合法

B、包含1个字符

C、包含2个字符

D、包含3个字符

标准答案:A

知识点解析:定义语句:chara=\82,;定义字符变量a,但是赋初值时却给赋值字符

常量,因此A选项正确。

18、有以[程序#includemain。{charcl=,A\c2=,Y\printf(H%d,%d\n",cl,c2);}

程序的输出结果是

A、输出格式不合法,输出出错信息

B、65,89

C、65,90

D、A,Y

标准答案:B

知识点解析:本题重点考察字符变量的相关知识。分别给字符型变量a和b分别赋

值为,A,和,YI即A和Y的ASSCH码,因此输出结果为65,89,因此B选项正

确。

19、若变量已正确定义for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环

A、执行3次

B、执行4次

C、执行无限次

D、执行次数不定

标准答案:B

知识点解析:本题重点考察for语句的循环次数,

for(x=0»y=0;(y!=99&&x<4);x++),y!=99&&x<4即循环条件当y不等于99以及x<4

时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4次,B选项

正确。

20、对于while(!E)s;,若要执行循环体s,则E的取值应为:

A、E等于1

B、E不等于0

C、E不等于1

D、E等于0

标准答案:D

知识点解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条

件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,

执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项

正确。

21、有以下程序#includemain(){intx;for(x=3;x<6;x++)printf((x%2)?

C,*%d"):("#%d"),x);printf("\n");}程序的输出结果是

A、*3#4*5

B、#3*4#5

C、54#5

D、*3#4#5

标准答案:A

知识点解析:条件运算符组成条件表达式的一般形式为:表达式1?表达式2:表

达式3其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式

的值,否则以表达式2的值作为整个条件表达式的值。本题中语句

printf((x%2)?("*%d"):("#%d)x);含义为变量x对2求余,如果结果为真,则按照

"*%d”格式输出,否则按照#%d输出。因此A选项正确。

22,有以下程序#includemain(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=20)

break;if(b%3==1){b=b+3;continue;)b=b-5;}printf("%d\n",a);)程序的输出垢果

A、10

B、9

C、8

D、7

标准答案:B

知识点解析:首先注意for循环的控制条件当b>=20或者a>100则跳出for循环

也即h<20且aV=10()时执行for循环:第一次进入循环a=1,h=l均满足循环条

件,但b%3==l条件满足,故执行b=b+3,得到b=4,注意有continue,所以后面语

句不执行,直接跳转到a++这个语句,所以第一次循环完之后a=2,b=4:进入第二

轮循环,b%3==l也是满足的,故再次b=b+3,此轮循环执行之后a=3,b=7,进入下

一轮。此后和前面循环同理,都是b%3==l满足,因为每次都是加3,而之后又去

模3,且都跳过for后面语句直接执行a++,所以,一直循环到b=22跳出for循

环。此时a为8.综合起来就是,每次循环b增加3,a增加1,且当b>22时跳出循

环,结束程序。所以b从1增加到22,有(22-1)/3=7,所以a=l+7=8.因此B选

温馨提示

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

评论

0/150

提交评论