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

付费下载

下载本文档

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

文档简介

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

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

10分。)

1、对建立良好的程序设计风格,下列描述中正确的是()。

A、程序应该简单、清晰、可读性好

B、符号名的命名只需要符合语法

C、充分考虑程序的执行效率

D、程序的注释可有可无

标准答案:A

知识点解析:“青晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要

保证程序清晰、可读;对•符号名的命名,除了要符合语法要求外,还要具有一定的

含义:程序的注释可以帮助程序员理解程序,不是可有可无的。

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

A、e3,el,e4,e2

B、e2,e4,e3,el

C、e3,e4,el,e2

D、任意顺序

标准答案:B①"入钱O般出钱,"入钱③”出板④曲校⑥eltdtt

知识点解析:由栈“后进先出”的特点可知:A)中el不可能比e2先出,C)中el不

可能比e2先出,D)中栈是先进后出的,所以不可能是任意顺序。B)中出栈过程如

下图所示:[*]

3、有以下程序:main(){charstr[][10]={,'China";,Beijing,,),*P=str;printf("%s\ii",

P+10);}程序运行后的输出结果是O

A、China

B>Beijing

ng

ing

标准答案:B

知识点解析:本题中p+10表示字符串“Beijing”的地址,故正确答案为B。

4、下列选项中不属于软件生命周期开发阶段任务的是()。

A、软件测试

B、概要设计

C、软件维护

D、详细设计

标准答案:C

知识点解析:软件的生命周期可分为软件定义、软件开发及软件运行维护3个阶

段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等:软件开

发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作

是软件的运行及后期的维护等。

5、下列工具中为需求分析常用工具的是()。

A、PAD

B、PFD

C、N-S

D、DFD

标准答案:D

知识点解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判

定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工

具,不是需求分析的工具。

6、如果进栈序列为el、e2、e3、e4,则可能的出栈序列是()。

e3>ele4^e2

B、e2、e4>e3、el

C、e3、e4、e2

D、任意顺序

标准答案:B

知识点解析:栈的特点是先进后出,可知el肯定是最后出栈的,因此正确答案为

选项Bo

7、表达式5-T的值是()。

A、整数4

B、字符4

C、表达式不合法

D、字符6

标准答案:A

知识点解析:在C语言中,字符都是变为其对应的ASCII码值来参加算术运算

的,但字符间的相对位置关系还是不变的,字符5和字符1的ASCII码值相差仍是

40

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

A、队列属于非线性表

B、队列按“先进后出”原则组织数据

C、队列在队尾删除数据

D、队列按“先进先出”原则组织数据

标准答案:D

知识点解析:队列是“先进先出”的数据结构,栈是“先进后出''的数据结构,它们都

是特殊的线性表。队列在队头删除数据。

9、下列对于线性链表的描述中正确的是

A、存储空间不一定是连续,且各元素的存储顺序是任意的

B、存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C、存储空间必须连续,且前件元素一定存储在后件元素的前面

D、存储空间必须连续,且各元素的存储顺序是任意的

标准答案:1

知识点解析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结

点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系

是由指针域来确定的。

10、软磁盘最外边的磁道数是()

A、0

B、1

C、39

D、79

标准答案:1

知识点解析:暂无解析

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

分。)

11、若i、J已定义成ini型,则以下程序段中内循环体的总执行次数是()。

for(i=6;i>0;i-)fbr(j=0;j<4;j-+-4-){...}

A、20

B、24

C、25

D、30

标准答案:B

知识点解析:本题考查的是嵌套for循环执行次数。对于外层i的循环中任何一个

i,内层j的循环中的j都要从0变化到3,j=4时退出循环;然后外层i循环的i减

少1,内层循环的i仍要从0变化到3,尸4时退出循环……直到外层i循环的i变

为0,退出i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环

的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行

完整的循环语句。外层for语句执行6次,内层for语句执行4次,所以内循环体

执行6*4=24次。

12、对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,

需要比较次数为()。

A、1

B、2

C、3

D、4

标准答案:C

知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行

比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后

半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在

线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这

时两者相等。即查找成功。

13、以下关于结构化程序设计的叙述中正确的是(),

A、一个结构化程序必须同时由顺序、分支、循环三种结构组成

B、结构化程序使用got。语句会很便捷

C、在C语言中,程序的模块化是利用函数实现的

D、由三种基本结构构成的程序只能解决小规模的问题

标准答案:C

知识点解析:结构化程序设计是指将待开发的软件系统划分为若干个相互独立的模

块,与具体的语句结构无关。Got。语句的滥用会导致程序的可读性降低。三种基

本结构构成的程序依然可以解决大规模的问题,只是不利于复用。

14、若有定义语句inta,b;doublex;则下列选项中没有错误的是()。

A、switch(x%2){case0:a++;break;case1:b++;break;default:a++;

b++;}

B、switch((int)x/2.0){case0:a++;break;case1:b++;break;default:

a++;b++;}

C、switch((int)x%2){caseO:a++;break;case1:b++;break;default:a++;

b++;)

D^switch((int)(x)%2){caseO.O:a++;break;case1.0:b++:break:

default:a++;b++;}

