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

下载本文档

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

文档简介

家二级(C语言)笔试模拟试卷10

(共9套)

(共542题)

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

套

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

70分。)

1、程序流程图中带有箭头的线段表示的是

A、图兀关系

B、数据流

C、控制流

D、调用关系

标准答案:C

知识点解析:程序流程图是人们对解决问题的方法、思路或算法的一种图形方式

的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;

流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的

线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线

段表示图元关系。在模块之间用带有箭头的线段表示调用关系。

2、数据流图用于抽象描述一下软件的逻辑模型,数据流图由一些特定的图符构

成。下列图符名标识的图符不属于数据流图合法图符的是_____o

A、控制流

B、加工

C、数据存储

D、源和潭

标准答案:A

知识点解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移

动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据

源)、源和潭。

3、设有以下定义:inta=0;doubleb=1.25;charc='A'#defined2则下面语句中错误

的是o

A、a++;

B、b++;

C、c++

D、d++

标准答案:D

知识点解析:选项D中d是符号常量,不能进行++的运算。

4、关系表中的每一横行称为一个

A、元组

B、字段

C、属性

D、码

标准答案:A

知识点解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个

属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的

键或码。

5、用树形结构来表示实体之间联系的模型称为

A、关系模型

B、层次模型

C、网状模型

D、数据模型

标准答案:2

知识点解析:关系模型以二维表表示实体之间的联系,网状模型以一个不加任何条

件限制的无向图表示实体之间的联系。层次模型的基本结构为树形结构.而D选

项数据模型包括关系模型,网状模型和层次模型c

6、计算机软件一般包括应用软件和—o

A、字处理软件

B、系统软件

C、服务性软件

D、操作系统

标准答案:2

知识点解析:暂无解析

7、将E-R图转换到关系模式时,实体与联系都可以表示成()

A、属性

B、关系

C、键

D、域

标准答案:2

知识点解析:暂无解析

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

A、线性链表中的各元素在存储空间中的位置必须是连续的

B、线性链表中的表头元素一定存储在其他元素的前面

C、线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存

储在其他元素的前面

D、线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存谛顺

序也是任意的

标准答案:8

知识点解析:在线性表的链式存储结构中,各数据结点的存储位置不连续,且各结

点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间

的前后关系是由各结点的指针域来指示的。所以,选项D正确。

9、线性表的链式存储结构是一种

A、随机结构

B、顺序结构

C、索引结构

D、散列结构

标准答案:2

知识点解析:线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,

还包括指针,每一个指针指向一个与本结点有逻辑关系的结点。此类存储方式属于

顺序存储。

10、在Windows环境下,下列叙述中正确的是

A、在“开始”菜单中可以增加项目,也可以删除项目

B、在“开始”菜单中不能增加项目,也不能删除项目

C、在“开始”菜单中可以增加项目,但不能删除项目

D、在“开始”菜单中不能增加项目,但可以删除项目

标准答案:A

知识点解析:在“开始”菜单中右击某项子菜单,从快捷菜单中选择“删除”命令即可

删除某项子菜单,还可以通过“开始”菜单的“设置'喻令向"开始''菜单中添加项子菜

单。

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

分。)

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

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

B、(c>=2&&c<=6)||(c:=3)||(c!=5)

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

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

标准答案:B

知识点解析:满足表达13式(c>=2&&cV=6)的整型变量c的值是2,3,4,5,

6o当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中

至少有一个为真,即不论c为何值,表达式B)都为“真”。

12、有以下程序ftin(intx){inlp;if(x==OIIx==l)retum(3);p=x-fun(x-2);return

p:)main(){printf("%d\n",fun(7));)执行后的输出结果是

A、7

B、3

C、2

D、0

标准答案:C

知识点解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归

调用,其过程可以描述为吓皿(7)=7如11(5)=7-(5-加](3)尸7-(5-(3-仙](1)))=7-(5-(3-

3))=7・5=2",所以最后的输出结果为2。

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

外部指的是()。

A、冠以关键字extern

B、位置在函数体外部

C、作用范围是全程的

D、位置在函数的外部

标准答案:D

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

符的特征。

14、软件是指()。

A、程序

B、程序和文档

C、算法加数据结构

D、程序、数据与相关文档的完整集合

标准答案:D

知识点解析:计算机软件是包括程序、数据及相关文档的完整集合。

15、若要求从键盘读入含有空格字符的字符串,应使用函数

A、getc()

B、gets()

C>getchar()