标准答案:C

知识点解析:C语言中switch语句中的表达式和case表达式都不能是浮点类型。

所以选c。

15、以下叙述中正确的是

A、C语言的源程序不必通过编译就可以直接运行

B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C、C源程序经编译形成的二进制代码可以直接运行

D、C语言中的函数不可以单独进行编译

标准答案:2

知识点词析:本题考核的知识点是C程序从编写到生成可执行文件的步骤。C语言

采用编译方式将源程序转换为二进制的目标代码,编写好一个C程序到完成运行

一般经过以下几个步骤:编辑;编译,就是将已经编辑好的源程序翻译成二进制的

目标代码,经编译后的得到的二进制代码还不能直接执行,因为每一个模块往往是

单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块连接后

才能运行;连接,将各模块的二进制目标代码与系统标准模块经连接处理后,得到

具有绝对地址的可执行文件,它是计算机能直接执行的文件;执行,执行一个经过

编译和连接的可执行的目标文件。由以上定义可知,选项A、C、D均不正确,所

以,4个选项中选项B符合题意。

16、以下叙述不正确的是o

A、分号是C语言的必要组成部分

B、C程序的注释可以写在句的后面

C、函数是C程序的基本单位

D、主函数的名字不一定用main表示

标准答案:8

知识点解析:C语言的程序是由主函数main。开始运行,由主函数来调用其他函

数,所以D是错误的。

17、设x,y均为ini型变量,且x=IO,y=3,则prinif("%d,%d\rT,x-,-y);语句的输出

结果是______o

A、10,3

B、9,3

「、9,2

D、10,2)

标准答案:8

知识点解析:C语言的自减运算符有前置与后置两种形式。当自减运算符前置时,

变量先自减一后再参与表达式运算;而后也时,变量先参与表达式运算后再自身减

18、己有定义和语句:doublea,b,c;scanf("%lf%lf%lf,&a,&b,&c):,要

求给a、b、c分别输入10.0、20.0、30.0,不正确的输入形式是

A、10.0V回车>20.0V回车,

B、10.0V回车>2030<回车>

C、1020V回车>30.0〈回车〉

D、10.0,20.0,30.0V回车)

标准答案:8

知识点解析:scanf函数要求格式控制串中的非格式控制字符,在输入数据时必须

按照格式控制的要求来输入。本题中格式控制串中在各个输入数据格式之间没用任

何分隔符号,所以从键盘输入数据时,不应该有“,”等分隔符,所以选项D)错

误。注意:选项A)、B)、C)都能正确的输入。

19、有如下程序main。{inty=3,x=3,z=l;printf("%d%d\n",(++x,++y),

z+2);}运行该程序的输出结果是()。

A、34

B、42

C、43

D、33

标准答案:4

知识点解析:首先看逗号表达式,逗号表达式中从左向右计算,最后该表达式的值

取最右边表达式的值,故该表达式的值为++y的值(因为++y的值为y的值加1即

4),算术表达式z+2的值为3,所以最后输出的值为4和3,所以,4个选项中选项

C符合题意。

20、以下定义语句中正确的是

A、chara='A'b='B';

floata=b=10.0;

C、inta=10,*b=&a;

D^float*a,b=&a:

标准答案:4

知识点解析:选项A中定义两个变量a和b,并赋初值,C语言中可以同时定义多

个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”;选项B

中定义变量时用了连续的赋值语句,这在定义变量是不正确的;选项D定义一个

指针,然后定义了一个变量并让这个变量的初值为该指针变量,显然这这时的指针

变量还没初始化就被赋值给变量c

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

A、getc()

B、gets()

C、getchar()

D、scanf()

标准答案:B

知识点解析:函数getchar。的作用是从终端(或系统隐含指定的输入设备)输入一个

字符,且只能接受一个字符(回车符也算是一个字符),所以getchar()不能用宋读入

字符串。scanf()函数要求按一定的格式来输入,若同时输入多个字符串,则以空格

或回车分割,所以空格不能被识别为一个字符,也就无法读入空格字符。函数

get$()的作用是从终端输入一个字符串(包括空格)至字符数组,直到遇到换行符为

止,所以可以用来键盘读入空格字符。

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

分。)

22、下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){int

m=l,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d,',s);}

A、sum=18

B、sum=10

C>sum=9

D、sum=25

标准答案:B

知识点解析:本题考查带参数的宏的定义及相关运算:

s=m+n+m+n*k=1+2+1+2*3=10。

23、有以下程序:#include<stdio.h>main(){inti=0,a=0;while(i<20)

{for(;;){if((i%5)==0)break;elsei-;}i+=13,a+=i;)pfintf("%d\n",A);}

程序的输出结果是()。

A、62

B、63

C、23

D、36

标准答案:D

知识点解析:暂无解析

24、对以下说明语句的正确理解是inta[10]={6,7,8,9,10);

A、将5个初值依次赋给a[l]至a[5]

B、将5个初值依次赋给a[0]至a[4]

C、将5个初值依次赋给a⑹至a[10]

D、因为数组长度与初值的个数不相同,所以此语句不正确