D、scanf()

标准答案:B

知识点解析:canf()语句用“空格”区别不同的字符串;geic()与gelchar。语句不能用于

字符串的读入。

16、以下能正确定义字符串的语句是()。

A、charstr[]={,\064,);

B、charstr="\x43H;

C^charstr=";

D、charstr[]="\O";

标准答案:8

知识点解析:C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数

组来存放,故选项A)、C)不是字符中;选项B)定义的是一个字符变量str,不能用

来存放字符串,所以不正确。

17、用C言编写的代码程序()。

A、可立即执行

B、是个源程序

C、经过编译即可执行

D、经过编译解释即可执行

标准答案:2

知识点解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,

生成一个后缀为.obj的二进制文件(称为目标文件),最后还要由称为“连接程

序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接在一起,生成一个

后缀.cxc的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定

义,选项C和选项D错误,所以,4个选项中选项B符合题意。

18、以下合法的赋值语句是。

A、X=Y=100

B、D-;

C、X+Y

D、C=int(A+B)

标准答案:2

知识点解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立

成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-I,所以答案B

为一赋值语句。

19、用scanf(”%d,%d",&a,&b)输入数据时,下面输入法中,正确的是

A、123,4

B、1234

C、123;4

D、123:4

标准答案:1

知识点解析:暂无解析

20、下列正确的实型常量是()。

A、E3.4

B、-12345

C、2.2e0.8

D、4

标准答案:2

知识点3析:实型常量有两种书写形式。①小数形式,它由符号、整数部分、小

数点及小数部分组成:②)指数形式,由十进制小数形式加上指数部分组成,其形

式为:卜进制小数e指数或十进制小数E指数。注:e或E后面的指数必须是整

数,并且在e或E的前面必须有数字。本题中,选项A)中E的前面没有数字,因

此错误。选项C)中0.8不是整数,因此错误。选项D)中4是整型常量而不是实型

常量。

21有以下程序#includemain。{intx=011:printf("%d\n”,++x);}程序运行后

的输出结果是

A、12

B、11

C、10

D、9

标准答案:C

知识点解析:变量x初始化值为Oil.Oil为八进制数.代表十进制的9,执行

primf函数后,x先加1.然后按十进制输出,即程序输出结果为10。

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

分。)

22下列程序的输出结果是()。point(char*pt);main(){charb[4]=

},*pt=b;pt=point(pt);printf<M%c\n,(,*pt);}point(char*p){p+=3;return

P;}

A、s

B、c

C、f

D、a

标准答案:C

知识点解析:本题考查函数调用时的参数传递。函数point的参数为字符指针,当

执行函数point时,刚开始指针p指向“屋,经过+3操作后,指针p指向"f'所以最

后的输出结果是f。

23、有以卜程序:#include<stdio.h>voidfun(char*c,intD){*c=*c+l;d+=l;

printf(,,%c,%c,',*c,D;}main(){chara=,F,,b=,f;fun(&b,A);printf("%c,%c\n”,a,B);}程

序的输出结果为()。

A、g,GF,g

B、g,FF,g

C、G,fF,G

D、f,gf,g

标准答案:A

知识点解析:暂无解析

24、若运行以卜.程序时,从键盘输入ADescriptor〈CR>(VCR>表示回车),则F

面程序的运行结果是()c#include<stdio.h>main(i{chare;intv0=l,vl=0,v2=0;

do{switch(c=getchar()){case,a,:case,A,:case,e,:case,E,:case'i':caseT:

case,o,:case,O,:case,u,:case,U,:vl+=l:default:v0+=1;v2+=1;}}while(c!=,\n,);

printf("vO=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A、v0=7,vl=4,v2=7

v0=8,vl=4,v2=8

C、v0=ll,vl=4,v2=ll

D、v0=13,vl=4,v2=12

标准答案:D

知识点解析:本题考查的是switch语句的应用。分析程序,do-while语句是先执行

do后面的语句再判断是否符合while的条件。V2+=l;语句无论读入的是什么字母

(包括回车符),此语句都要执行,语句default:vO+=l;亦是如此;而语句

casc'U':vl+=l;只有在读入的字母

是/、1'、'E,、丁、T、U、XT、'u'、,U'时才会执行。

25、下面的for语句的循环次数为()。

A、是无限循环

B、循环次数不定

C、最多执行6次

D、最多执行5次

标准答案:D

知识点解析:暂无解析

26、若要求从键盘读入含有空格字符的字符串,应使用函数

A、getc()

B、gets()

C、getchai()

D、scanf()

标准答案:B

知识点解析:scanf()语句用“空格”区别不同的字符串;gelc()与gelchar。语句不能

用于字符串的读入。

27、卜歹!]程序的输出结果为main。{unionu{char*name;intage;intincome;)s

=',WANGLIONG";s.age=28:s.income=1000;printf("%d\n",s.age);)

A、28

B、1000

C、0

D、不确定

标准答案:B

知识点解析:本题对共用体的使用进行了考查。由于共用体所有成员共同占据一

段存储空间,所以对成员变量的赋值,后面的赋值会覆盖掉前面的赋值,因为

s.income=100();是最后一次成员变量赋值,变量age与变量income共同占据一段

存储空间,所以age的值也为1000o

28、有以下程序#includcvoidfun(int*s,intnl,intn2){inti=nl;j=n2;while(i

A、0987654321

B、4321098765

C、5678901234

D、0987651234

标准答案:C

知识点解析:函数fun(int*s4ntnl,intn2)的功能是对数组s中的元素进行首尾互相

调换。所以在主函数中,当fun(aA3)执行完后,数组用2]={4,3,2」,5,6,7,8,9,0};再执

行fun(a,4,9),数组a[12]:{4,3,2,1,0,9,876,5};再执行fun(a,0,9)后,数组

a[12]={5,6,7,8,9,0,1,2,3,4}。

29、有如卜.程序main(){intn=9;while(n>6){n-;printf("%d*\n);})该程序的输出结

果是

A、987

B、876

「、8765

D、9876

标准答案:B

知识点解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪

一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过—运算,n的值变为

8,所以第一次的输出值是8,由此可以排除选项A)和D)o由循环条件n>6可以知道,

最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以

排除选项C)o

30、以下叙述错误的是o

A、共用体的所有变量都有一个相同的地址

B、结构体变量可以作为共有用体中的成员

C、共用体的成员一个时刻只有一个生效

D、要传递共用体的成员通常采用函数

标准答案:C

知识点解析:暂无解析

31、定义a为整型变量,且设其初值为10,则表达式a+=a-=a*=a的值为。

A、10

B、0

C、100

D、-10

标准答案:B

知识点解析:暂无解析

32、有以下程序#includemain(){charpU={'a'Jb','c'},q[10]={b」c'};

printf("%d%d\n",slrlen(p),slrlen(q));}以下叙述中正确的是

A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D、由于p和q数组中都没有字符串结束符,故长度都不能确定

标准答案:A

知识点解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可

以看出数组p和q都有3个字符,所以长度均为3.

33、以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是

()o#include<stdio.h>main(){int*p,*q,a,b;p=&a;printf("inputa:");

scanf(”%d”,*p);}

A、*p表示的是指针变量p的地址

B、*p表示的是变量a的值,而不是变量a的地址

C、*p表示的是指针变量p的值

D、*p只能用来说明p是一个指针变量

标准答案:2

知识点解析:本题经过定义语句和赋值后,p表示的是变量a的地址,*p表示的是

变量a的值。

34、下列函数定义中,会出现编译错误的是。

A^max(intx,inty,int*z){*z=x>y?x:y;)z=x>y?x:y;

B、intmax(intx,y){intz;returnz;}

C、max(intx,inty){intz;z=x>y?x:y;return(z);}

D^intmax(intx,inty){returnx>y?x:y;)

标准答案:2'

知识点解析:在C语言中,不可以在函数的参数声明列表中用个类型名指定多

个参数。故选项B是错误的。其正确的表示方式应为:intmax(intx,inty){....}

或intmax(x,y)intx,y;{.....}

datanext4____________________

—…—|E|一|F|\0一

head一

s-MI

在该链表结构中,指针p、s分

别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语

句组是O

A、p=p->next;s->next=p;p->next=s;

B、p=p->next;s->next=p->next;p->next=s;

C、s->next=NULL;p=p->next;p->next=s;

D、p=(*p).next;(*s).nexl=(*p).next;(*p).nexl=s;

标准答案:1

知识点解析:在答案A中:p=p->next;s->next=p;p->next=s;s的确已插到了

链表的末尾,但它的next却并没有为NULL,而是指向了它的直接前趋p,这样它

就不是一个单向链表(单向链表最后一个结点的next指针一定是一个NULL)o