标准答案:B

知识点解析:本题中,表达式将5个初值赋给a[0]至a[4],后面的部分,将自动被

补零。

25、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是

A、autoflregister

B、extern和register

C、auto^0static

D、static^11register

标准答案:A

知识点解析:在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。

26、若有说明charsl[30]="abc",s2[]="defghi”;,则在使用函数streamsl,s2)后,结果

是()。

A^si的内容更新为abedefghi

B、si的内容更新为defghi'O

C、si的内容更新为defghiabc'O

D、si的内容更新为abcdcfghi'O

标准答案:D

知识点解析:strcat(sl,s2)是把s2字符串连接到si字符串的末尾,要保证si能容纳

下连接后的字符串。

27、若有以下语句lypedefstructS{intg;charh;}T;以下叙述中正确的是()。

A、可用S定义结构体变量

B、可用T定义结构体变量

C、S是struct类型的变量

D、T是structS类型的变量

标准答案:B

知识点解析:语句lypedefstructS{intg;charh:}T的作用是用T作为stnietS{im

g:charh;)的简写,所以选B。

28二有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中

的三个连续结点。structnode{intdata;structnode*next;}*p,

现要将q

和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是

A、q->next=r->next;r->next=q;p->next=r;

B、q->next=r->next;p->next=r;r->next=q;

C^p->next=r;q->next=r->next;r->next=q;

D、r->next=q;q->next=r->next;p->next=r;

标准答案:D

知识点解析:暂无解析

29、有以卜程序#includevoidWriteStr(char*fn,char*str){FILE*fp;

fp=fopen(fn,HwM);fputs(str,fp);fclose(fp);)main(){WriteStr("tl.dat\

"start");WriteStr("tl.daf'/'end");)程序运行后,文件tl.dat中的内容是

A、start

end

C、startend

D^endrt

标准答案:B

知识点解析:暂无解析

30、有以下程序int*f(znt*x,int*y){if(*x<*y)returnX;elsereturny:)main()

{inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);

printf("%d,%d.%d\n",*p,*q,*r);}执行后输出结果是

A、7,8,8

B、7&7

C、8,7,7

D、8,7,8

标准答案:2

知识点解析:本题定义了一个返回值为指针的函数f(),此函数有两个指针型的形

参x和y)该函数的功能,是返回x和y指向的变量中值较小的那个指针变量。主函

数中定义了两个指针变量p和小并让它们指向了变量a和b,调用函数f(),返回指

向的变量值较小的指针变量,「的值为指针变量p的值(变量a的地址),因此最后

输出的*p、*q和,r的值是7,8和7。所以,B选项为所选。

31、有以下程序:main(){intk=5;while(-k)printf("%d",k-=3);printf("\n");)执行

后的输出结果是()。

A、1

B、2

C、4

D、死循环

标准答案:1

知识点解析:因为在while循环的循环条件中,一运算符是前缀形式,所以表达式

-k的值是k自减之后的值.程序开始时,将k的值初始化为5.然后进入while

循环,因为一k的值为4(非零),所以执行循环体输出k-=3的值1,此时k的值也

变为1。第2次执行循环条件,—k的值为0,所以循环结束。因此最后输出的结

果是1,故应该选择A。

32、有以卜程序:#include<stdio.h>main(){printf("%d\n",NULL);)程序运行后

的输出结果是()。

A、0

B、1

C、-1

D、NULL没定义,出错

标准答案:1

知识点解析:在C语言中NULL的ASCII码值为0,而输出函数要求以整形格式

输出,故最后的输出数为0。所以,4个选项中选项A符合愿意。

33、设a=l,b=2,c=3»d=4,则表达式aVb?a:cVd?a:d的结果为_____。

A、4

B、3

C、2

D、1

标准答案:8

知识点解析:暂无解析

34>下列程序运行后,输出结果是_____o#include<stdio.h>#include<string,h