36、以下程序的输出结果是()main()(inta=-l,b=4,k;k=(++a<=0)&&!(b—<=0);

printf("%d%d%d\n”,k,a,B);)

A、104

B、004

C、103

D、003

标准答案:4

知识点解析:暂无解析

37、有如下程序main。{floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;

elsey=1.0:printf("%f\n”,y):}该程序输出结果是。

A、0

B、0.25

C、0.5

D、1

标准答案:4

知识点解析:本题考查的是if……else语句的使用。x=2.0,符合第二个IF语句的

条件XV10.0,所以执行产1.0/x语句,即y=1.0/2.0=0.500000。

38、有以下程序:main(){ints=0,a=l,n;scanf("%d",&n);do{s+=l;a=a-2;}while

(a!=n);printf(M%d\nn,s);}若要使程序的输出值为2,则应该从键盘给n输入的值是

()。

A、-1

B、-3

C、-5

D、0

标准答案:2

知识之解析:根据题目要求,最后要使输出的s值为2,在程序中改变s的值的语

句只有循环体中的s+=l;语句,而初始s的值为0,显然要使s的值变为2,该语

句必须执行两次,即dowhile循环中的循环体要执行两次,而在do-while中,首

先不执行条件而执行do后面的循环体语句,然后再判断while循环条件。所以不

管循环判断条件是否为真s+=l;语句至少执行一次,根据分析,只需要while后面

括号的循环判断表达式的值为真成立一次且只能为真一次,将4个选项中的内容依

次代入该程序中不难得到只有n=-3刚好使循环判断条件a!=n为真一次。故4个选

项中选项B符合题意。

39、以下叙述正确的是

A、可以把define和if定义为用户标识符

B、可以把define定义为用户标识符,但不能把if定义为用户标识符

C、可以把if定义为用户标识符,但不能把define定义为用户标识符

D、define和if都不能定义为用户标识符

标准答案:2

知识点3析:C语言中的保留字,而define不是保留字。用户标识符不允许使用保

留字。

40、有下列程序:main(){intk=5,n=0;do{switch(k){caseI:case3:n+=l;k—;break;

default:n=O;k-;case2:case4;n+=2;k—;break;)printfl"%d'\n);)whiIe(k>0&&n<

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

A、235

B、235

C>2356

D、2356

标准答案:2

知识点解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执

行default语句,输出0,k减1;这时n=0,k=4,程序进行第2次循环,执行case

4:这个分支,结果是n=2,k=3,打印出2:这时n=2,k=3,程序进行第3次循环,

执行case3:这个分支,结果是n=3,k=2,打印出3;这时n=3,k=2,程序然后进行

第4次循环,执行case2:ca$e4:这个分支,结果是n=5,k=l,打印出5,这时因为

n=5不满足nV5的循环条件,因此退出循环,程序运行结束。所以在屏幕上打印

出的结果是0235。

41、有以下程序#include<stdio.h>#include<

string.h>voidfunjehars[][10],intn){chart;

intij;for(i=0;i<n-l;i++)for0-i+l;j<

n;j++)/*比较字符串的首字符大小,并交换字符串的首字符*/

if(s[i][O]>sU][O])t=s[i][0];s[i][0]=s[j][O];sU][O]=

t;)}main()charss[5][10]={"bcc","bbcc","xy",

"aaaacc","aabcc");fun(ss,5);printf("%s,%s\n",

ss[0],ss[4]);}程序的运行结果是

A^xy,aaaacc

aaaacc,xy

C、xcc,aabcc

D、acc,xabcc

标准答案:D

知识点解析:在函数fun()中有一个两层嵌套的for循环,外循环变量i从0递增到

n-2,内循环变量i从i+1循环递增到n-1,这是选拦排序算法的标准结构。循环体

中因为逆序条件为s[j][0r,所以实现的是升序排序。由此可见,fun()函

数实现的功能是对一个二维字符数组前n行的首字符进行升序排序。主函数中定义

的二维数组初始化为{“bcc“,“bbcc",Hxy","aaaacc","aabcc"),通过fim()函数

n

的排序后,结果将为acc",“abcc“,“by","baaacc","xabcc)0故最终输出字符

串ss[0]和ss⑷的结果为acc,xabcc,应该选择D。

四、公共基础填空题(本题共3题,每题7.0分,共3

分。)

42、在面向对象的方法中,描述的是具有相似属性与操作的一组对象。

A、类

标准答案:

知识点解析:在面向对象的方法中,把具有相同屈性和方法的对象称为类,类是

对象的抽象,对象是类的实例。

43、排序是计算机程序没计中的一种重要操作,常见的排序方法有插入排序、

和选择排序。

A、交换排序

标准答案:

知识点解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序

序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒

泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选

择排序和堆排序。

44、算法的复杂度主要包括时间复杂度和复杂度。

标准答案:空间

知识点解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复

杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行

这个算法所需要的内存空间。

45、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结

构、数据流、【】和处理过程。

标准答案:数据存储

知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,

是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据

项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中

存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。

46、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结

构、数据流、【】和处理过程。

标准答案:数据存储

知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,

是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据

项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中

存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。

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

47、软件危机出现于20时纪60年代末,为了解决软件危机,人们提出了()的原理

来设计软件,这就是软件工程诞生的基础。

标准答案:软件工程学

知识点解析:为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件

工程是使计算机软件走向工程科学的途径。逐步形成了软件工程的概念,开辟了工

程学的新兴领域——软件工程学。

48、语句:x++;++x;x=l/x;执行后都使变量x中的值增I,请写出一条同一功能

的赋值语句。

标准答案:x+=1

知识点解析:本题考查“++”、”「运算符。-"只能作用于变量,不能用于

表达式或常量;前缀形式是在使用变量之前先将其值增1或减I,后缀形式是先使

用变量原来的值,使用完后再使其增1或减1。

49、以下程序用于判断a,b,c能否构成三角形,若能,输出YES,否则输出

NOo当给a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是

需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。#inckide<stdio.h>

main(){floata,b,c;scanf(*'%f%f%f,&a,&b,&c);if([])printf("YES\n");/*a.b.c

能构成三角形*/elseprinff("NO\n");/*a.b.c不能构成三解形*/)

标准答案:(a+b>c)&&(a+c>b)&&(b+c>a)

知识点解析:根据构成三角形的条件:两边之和大于第三边,得出空格应该填(a+b

>c)&&(a+c>b)&&(b+c>a)或与其等价的形式。

50、以下程序中,for循环体执行的次数是[]o#defineN2#defineMN+1

#defineKM+1*M/2main(){inti;for(i=l;i<K;i++){.....}

标准答案:4

知识点解析:本题考查宏定义。预编译时,首先将M的宏定义带入K,得到

N+l+l*N+l/2;再将N的宏定义带人,得到2+1+12+1/2=3+2+0=5,所以循环4

次。

51、在内存中,存储字符k要占用1个字节,存储字符串“x“要占用【】个字节。

标准答案:2

知识点解析:计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1

个字节,另在字符串的有效字符之后存储I个字符串的结束标记符。所以存储字符

串“X”要占用2个字节,存储字符'X,只要1个字节。注意:sizeof()函数和strleM)函

数的作用。

52、表达式10+'a'+1.5-0.5*'B,的结果是[]0

标准答案:75.5

知识点解析:暂无解析

53、用复合的赋值运算将将变量x中的值增大2的赋值表达式是【】。

标准答案:x+=2

知识点解析:x+=2等价于x=x+2,"+=''为复合的赋值运算符。

54、以下程序的输出结果是【】。main(){unsignedshorta=65536;intb;

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

标准答案:0

知识点解析:对于一个nusignedshorlshorl来说,它能取的最大值是65535。这里

给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋

给它(全零)。所以a的值实际为0。

55、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式

pow(y,fabs(x))的值为[】。

标准答案:8

知识点解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计

算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0

次方,结果为8.000000。

56^求任意一个数(用16位二进制码表示)的补码。main(){unsignedinta;

[];scanf("%o",&a);printf(H%o\n",getbits(a));)unsignedintgetbits(value)

unsignedintvalue;(unsignedintz;z=[];if(z==0100000)[];else

z=value;relurn(z);}

标准答案:unsignedintgetbitsOvalue&O100000z=~vak】e+l

知识点解析:暂无解析

57、有以下程序#inculdemain(){inta[3][3]={(l,2,3),(4,5,6),(7,8,9)};intB[3]={0},i;

For(i=0;i<3;i++)B[i]=a[i][2]+a[2][i];For(i=0;l<3;i++)printF("%d”,B[i]);

printF("\n");}程序运行后的输出结果是[1]o

标准答案:101418

知识点解析:当i=0时,bL0]=a[0][2]+a[2][0]=3+7=10;当i=l时,b

E1]=a[1][2]+a[2][1]=6+8=14;当i=2时,b[2]=a[2][2]+a

[2][2]=9+9=18,则打印结果为101418。

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

套

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

70分。)

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

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

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

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

D、上述三种说法都不对

标准答案:8

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

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

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

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

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

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

率

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

标准答案:8

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

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

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

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

A、125

B、n/2

C^n

D^n+1

标准答案:4

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

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

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

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

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

A、快速排序

B、选择排序

C、堆排序

D、冒泡排序

标准答案:8

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

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

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

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

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

B、限制GOTO语句的使用

C、减少或取消注释行

D、程序越短越好

标准答案:1

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

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

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

好。

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

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

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

C、不允许使用GOTO语句

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

标准答案:4

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

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

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

A、多态性

B、继承

C、封装性

D、模块化

标准答案:8

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

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

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

特点。

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

A、调用语句

B、命令

C、口令

D、消息

标准答案:8

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

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

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

9、下列描述错误的是

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

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

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

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

标准答案:4

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

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

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

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

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

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

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

标准答案:1

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

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

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

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

分。)

11、下列程序的输出结果是_____ointi=010,j=10;printf("%d,%d\n”,++i,j-);

A、11,10

B、9,10

C、010,9

D、10,9

标准依索.?

知识之解析:暂无解析

12、标有/**/的语句的执行次数是。inty,i;for(i=0;i<20;i++){if

(i%2=0)continue;y+=i;/**/)

A、20

B、19

C、10

D、9

标准答案:4

知识点解析:暂无解析

13、下列程序的输出结果是o#inckide<stdio.h>main(){inta,b,c=246;

a=c/100%9;b=(-1)&&(-!);printf("%d,%d\n",a,b);)

A、2,1

B、3,2

C>4,3

D、2,-1

标准答案:1

知识点解析:暂无解析

14、下列程序的输出结果是omain(){intm=5;if(m++>5)printf

("%d\n",m);elseprintf('1%d\n"jn—);}

A、7

B、6

C、5

D、4

标准答案:2

知识点解析:暂无解析

15^下列程序执行后的输出结果是omain(){charx=0xFFFF;printf("%d

}

A、-32767

B、FFFE

C>-1

D、-32768

标准答案:4

知识点解析:暂无解析

16、下列程序的输出结果为omain(){unsignedinta=65535;intb=-2;printf

(H\na=%d,%u;b=%d,%u„a,a,b,b);}

A、-1,65535-2,65534

B、65535,65535;・2,65534

C、65535,65535:65534,65534

D、-1,65535:65534,65534

标准答案:1

知识点解析:暂无解析

17、下列语句中,不正确的是_____o

A、staticchara[]={"China'1};

B、staticchara[]=,,China";

C、pnntt("%s\aLOJ);

D、scanf(H%s",a);

标准答案:4

知识点解析:暂无解析

18、给出发下定义:charx[]=MabcdefgH;chary卜{'a','b','c','d','e',f'g'};则正确

的叙述为O

A、数组x和数组y等价

B、数组x和数组y的长度相同

C、数组x的长度大于数组y的长度

D、数组x的长度小于数组y的长度

标准答案:4

知识点解析:暂无解析

19、当调用函数时,实参是一个数组名,则向函数传送的是______o

A、数组的长度

B、数组的首地址

C、数组中每一个元素的地址

D、数组每个元素中的值

知识曾解析:暂无解析

20、下列程序的输出结果是。main(){unsignedshorta=65536;intb;

printf(H%d\nH,b:a);)

A、0

B、1

C、2

D、3

标准答案:1

知识点解析:暂无解析

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

分。)

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

A、调用pfintf函数时,必须要有输出项

B、使用putchar函数时,必须在之前包含头文件stdio.h

C、在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D、调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCH码

标准答案:2

知识点解析:在使用标准输入输出库函数前,必须要用预编译命令“#include”将头

文件“stdio.h”包括到用户源文件中。

22有以下程序段:typedefstructNODE{intnum;structNODE*nex;)OLD;以下

叙述中正确的是()。

A、以上的说明形式非法

B、NODE是一个结构体类型

C、OLD是一个结构体类型

D、OLD是个结构体变量

标准答案:4

知识点解析:typedef关键字用于声明一个新的类型名代替已有的类型名。本题中

如果没有用typedef进行定义的话,则structNODE为结构体类型,而用typedef定

义后,相当于用OLD代表了siruetNODE这一结构体类型,故OLD为结构体类

型。

23、设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是()。

A、(!a==l)&&(!b==0)

B、(a<b)&&!cII1

C、a&&b

D、aII(b+b)&&(c-a)

标准答案:1

知识点解析:逻辑运算符的优先级由高到低运算次序如

下:!(非)-&&(与)T||(或),选项A)的表达式中,先计算!a,结果为0,由于

“0==1”不成立,故整个表达式的值为0。

24、当把以下四个表达式用做if语句的控制表达式时,有一个选项与其他三个选

项含义不同,这个选项是()。

A、k%2

B、k%2==l

C、(K%2)!=0

D、!k%2==l

标准答案:8

知识点解析:本题选项A)、B)、C)中表达式用做if语句控制表达式时,其值一

致,即判断k的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项D)

的表达式!k%2==l相当于(!k)%2==L只要k的值不为0,则此表达式的值均为

假。

25、设变量a,b,c,d和y都已正确定义并赋值。若有以下if语句:if(a<b)

if(c==d)y=0;elsey=l;该语句所表示的含义是()。

,f°=d

A>I1QNb

(0a<b~d

1

D、

0a<b.c二d

{1a<b,c^d

(0a<b,c=d

1c+d

标准答案:4

知识点0析:在C语言中,从if语句的最内层开始,else总是与它上面最近的(未

曾配对的)if配对,故本题中y=l的条件是c¥d。又因为此if语句是前一个if语句

的内层嵌套语句,所以在满足内层嵌套的if语句之前,必须先满足外层的if语句

中的条件表达式。a<b,所以选项C)正确。

26、若有语句:char*linc[5];以下叙述中正确的是()。

A、定义line是一个数组,每个数组元素是一个基类型为char的指针变量

B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C、定义line是一个指针数组,语句中的.号称为求地址运算符

D、定义line是一个指向字符型函数的指针

标准答案:1

知识点解析•:由于运算符口优先级比率高,所以line是--个数组,每个数组元素是

一个基类型为char的指针变量。

27、设变量已正确定义,则以下能正确计算仁n!的程序段是()。

A、f=0;for(i=l;i<n;i++)f*=i;

B、f=l;for(i=l;i<n;i++)f*=i;

C、f=l;for(i=n;i>1;i++)f*=i;

D、f=l;for(i=n;i>=2;i-)f*=i;

标准答案:8

知识点解析:n!=n,(n-1)*…*2*1,由于选项A)中f的初值为0,所以循环n次

后,f的值依然为0,故选项A)错误;选项B)中循环的终止条件是iVn,即只执行

n-1次循环,得到的f值为(n・l)*…*2*1的结果,故选项B)错误;在选项C)中,当