>fun(char,intn){chart,*s1,*52;sl=w;s2=w+n-l;while(sl<s2)(t=*sl++;

*sl=*s2—;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A、1234567

B、7654321

C、1711717

D、7177171

标准答案:4

知识点解析:暂无解析

35、已知n=1S.执行后,写入fp指向的文件的是«

A、15

B、1111

C、63

D、1111

标准答案:4

知识点解析:使用fprin【f()函数时,函数向文件输出的是ASCII码,特别在输出数

值时,输出的是该数值的ASCII码,而不是数值本身。

36、以卜程序的输出结果是#includeVstdio.h>main。{inta=15/b=21,m=0;

switch(a%3){caseO:m++;break:case1:m++;switch(b%2){default:m++;

case0:m++;break;))printf("%d\n",m);)

A、I

B、2

C、3

D、4

标准答案:1

知识点解析:switch语句的条件是“a%3=15%3=0",所以执行case0后面的语句,

m++;m=l,然后就执行break,跳出switch语句,所以最后输出的m的值为1。

注意:switch嵌套语句的使用。

37、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句

是()

A^p=2*(int*)malloc(sizeof(int));

B、p=(int*)calloc(2*sizeof(int));

C、p=(int*)malloc(2*sizeof(int));

D^p=2*(int*)calloc(sizeof(int));

标准答案:4

知识点解析:暂无解析

38、下面程序段的执行结果为()。inti=3,j=0,k=0;for(;i>0;-i){++k;do{++j;if

(i!=j)break;++k;)while(j<5);}printf("i=%dj=%dk=%d\n",i,j,k);

A、i=0j=4k=12

1=0j=5k=5

C、i=0j=4k=4

D、i=Oj=3k=3

标准答案:4

知识点解析:程序开始时(i,j,k)三个值分别为(3,0,0),然后进入for循环,由

于for的第一条语句空缺,所以不做初始化,此时i为3满足循环条件,进入循环

体。然后执行“++k;”使k变成1,再无条件进入do・while循环体执行“++j;”使j

变成1,此时i和j不相等所以执行break:语句跳出do-while循环。准备开始第二

遍for循环,i的值被减1,此时3个值分别为(2,1,1),i为2满足循环条件,进

入循环体。然后依次执行十十k;和十十j;使它们增1,此时i和j同为2相等,所以

跳过break;语句再执行一次++k;使k为3,由于此时j满足do-while的循环条

件,所以下一步回到前面执行do后面的++j;语句,使j为3,此时i和j不相等,

所以执行break;跳出do-whilc循环。准备开始第三遍for循环,i的值被减1,此

时3个值分别为(1,3,3),i为1满足循环条件,进入循环体。然后依次执行

++k;和++j;使它们增1,此时i和j不相等,所以执行break;跳出do-while循

环。准备开始第四遍for循环,i的值被减1,此时3个值分别为(0,4,4),i为0

不满足for语句的循环条件,所以执行循环体后面的printf()函数输出3个值,故正

确答案为C。

39、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。

Structstu{inti;intname;)st,*p;p=&st;

A、st.i

*p.i

C、(*p).i

D、p->i

标准答案:2

知识点解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构

变量访问,即st.i,也可以用等价的指针形式即(作).i和p->i。

40、有以下程序:main(){inta[10]={l,2,3,4,5,6,7,

8,9,10),*p=&a[3],*q=p+2;printf(,'%d\n,\*p+*q);}

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

A、16

B、10

C、8

D、6

标准答案:B

知识点解析:;数组a各元素a[0]〜a[9]的值依次为1〜10;在程序的说明部分,

指针变量p初始化为&a[3],即*p的值为4;指针变量q初始化为p+2,即

&a[3]+2,所以*q的值为6,所以*p+*q的值为10。

41、有以下程序#inelude(stdio.h>intf(intn);main(){inta=3,s;s=f(A);

8=s+f(A);\n",s);)mtf(intn){staticifita=1:n+=a++:returnn;}

程序运行后的输出结果是

A、7

B、8

C、9

D、10

标准答案:C

知识点解析:s=f(a)表达式第一次调用f(n)函数时。f(n)函数运行结果为n:4,

a=2,即s等于4;s=g+f(a)表达式第二次涮用f(n)函数时,f(n)函数运行结果为

n=5,所以得到s值为9。

四、公共基础填空题(本题共5题,每题1.0分,共5

分。)

42、二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是

标准答案:顺序存储(顺序方式存储)

知识点解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有

序,第二要求是按顺序方式存储。

43、在面向对象的程序没计中,类描述的是具有相似性质的一组【】。

标准答案:对象

知识点解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共

同方法的对象的集合。

44、与结构化需求分析方法相对应的是【】方法。

标准答案:结构化设计

知识点解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是

采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技

术。也就是说,结构化设计是这样一个过程,它决定用哪些方法把哪些部分联系起

来,才能解决好某个具体且有清楚定义的问题。

标准答案:DBXEAYFZC

知识点解析:二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者

中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左,右子树

时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。因此本题中序遍历的

结果为DBXEAYFZCo

46、设二叉树如下:对该二叉树进行后序遍历的

结果为【】。

标准答案:EDBGHFCA

知识点解析:后序遍历二义树的定义为:若二义树为空,则空操作;否则,后序遍

历左子树,后序遍历右子树,访问根结点。根据该规则,遍历结果应为

EDBGHFCA。

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

47、以下程序的输出结果是()。#include<stdio.h>voidswap(int*a,int*B){int*t;

t=a:a=b:b=c;)main(){inti=3,j=5,*p=&i»*q=&j:swap(p,q);

printf("%d%d\n",*p,%);}

标准答案:35

知识点解析:本题考查函数中形参和实参的传递。在C语言函数中实参和形参传

递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然

函数的功能是实现两个数的交换,但由于没有返回值,故最终的输出结果为35。

48、下面程序的运行结果是______o#include<stdio.h>main()[inty,a;y=2,

a=l;while(y—!=-l){do{a*=y;a++;)while(y-);}printf("%d,%d”,a,y);)

A、1,-2

标准依索.

知识之解析:暂无解析

49、线性表的存储结构主要分为顺序存储结构和链式存储结构,队列是一种特殊的

线性表,循环队列是队列的()存储结构。

标准答案:顺序

知识点解析:顺序存储是把逻辑上相邻的节点存储在物理位置相邻的存储单元里,

节点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存

储结构。链接存储不要求逻辑上相邻的节点在物理位置上亦相邻,节点间的逻辑关

系是由附加的指针字段表示的,由此得到的存储表示称为链式存储结构。将队列存

储空间的最后一个位置绕到第一个,形成逻辑上首尾相接的圆环,这种形式的顺序

队列称为循环队列,它是队列的顺序存储结构。

50、下列程序运行的结果是ointk=0;voidfun(intm){m+=k,k+=m;

printf("m=%dk=%d",m,k++);}main(){inti=4;fun(i++);printf("i=%dk=%d\

n",i,k);}

标准答案:m=4k=4i=5k=5。

知识点解析:程序中k为全局变量,在主函数中,局部变量i=4.所以fun(i++)就

调用fun(4),在函数fun(4)中输出m=4,k=4.然后变量k++等于5,变量i++等于

5,所以主函数的prinlf("i=%dk=%d\n",i,k);语句输出i=5,k=5。

51、设有定义:FILE*fw;,请将以下打开文件的语句补充完整,以便可以向文本文

件readme.txt的最后续写内容。fw=fopen(',readme.txt",,'()")

标准答案:a

知识点解析:文件常用的打开方式”a”的作用是向文本文件尾增加数据。

52、以下程序运行后的输出结果是______。main(){inta[4][4]={{1,2,3,4),{5.

6,7,8),{11,12,13,14},{15,16,17,18));inti=O,j=O,s=O;while(i++<4)

{if(i==2||i==4)continue;j=0;do(s+=a[i][j];j++;)while(j<4);)

printf("%d\n",s);}

标准答案:92

知识点解析:暂无解析

53、有以下程序main(){chara,b,C,d;scanf("%c,%c,%d,%d",&a,

&b,&c,&d);printf("%c,%c,%c,%c\nHa,b,c,d);}若运行时从键盘上

输入:6,5,65,66〈回车>。则输出结果是______o

标准答案;6,5,A,B

知识点解析:暂无解析

54、以下程序的运行结果是_____o#include<string.h>typedefstruct

student{charname[10];longsno;floatscore;)STU;main(){STU

a=(nzhangsan",2001,95},b={nShangxian",2002,90},c={HAnhuan,2003,95),d,*p-&d;

d=a;if{strcmp(a.nalne,)>O)d=b:if(strcmp(,)>0)d=c;

printf("%ld%s\n,,,d.sno,p>name);}

标准答案:2002Shangxian

知识点解析:本题考核的知识点是结构体类型的定义、赋初值以及字符串的比较。

本题中首先定义一个结阂体类型STU,镇结构体由一个长度为10的字符型数组、

一个long型变量和一个float型变量组成。接着在主函数中用STU定义了4个结构

体变量a、b、c、d,并且给a、b、c赋初值,然后定义?一个结构体指针p,并让

它指向变量d。然后让将变量a的值赋给变量d,接着通过两个if语句比较结构体

变量a、b、c的成员name大小。第一个订语句将结构体变量a.namc和结构体变量

中较小的那个赋值给结构体变量d,第二个if语句将结构体变量和

结构体变量较大的那个赋给结构体变量do比较通过函数stremp实现。

stremp。函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第

二个字符串返回值大于0,若第一个小于第二个返回值小于0,相等时返回值为

0o字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符

大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在

的字符串就是较小的字符串。程序中第一个if语句strcmp(,b.name)>0为

真,故将b的值赋给d:第二个if语句strcmp()>0为假,故不执行

后面的语句,最后d的值为b的值,因此输出d.snO和p->name的值为

2002Shangxian

55、下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。

main(){ints[]={6,7,2,13,9,1,12,10,5,8,4,3,1l),*a,*b;for([])if(*a<*b)a=b;

printf("%d",*a);)

标准答案:a=s,b=s+l;b-s<sizeof(s)/sizeof(s[0]);b-H-

知识点解析:题目要求输出数组中最大的数,所以要遍历整个数组,而指针a用来

指向最大数,所以循环变量只有使用指针b。for初始化时,应该先让a指向第1个

数,然后让b指向第2个数,故循环初始化语句应该为a=s,b=s+l或其他等价表达

式c因为要使h遍历整个数组,故循环条件应该为hTVt7ecf(x)/0i7ecf(qO])或其他

等价表达式。最后每次循环应该让b往后移动一位,故for的第3条语句应该是

++b、b++或其他等价形势。所以本题应填a=s,b=s+1;b-s<sizeof(s)/sizeof(s|0|);

b++或其他等价语句。

56>下列程序的输出结果是[]omain(){inta=Lb=2;a=a+b;b=a-b;a=a-

b;printf("%d,%d\nM,a,b);)

标准答案:2,1

知识点解析:本题中,执行a=a+b时,a=l,b=2,a=1+2=3;b=a-b时,a=3,

b=2,b=3-2=l;a=a・b时,a=3,b=l,a=3-l=2;因此,本题的输出是2,1

57>下列程序的运行结果是_____o#include<stdio.h>main(){inta,b,c,n;

a=2;b=0;c=l;n=l;whiie(n<=3){c=c*a;b=b+c;++n;)printf("b=%du,

B);)

标准答案:b=14

知识点解析:分析程序可知,n的初始值为1,因此,whi1e(nV=3)循环3次。第1

次:c=c*a=2:b=b+c=2;n=2o第2次:c=c*a=4;b=-b+c=6;n=3。第3次;

c=c*a=8:b=b+c=14o当n=4时,判断条件不满足,退出循环。

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

一、公共基础选择题(本题共io题,每题1.0分,共

10分。)

1、算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不

允许有多义性。算法的这个性质称为。

A、可行性

B、有穷性

C、正确性

D、确定性

标准答案:8

知识点解析:算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解

释,也不允许有多义性。算法的这个性质即为算法的确定性。

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

A、随机存储

B、顺序存储

C、索引结构

D、散列结构

标准答案:2

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

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

顺序存储。

3、下列关于栈的描述中错误的是

A、栈是先进后出的线性表

B、栈只能顺序存储

C、栈具有记忆作用

D、对栈的插入与删除操作中,不需要改变栈底指针

标准答案:2

知识点解析:栈是限定在一端进行插入与删除的线性表,栈顶元素总是最后被插入

的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也

是最后才能被删除的元索,即栈是按照“先进后出''或"后进先出''的原则组织数据

的,这便是栈的记忆作用,所以选项A和选项c正确.对栈进行插入和删除操作

时,栈顶位置是动态变叱的,栈底指针不度,选项D正确。由此可见,选项B的

描述错误。

4、对建立良好的程序没计风格,下面描述正确的是o

A、程序应简单、清晰、可读性好

B、符号名的命名只要符合语法即可

C、充分考虑程序的执行效率

D、程序的注释可有可无

标准答案:1

知识点解析:B选项错误,符号名应该能反映出它所代表的实际东西,应有一定的

意义,不是简单的符合语法就可以.C选项不对,应该在保证程序正确的情况下再

考虑程序的执行效率。D选项错误,程序的注释有益于对程序的理解和维护,好的

程序必不可少。A选项正确。

5、下面不属于软件工程的三个要素的是。

A、工具

B、过程

C、方法

D、环境

标准答案:8

知识点解析:软件工程三要素是方法、工具和过程。

6、软件调试的目的是_____o

A、发现错误

B、改正错误

C、改善软件的性能

D、挖掘软件的潜能

标准答案:2

知识点解析:在对程序进行了测试以后进入程序调试.调试的任务是诊断和改正程

序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。

7、数据库是的集合,它具有统一的结构形式并存放于统一的存储介质内,

可被各个应用程序所共享。

A、视图

B、消息

C、数据

D、关系

标准答案:4

知识点解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放

的,它能构造复杂的数裾结构,以建立数据之间的内在联系与复杂的关系-故答案

为C。

8、下列叙述中不正确的是

A、数据库技术的根本目标是要解决数据共享的问题

B、数据库系统中,数据的物理结构必须与逻辑结构一致

C、数据库设计是指设计一个能满足用户要求,性能良好的数据库

D、数据库系统是一个独立的系统,但是需要操作系统的支持

标准答案:2

知识点解析:B选项错误,原因是,数据库应该具有物理独立性和逻辑独立性,改

变其一而不影响另一个。

9、规范化理论中,分解主要是消除其中多余的数据相关性。

A、关系运算

B、内模式

C、外模式

D、视图

标准答案:1

知识点解析:数据再规范化的基本思想是逐步消除数据依赖中不合适的部分,根本

思想是通过分解关系运算来消除多余的数据相关性。

10、在软件设计中,不属于过程设计工具的是

A、PDL(过程设计语言)

B、PAD图

C、N-S图

D、DFD图

标准答案:8

知识点解析:数据流图DFD,是结构化分析方法最主要的一种图形工具,不属于

过程设计工具。

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

分。)

11、以下选项中可作为c语言合法整数的是

A、10110B

B、386

C、OXffa

D、x2a2

标准答案:4

知识点解析:本题考核的知识点是整数及常数的表示方法。在C语言中,整数常

量可以用十进制、八进制和十六进制来表示,选项A为二进制表示,故选项A不

正确;选项B是八进制表示法,但在八进制数中,各个位数只能为数字。到7中

的一个,而在选项B中,有一个数字8,故选项B不正确;选项C为十六进制表

示法正确:选项D中也为十六进制表示法,但十六进制数以Ox开头,故选项D

不正确,所以,4个选项中选项c符合题意。

12、以下不能定义为用户标识符的是

A、scanf

B、Void

C、_3com_

D、int

标准答案:8

知识点解析:本题考核的知识点是用户标识符的定义。在C语言中,合法的标识

符由字母、数字和下划线组成,并且第1个字符必须为字母或下划线。选项D中

而为C语言中的保留字,不能作为用户的标识符;选项A、B、C都为合法的标识

符.所以,4个选项中选项D符合题意。

13、请选出可以作为C语言用户标识符的一组标识符号

A、voiddefineWORD

B、B_b3」23IF

C、for-abccase

D、2aDOsizcof

标准答案:2

知识点解析:本题考核的知识点是用户标识符的定义。在C语言中,合法的标识

符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的

第一个字符必须为字母或下划线。选项A中void为关键字,故选项A不正确:选

项C中for和case为关键字,故选项C不正确:选项D中sizeof为关键字,故选

项D不正确。所以,4个选项中选项B符合题意。

14、下列描述中正确的是

A、程序就是软件

B、软件开发不受计算机系统的限制

C、软件既是逻辑实体,又是物理实体

D、软件是程序、数据与相关文档的集合

标准答案:8

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

数据及相关文档的完整集合。选项D的描述正确。

15、有定义语句:“intx,y;”,若要通过“scanf(”%d,%d,&x,&y);”语句使变量X

得到数值II,变量y得到数值12,下面四组输入形式中,错误的是

A、1112V回车〉

B、IL12V回车,

C、11/2V回车〉

D、11,V回车,12V回车〉

标准答案:1

知识点解析:本题考核的知识点是scanf()函数的运用。seanf()函数有两个参数,第

一个参数为输入格式字符串,第二个参数为输入变量地址列表,在scallf()语句中

非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式

串为%d,%d其中“,”为非格式字符,所以输入时必须原样输入。所以4个选项中

选项A符合题意。

16、与数学式子对应的C语言表达式是

A、3*xn(2*x-l)

B、3*x**n(2*x-l)

C、3*pow(x,n)*(l/(2*x-i))

D、3*pow(n,x)/(2*x-l)

标准答案:4

知识点解析:本题考查的知识点是表达式的表示。在该题中,x的n次方应该调用

函数pow(x,n)计算,故选项A、B排除。而在选项D中,pow(x,n)的参数写反了。

选项C正确。

17、以下选项中不属于C语言的类型的是

A、signedshortint

unsignedlongint

C>unsignedint

D、longshort

标准答案:8

知识点解析:本题考核的知识点是c语言中的数据类型。在选项中很明显选项A

为无符号短整型,选项B为无符号长整型,选项C为无符号整型,而选项D的类

型在C语言中不存在。所以,4个选项中D为所选。

18、若有说明语句:inta,b,c,*d=&c:,则能正确从键盘读入三个整数分别赋绐变

量a、b、c的语句是

A、scanf("%d%d%d"&a,&b,D)

B、scanf("%d%d%d"&a,&b.&D)

C、scanf("%d%d%d';a,b,D)

D、scanf("%d%d%d';a,b,*D)

标准答案:1

知识点解析:本题考核的知识点是scanf()函数的使用。seanf()函数有两个参数,第

一个参数是输入格式字符串,第二个参数是输入变量地址列表.输入格式字符串主

要由“%”符号和格式字符组成。地址列表是由多个地址组成的。选项B中d已经为

地址,不应在加上求地址符号“&”,故选项B不正确;选项C中,a和b都为变量

不是地址,应该在a和b之前加上求地址符号“&”,故选项C不正确;选项D中指

针d所指向的存储空间的位置为变量c的值,不为地址,故选项D不正确,所

以,4个选项中A为所选。

19、已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z・l&&y+z/2的值是

A、6

B、0

C、2

D、1

标准答案:X

知识点解析:本题考查的知识点是!和&&的运算规则.本题中,&&左边的表达

式!(x+y)为!(3+7),结果为假,即为0。再加上2,然后减一,相当于0+5・1=4,左

边等于4,&&右边的表达式y+z/2相当于4+5/2为6,所以整个表达式相当于

4&&6为真,即为1,所以选项D正确。

20、以下叙述正确的是

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

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

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

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

标准答案:2

知识点解析:本题考核的知识点是c语言中的保留字,而define不是保留宇。用户

标识符不允许使用保留字,故选项A和选项C以及选项D均不正确。所以,4个

选项中B为所选。

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

分。)

21、以下选项中,不能作为合法常量的是

A、1.234e04

B、1.234e0.4

C、1.234e+4

D、L234e0

标准答案:2

知识点解析:本题考查的是C语言中实型常量的指数表示法。实型常量的指数表

示法是用字母e(或E)将一个实数的小数部分和指数部分分隔开。字母e(或E)之前

是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故

选项B不正确。所以,4个选项中选项B符合题意,

22、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

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

B、函数调用可以作为一个函数的实参

C、函数调用可以出现在表达式中

D、函数调用可以作为一个函数的形参

标准答案:8

知识点解析:本题考核的知识点是函数调用的基本概念。在C语言中规定:有返

回值的函数调用,可以作为表达式或表达式的一部分,也可以作为二条语句,故选

项A和选项C正确:而有返回值的函数调用只能作为一个函数的实参(即将其返回

值传给相应的形参),而不能作为形参(因为行参是在函数定义时说明的),故选项B

正确选项D不正确。所以,4个选项中选项D符合题意。

23、有以卜程序main(){intm=12,n=34;printf("%d%dn,m++,++n);

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

A、12353514

B、12353513

C、12343514

D、12343513

标准答案:1

知识点解析:本题考查的是自加运算符的运用。自加运算符有前缀和后缀两种不同

的形式,对于变量本身来说,无论是前缀还是后缀其作用的效果都是相同的,使变

量值增1。但作为表达式来说却有着不同的值,前缀时自增表达式的值是变量增

1,后的值,而后缀时自增表达式的值是变量增1前的值。本题程序开始定义了两

个整型变量m和n,并分别初始化为12和34.第一条输出语句是按整型格式输出

表达式m++和++n的值,根据前面所述,表达式m++的值为12,++n的值为35,

所以第一次输出的字符串是“1235”,执行完后m和n的值都自增1,分别是13和

35.接下来第二条输出语句也是按整型格式输出表达式n++和++m的值,分别是

35和14,故最终的输出应该为“12353514",所以,4个选项中选项A符合题意。

24、有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=y;y=t;}main(){int

a=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n\a,b,c);)执行后输出的结果是

A、3,4,5

B、5,3,4

C、5,4,3

D、4,3,5

标准答案:8

知识点解析:本题考核的知识点是函数的定义、调用方式以及参数的传递。C语言

规定,在函数调用时变量作为参数传递是传值的,在函数体中对形参变量的修改不

能影响到对应的实参变量。本题定义了一个函数fO,用变量作为形参,在main。

函数中调用了3次f()函数,由于变量作为参数进行传递,所以对应的实参的值并

没有被交换。所以输出的a、b、c依旧是原来的值4,3、5o所以,D选项为所

选。

25、若有一些定义和语句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q二&b;

w=q;q=NULL;则以下选项中错误的语句是

A、*q=0;

B、w=p;

C>*p=a;

D、*p=*w;

标准答案:1

知识点解析:本题考核的知识点是指针变量的使用与空指针(NULL)基本概念.本

题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过

将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整形变量指针的定义

可知,可以给整型指针指向的变量赋一个常数值(表达式),故选项C和选项D是正

确的;可以给指针变量赋一个同种类型的指针变量(或地址值),故选项B也是正确

的;选项A错误,因为q不指向任何变量,给一个空指针指向的单元赋值是错误

的。所以,A选项为所选。

26、以下能正确定义旦赋初值的语句是

A、intnl=n2=10:

charc=32;

CNfloatf=f+1.1

D、doublex=12.3E2.5:

标准答案:2

知识点解析:本题考查的知识点是变量赋初值.选项A中的语句只能起定义nl的

作用,而n2=IO是nl的初始值表达式,但因前面没有定义过n2,所以编译会报错

“n2未定义”,故不正确,选项B使用一个整数初始化一个字符变量是正确的,因

为字符变量中保存的本来就是整数(某字符的ASCII码值)。选项C定义的初始值表

达式中出现了它自身,某些编译器能通过编译,但f在初始化之前是一个未知的

值,用未知值来初始化也还是未知值,这是不可取的。选项D的初始值是一个非

法常量,因为实型常量由数形式的指数部分必须为整数,这里的2.5非法。

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

sort(inta[],intn){intfor(i=0;i<n-l;i++)for(j=i+l,j<nj++)if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;))main()(intaa[10]={1,23,4,5,6,7,8,9,10},i;sort(&aa[3],5);

for(i=0;i<10;i++)print("%d,\aa[i]);primf('\n))程序运行后输出的结果是

A、123,4,5,6,7,8,9/0

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

C、123,8,7,6,5,4,9,10

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

标准答案:4

知识点解析:本题考查的知识点是数组名作为函数的参数以及函数与排序算法结合

在一起的综合应用.本题中首先定义一个长度为10的一个整型数组,并初始化为

力,2,3,4,5,6,7,8,9,10”,然后调用排序函数sort。,通过分析不难看

出,sori。数是对具有n个元素的a数组进行从大到小排序.由于函数的第一个参

数是数组名,其对应的实参可以是函数名或地址。本题在调用该函数时,实参是

&aa[3)的地址,即把aa[引的地址传给?行参数蛆名a,函数也就是对aa⑶开始的5

个元素进行从大到小的排序,aa[0]oaa[l],aa[2]>aa[8],aa[9]并没有变化.Sort()

执行完毕后,接着执行后面的for语句输出数组aa中各个元素的值,由于函数

sort。只是对aa[3]开始的5个元素进行从大到小的排序,aa[0]、aa[l]、aa[2]>

aa[8]>aa[9]并没有变化,所以输出为“1,2,3,8,7,6,5,4,9,10“。所以4

个选项中C正确。

28、若有以下程序#include<stdio.h>voidf(intn);main()(voidf(intn);f(5);}void

t(intn){pnntt("%d\n",n);}则以下叙述中不正确的是

A、若只在主函数中对函数f进行说明,则只能在土函数中正确调用函数f

B、若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正碗

调用函数f

C、对于以上程序,编译时系统会提示出错信息:提示对f函数重复况明

D、函数f无返回值,所以可用void将其类型定义为无值型

标准答案:4

知识点解析:本题考核的知识点是函数说明的方法。若一个函数定义在主调函数之

后,其返回值不是int或char型,则必须对之进行函数说明。

温馨提示

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

评论

0/150

提交评论