n>l时,由于初值i=n符合条件i>l,且增量为+1,故循环中永远不会出现不满

足条件i>l的值,出现死循环。

28、设有定义:inlnl=O,n2,*p二&n2,*q=&nl;以卜.赋值语句中与n2=nl语句等价

的是()。

A、*P=*q;

B、p=q;

C^*p=&nl;

D、p=*q;

标准答案:1

知识点解析:定义变量后,指针变量P指向变量n2的地址,指针变量q指向了变

量nl的地址,要使nl的值赋n2,可将指针变量q指向的存储单元的值赋给指针

变量p指向的存储单元,即*P二*q。

29、若有定义:intx=O,*p=&x;则语句printf("%d\n”,*p);的输出结果是()。

A、随机值

B、0

C、x的地址

D、p的地址

标准答案:2

知识点解析:由*p=&x可知,指针变量p指向了x的地址,故输出*p的值即为x

的值0。

30、有以下程序:#include<stdio.h>main(){inta[10]={1,2,3,4,5,6,7,

8,9,10),*p=&a[3],*q=p+2;prinffC'%d\n";*p+*q);}程序运行后的输出结果

是()。

A、16

B、10

C、8

D、6

标准答案:2

知识点解析:由变量的定义可知,指针变量p初始化为&a[3],即*P的值为4;指

针变量q初始化为p+2,即&a[3]+2,所以*q的值为6,*p+*q的值为10。

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

A、用户所定义的标识符允许使用关键字

B、用户所定义的标识符应尽量做到“见名知意”

C、用户所定义的标识符必须以字母或下划线开头

D、用户定义的标识符中,大、小写字母代表不同标识

标准答案:1

知识点解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第

一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用

户在定义标识符时应尽量做到“见名知意”,且不允许使用关键字作标识符。

32、有以卜程序:#include<stdio.h>main(){inta||={2,4,6,8JO),y=0,x,*p;p

=&a[l];for(x=l;x<3;x++)y+=p[x];printf("%d\n\y);}程序运行后的输出结果是

()。

A、10

B、11

C、14

D、15

标准答案:4

知识点解析:本程序通过语句尸将指针变量p指向存储单元a[l],使得

p[0]的值为4,通过for循环,使y的值丸P⑴与p[2]之和,即产6+8,所以输出的

y值为14o

33、有以卜程序:#includc<stdio,h>#includc<string,h>structSTU{intnam;float

TotalSeore;);voidf(strnctSTUp){structSTUs[2]={{20044,550),{20045,537});

p.num=s111.num;p.TotalScore=s11].TotalScore;main(){structSTUs|2]=

{{20041,703),{20042,580));f(s[O]);

printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);)程序运行后的输出结果是()。

A、20045537

R、20044550

C、20042580

D、20041703

标准答案:8

知识点解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将

结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,

但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍

然是main函数中初始化时的数据。

34、有以卜程序:#include<stdio,h>#definef(x)(x*x)main(){intil,i2;il=

f(8)/f(4);i2=f(4+4)/f(2+2);printf(n%d,%d\n”,il,⑵;

A、64,28

B、4,4

C、4,3

D、64,64

标准答案:4

知识点解析:程序中il=f(8)/f(4)宏替换后得到il=(8*8)/(4*4),结果为4;

i2=f(4+4)/f(2+2)宏替换后得至h2=(4+4*4+4)/(2+2*2+2),其结果为3。故本题输出

的值为4,3o

35、有以3程序:#include<stdio.h>main(){charP[]=,q□:MabcM;

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

A、44

B、33

C、34

D、43

标准答案:4

知识点解析:sizeof运算符是计算变量或数组所分配到的内存空间的大小,

b,,c,}使数组的长度等于字符的个数3;q[]="abc”使数组的长度等于

字符个数加上1个串结束符,'\0',共4个字符,其中,’\0,,占用一个存储空间。

故本题的输出结果是34。

36、有以下程序:#include<stdio,h>main(){charal='M',a2=,m,;

pnntt("%c\n",(a1,a2));)以下叙述中正确的是()。

A、程序输出大写字母M

B、程序输出小写字母m

C、格式说明符不足,编译出错

D、程序运行时产生出错信息

标准答案:2

知识点解析:本题输出的是逗号表达式的值,即a2的值m。

37、有以下程序段:intn,t=Ls=0;scanf("%",&n);do{s=s+t;t=t-2;}

while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是().

A、任意正奇数

B、任意负偶数

C、任意正偶数

D、任意负奇数

标准答案:8

知识点解析:要使程序段不陷入死循环,必须存在终止循环的条件由于t的

初始值为1,且每执行一次循环都会使t的值减2,故执行本程序后t有可能的最大

值为-1,然后,每循环一次就减2,所以键盘输入的n的值必须是[的值之一,即

为任意负奇数c

38、有以3程序:#include<stdio,h>voidswapI(intcO[],intel[|){intt;t=cO[OJ;

c0[0]:cl[0];cl[0]=t;}voidswap2(int*c0,int*cl){intt;t=*c0;*c0=*cl;*cl

=t;)main(){inta[2]={3.5}.b[2]={3,5);swapl(a,a+1);swap2(&b[0],&b[1]);printf("%

d%a%d%d\n",a[0],a[l],b[0],b[l]);}程序运行后的车出结果是()。

A、3553

B、5335

C、3535

D、5353

标准答案:8

知识点解析:函数swap1,swap2的功能均为交换两个数。main函数调用

swapl(a,a+1);使得数组a的首地址赋给形参c0[],a[l]的首地址赋给形参cl[],

故交换c0[0]与cl⑼后,a[0]与a[l]的值也发生了变化;函数调用swap2(&b[0],

&b[l]);的功能也一样,使指针变量c0指向了b[0]存储单元,cl指向了b[l]存储

单元,并在sw叩2函数中进行了交换,所以b[0],b⑴的值也发生变化,故本程序

输出的结果是5353。

39、有以下程序,其中函数f的功能是将多个字符串按字典顺序排序甜include<

stdio,h>#inelude<string,h>voidf(char*p|]Jntn)char*t;inti,j;for(i=0;i<n-

l;i++)for(j=i+l;j<n;j++)if(strcmp(p[i],p|j])>0){t=p[i];p[i]=p[j];p[j]

=t;))main(){char*p[5

温馨提示

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

评论

0/150

提交评论