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

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷4(共

9套)

(共543题)

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

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

70分。)

1、算法的时间复杂度是指()。

A、算法的长度

B、执行算法所需要的时间

C、算法中的指令条数

D、算法执行过程中所需要的基本运算次数

标准答案:D

知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执

行过程中所需基本运算的执行次数来度量算法的工作量。

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

A、栈

B、线性表

C、队列

D、二叉树

标准答案:D

知识点解析:二叉树属于非线性结构。栈是一种特殊的线性表,这种线性表只能在

固定的一端进行插入和删除操作;队列可看作是插入在一端进行,删除在另一端进

行的线性表。

3、数据结构中,与所使用的计算机无关的是数据的()。

A、存储结构

B、物理结构

C、逻辑结构

D、线性结构

标准答案:C

知识点解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机

无关。

4、内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是()。

A、顺序内聚

B、偶然内聚

C、时间内聚

D、逻辑内聚

标准答案:B

知识点解析:内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联

系。内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚——模块中的

代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块为巧

合强度模块。逻辑内聚——这种模块把几种相关的功能组合在一起,每次被调用

时,由传送给模块的参数来确定该模块应完成哪一种功能。时间内聚—这种模

块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。过程内聚

-如果一个模块内的处理元素是相关的,而旦必须以特定次序执行,则称为过程

内聚。通信内聚—这种模块除了具有过程内聚的特点外,还有另外一种关系,

即它的所有功能都通过使用公用数据而发生关系。顺序内聚一如果一个模块内

各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输

出数据作为下一个处理元素的输入数据,则称为顺序内聚。功能内聚—如果一

个模块包括为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起

来是为了完成一个具体的任务,此模块则为功能内聚模块。

5、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有

若干个键.它们称为该表的().

A、连接码

B、关系码

C、外码

D、候选码

标准答案:D

知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表

中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选

取一个作为用户使用的键称为主键或主码。

6、检查软件产品是否符合需求定义的过程称为()。

A、确认测试

B、需求测试

C、验证测试

D、路径测试

标准答案:A

知识点解析:确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需

求规格说明中确定的各种需求。

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

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

A、控制流

B、加工

C、存储文件

D、源和潭

标准答案:A

知识点解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构

成,包括4个方面,即加工、数据流、存储文件、源和潭。

8、待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增

的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。

A、2

B、3

C、4

D、5

标准答案:A

知识点解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它

交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一

趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。

9、对关系s和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关

系R中的所有元组,这样的集合运算称为()。

A、并运算

B、交运算

C、差运算

D、除运算

标准答案:A

知识点解析:关系的并运算是指,由结构相同的两个关系合并,形成一个新的关

系,其中包含两个关系中的所有元组。

10、下列选项中,不属于数据管理员(DBA职责的是()。

A、数据库维护

B、数据库设计

C、改善系统性能,提高系统效率

D、数据类型转换

标准答案:D

知识点解析:数据库管理员(DaiaBascAdminisiralor,DBA)是指对数据库的规划、

设计、维护、监视等的人员,其主要工作如下:?数据库设计。DBA的主要任务

之一是数据库设计,具体地说是进行数据模式的设计。?数据库维护。DBA必须

对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实

施与维护。?改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状

态,不断调整内部结构,使系统保持最佳状态与效率。

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

分。)

11、对于一个正常运行的C程序,下列叙述中正确的是()。

A、程序的执行总是从main函数开始,在main函数结束

B、程序的执行总是从程序的第一个函数开始,在main函数结束

C、程序的执行总是从main函数开始,在程序的最后一个函数中结束

D、程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束

标准答案:A

知识点解析:一个C语言源程序无论包括了多少函数,总是从main函数开始执

行,从main函数结束。

12、以下选项中与if(a==l)a++;elsea=b:语句功能不同的语句是()。

A、switch(a){case0:a=b;break;default:a++;)

B、switch(a==l){case0:a++;default:a=b;}

C^switch(a){default:a=b;break:casel:a++:}

D、a=(a==l)?(a++):b

标准答案:B

知识点解析:ifelse语句的含义是,如果变量a的值等于1,变量a的值加1,否

则,则把变量b的值赋给变量a。在本题的4个选项中,与其含义不同的是选项

B,因为没有break语句,当a=l的时候,会顺序执行两条语句,最终结果是将b

的值赋给a。

13、以下不合法的用户标识符是()。

A、804zhang

B、_hh

C、yy614

D、If

标准答案:A

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

字符必须是字母或下划线。

14、已知chara;intb;floatc;doubled:则表达式a-b+c-d结果为()型。

A、double

B>float

C^int

D、char

标准答案:A

知识点解析:C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先

将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是:①运算

中将所有char型转换成血型,floal型转换成double型;②低级类型服从高级类

型,并进行相应的转换,数据类型由低到高的顺序为:

char->int->unsigncd->long->float->doublc;③赋值运算中最终结果的类型,以赋值

运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,

并进行相应转换。

15、假设有语句sizeof(double),则它是()。

A、一个整型表达式

B、一个双精度浮点型表达式

C、一种函数调用

D、一种函数定义

标准答案:A

知识点解析:sizeof(double)是C语言内部规定的一个“算参数(double)在il算机的

内存中所占用的字节数量的函数,它返回一个整数值。

16、若变量都已正确说明,则以下程序段输出结果为()。#includemain。{char

a='a';intb=2:printf(a>b?"***a=%d":"###b=%d”,a,b);}

A、***a=3

B、###b=3

C、***a=3##b==5

D、全部错误

标准答案:D

知识点解析:本题考查printf函数的格式和三日运算符“?:”的使用。printf函数中

格式说明符之前插入的任何字符都原样输出。本题中a>b为真,所以返回

17、若有以下定义(设皿类型变量占2个字节)inti=8,j=9;则以下语句:

prinlf("i=%%d,j=%%%d\n”,i,j);输出的结果是()。

A、i=8,j=9

B、i=%d,j=%8

C、i=%dj=%d

D、8,9

标准答案:B

知识点解析:本题考查prinif函数的格式。prinif函数中格式说明符之前插入的任

何字符都按原样输出。对于printf函数,有两个%说明,第一个%后面的内容要按

原样输出。

18、设a和b均为in【型变量,且a=6,b=ll,则能使值为3的表达式是()。

A、b%(a%4)

B、b%(a-a%5)

C、b%a-a%5

D、(b%a)-(a%4)

标准答案:D

知识点解析:表达式“a%b”表示的是求a除以b的余数。因此,选项A:(6%

4)=2,11%2=1;选项B:(6-6%5)5,11%5=1;选项C:11%6-6%5=4:选项D:

(11%6)-(6%4)=3。

19、有关return语句说法不正确的是()。

A、系统默认的返回值类型为整型,故当函数的返回值为血型时,在函数定义

时,返回值的类型说明可以省略。

B、当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。

C、当函数没有返回值时,函数的返回值类型可以说明为void型,它表示“无类型”

或“空类型”。

D、函数的返回值类型必须与return语句中的表达式值的类型一致,但C语言也允

许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句

中表达式的值转换为函数的返回值类型。

标准答案:D

知识点解析:函数的返回值类型一般与return语句中的表达式值的类型一致,但C

语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将

return语句中表达式的值转换为函数的返回值类型。

20、有以下程序:#includemain(){inti=0,a=0:while(i<20){for(;;){if((i%

5)==0)break;elsei-;}i+=l3,a+=i;}printf("%dkrT,a);}程序的输出结果

是()。

A、62

B、63

C、23

D、36

标准答案:D

知识点解析:本题考查while循环。当i<20时,进入while循环体,循环体内的

for循环实现的功能是,当i值是。或5的倍数时,执行“i+=13;a+=i;”这两条语

句;若i值不是5的倍数则一直执行for循环。①当i=0时,执行i+=13;a+=i;

i=13,a=13;②判断i=l3(20,进入wlhile循环体,i=10时,跳出for循环,执行

i+=13;a+=i;i=23»a=36:⑼判断i=23>20,循环结束。

21、在下列选项中,没有构成死循环的程序段是(),

A、inti=100;for(;;){i=i%10+1;if(i>10)break;}

while(l);

C、intk=0:do{++k;)while(k<=10);

D、ints=12;while(s);-s:

标准答案:C

知识点解析:本题考查死循环的知识。选项A中,for循环没有任何控制语句就会

一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内,i=i%10+l

这个表达式的值永远小于10,所以永远不会跳出循环,是死循环;选项B中,

while中表达式永远是非0,不会结束循环;选项C中,当k>10时,结束循环;选

项D中,while(s);后面没有任何表达式而是直接加了一个分号,会一直执行,形

成死循环。

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

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

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

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

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

标准答案:D

知识点解析:本题考查函数调用的有关知识点。函数调用①可以出现在表达式

中:②可以作为独立的语句存在;③可以作为一个函数的实参。

23、以下程序的输出结果是()。includemain(){inta=l,b=3:if((++a<0)&&!(b-

<=0))printf("%d,%d\n”,a,b);elsepfintf("%d,%d\n”,b,a);)

A、2,2

B、1,3

C、3,2

D、3.1

标准答案:C

知识点解析:解答本题的关键在于if语句条件中的表达式。初始时a=l,b=3,所

以++a=2>0,因此++a〈。为假;因为是进行逻辑与(&&)运算,在&&的一个运算对

象为假的前提下不用判断第二个运算对象的真假,就可以直接得出整个表达式的值

为逻辑0,所以执行else语句。

24、有以下程序:#includemain(){intx;scanf("%d”,&x);if(x<=0);else

if(x!=5)printfr%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果

()o

A、不等于5的整数

B、大于0且不等5的整数

C、大于0或等于5的整数

D、小于5的整数

标准答案:B

知识点解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行

上,因此,程序的意思是当x大于0且不等于5时将其打印出来。

25、若执行下述程序时,若从键盘输入6和8,结果为()。main(){inta,b,s;

scanf("%d%d”,&a,&b);s=a:if(s=b)s*=s:printf("%d",s);}

A、36

B、64

C、48

D、以上都不对

标准答案:B

知识点解析:首先通过scanf函数把从键盘读入的数据赋给变量a和b,if语句判

断如果a和b不等,执行s=s*s=64°

26、若运行时给变量x输入12,则以下程序的运行结果是()。main(){int.x,

y;scanf("%d“,&x);y=x>127x+10:x-12;prinlf("%d\n",y);)

A、0

B、22

C、12

D、10

标准答案:A

知识点解析:本题考查三目运算符表达式“x>127x+10:x-12”即,如果x>12

成立,则x十10的值即为此表达式的值,否则x・12即为此表达式的值。囚为

x=12,所以x>12不成立,所以执行v=x-12=0。

27、运行下面程序时,从键盘输入字母A,则输出结果是()。#inckidemain()

{charch;ch=getchar();switch(ch){case4A':prir.tf(44AAAA\nM);case'B':

printfCBBBB\n^);default:printf(uCCCC\nn);})

A、AAAA

B、AAAABBBB

C、AAAABBBBCCCC

D、AAAACCCC

标准答案:C

知识点解析:本题考查switch语句。因为ch=A,所以第一个switch语句,执行

casbA,面的语句,输出AAAA,没有遇到break语句,所以接着再执行case'B'和

default,分别输出BBBB和CCCCo

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

A、只能在循环体内和switch语句体内使用break语句

B、conliune语句的作用是结束整个循环的执行

C^在循环体内使用break语句或continue语句的作用相同

D、从多层循环嵌套中退出时,只能使用got。语句

标准答案:A

知识点解析:本题考查循环的4个知识点:①break语句可以出现在循环体内及

switch语句体内,不能用于其他的语句;②continue语句的作用是结束本次循环,

即跳过循环体中下面尚未执行的语句,而接着转去判定循环条件是否成立,从而确

定下一次循环是否继续执行,也就是说执行contiune语句不会使整个循环终止;

③在循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,

可以使用goto语句或者break语句。

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

A、在C语言中,对二进制文件的访问速度比文本文件快

B、在C语言中,随机文件以二进制代码形式存储数据

C、语句FILEfp;定义了一个名为Fp的文件指针

D、C语言中的文本文件以ASCH码形式存储数据

标准答案:C

知识点解析:在C语言中,文件指针实际上是指向一个结构体类型的指针,一般

称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指

针变量的一般形式为:FILE*指针变量名;选项C中少了“”,所以选项C错误。

30、若输入“abcdef*'、"abdef*',以下程序的输出结果为()。#include#includemain()

{intn;charsi[20],s2[20],*p1,*p2;scanf("%s”,si):scanf("%s”,s2);

pI=s1;p2=s2;n=strcmp(pl,p2);printf("%d\n",n);}

A、-1

B、0

C、“abcdef'

D、“abdeF

标准答案:A

知识点解析:本题考查两个知识点:①字符串比较函数strcmp(sl,s2),若

sl>s2,则返回1;若sl=s2,则返回0;若si

31、以下语句定义正确的是()。

AAinta[l][4]={l,2,3,4,5);

B、floata[3][]={{l),{2},⑶);

C.longa[2][3]={{l},{1,2),{1,2,3),{0,0});

D、doublea[][3]={0};

标准答案:D

知识点解析:本题考查的是如何对二维数组进行赋值。选项A中数组第二维的大

小是4,但却给赋了5个元素;选项B中C语言规定,对于二维数组,只可以省略

第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式;选项C

中数组第一维的大小是2,但是赋值却超过了2;选项D中在对二维数组元素赋初

值时,可以只对部分元索赋初值,未赋初值的元素自动取0。

32、下述程序的输出结果是()。includevoidmainf){inta[5]:{1,2,3,4,5);

int*p=a,**q=&p:printf("%d”,*(p++));printf("%d”,**q);}

A、22

B、11

C>34

D、12

标准答案:D

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

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

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

33、字符串\\"ABCDEF\"\\”的长度是()。

A、11

B、10

C、5

D、3

标准答案:B

知识点解析:本题涉及字符串的两个最基本的概念。①字符串的长度是指字符串

中字符的个数,但不包含字符串结束符;②以反斜线开头的特殊字符序列,

意思是把反斜线后面的字符序列转换成特定的含义,而不是原来的含义,不包含在

字符串长度之内,连同后面的字符为一个长度,

34、若二维数组a有m列,则在前的元素个数为()。

A、j*m+i

B、i*m+j

C、j*m+i+l

D、i*m+j+l

标准答案:B

知识点解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的

元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有

i*m个元差,数组第二维的下标是j,说明它前面还有j歹U,有j个元素,所以共有

i*m+j个元素。

35、下列程序的运行结果是()。#includevoidfun(int*s,int*p)(staticintt=3:

*p=s[t];t—;}voidmain(){inta[]={2,3,4,5},k,x;for(k=0;k<4;k++)

{fun(a,&x);printf("%d,",x);}}

5,4,3,2,

B、2,3,4,5,

C、2,2,2,2,

D、5»5,5,5,

标准答案:A

知识点解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(计1)个

元素以前的元素逆置赋给数组D。由于fun函数定义了静态变量1=3,因此,在主

函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆在赋给数组x,最

后输出x数组。

36、以下有关宏替换的叙述不正确的是()。

A、双引号中出现的宏名不替换

B、使用宏定义可以嵌套

C、宏定义仅仅是符号替换

D、宏名必须用大写字母表示

标准答案:D

知识点解析:.本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏

替换两类。使用宏时应注意以下几点:①定义仅仅是符号替换,不是赋值语句,

因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字

母,但不是必须用大写:③双引号中出现的宏名不替换:④使用宏定义可以嵌

套,即后定义的宏中可以使用先定义的宏。

37、设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的

是()。

A、charstr[]=ustringM;c=str;

B、scanf("%s",c);

C、c=getchar();

D、charstr[]-4string,,jstrcpyf'c,str")

标准答案:A

知识点解析:在题目的题干中定义了字符指针变量c,在选项A中,首先定义字符

数组str,然后再把字符数组sir的首地址赋给字符指针变量c。所以选项A是正确

的。在选项B中,应改成scanf("%s”,&C:在选项C中,getchar函数的返回值是

用户输入的第一个字符的ASCH码,如出错返回-1,且将用户输入的字符回显到屏

幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,

等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D

中,strcpy函数只是将和字符串中的内容赋给c,并没有使其指向str,所以选项

D是错误的。

38、有以下程序:#inchide#inchidestructA{inta:charb[l()]:doublec:(:void

f(structA*t);main。{structAa={1001,“ZhangDa”,1098.0};f(&a);printR"%

d,%s,%6.lf\n”,a.a,a.b,a.c);)voidf(structA*t){t->a=1002;

strcpy(t->b,"ChangRong-);t->c=12O2.0;}程序运行后的输出结果是()。

A、1001.zhangDaJ098.0

B、1002,ChangRong,1202.0

C>1001,ChangRong,1098.0

D、1002,zhangDa,1202.0

标准答案:B

知识点解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参

数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生

变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参

变化。

39、下述程序的输出结果是()。#includevoidmain(){chara=l,b=2;char

c=aAb«2:pfintfT\n%d”,c);)

A、9

B、10

C、12

D、2

标准答案:A

知识点解析:本题主要考查C语言最基本的算术运算“左移(vv)”和“异或(八)”。“左

移''或“右移”运算表达式的一般形式为:xcn。“左移(<<)”运算的规则是将x的二

进制位全部向左移动n位,将左边移动的高位舍弃,右边空出的位补0;“右移

(>>)”运算的规则是将x的二进制位全部向右移动n位,将右边移动的高位舍弃,

左边高位空出要根据原来符号位的情况进行补充,对无符号数则补0,对有符号

数,若为正数则补0,若为负数则补1。“异或”运算是当两个运算量的相应位相同

时结果为0,不相同时结果为1。b=2的二进制为(00000010)bv<2后为00001000,

a=l的二进制为00000001,所以(:一殁)《2为00001001,转化为十进制后为9。

40、已知一个文件中存放若干工人档案记录,其数据结构如下:structa{char

number[100];intage:floatp[6];};定义一个数组:structanumber[10];假定

文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是()。

A、fread(b,sizeof(structa),10,fp);

B、for(i=0;i<10;i++)fread(b[i],sizeof(structa),1,fp);

C、for(i=0;i<10;i++)fleadCb+i,sizeof(structa),1,fp);

D、for(i=0;i<5;i+=2)fread(b+i,sezeof(structa),2,fp);

标准答案:B

知识点解析:数据块输入/输出函数的调用格式为:frcad(buffcr,size,count,fp),

其中:“buffer”是一个指针,对于fread来说,它是读入数据的存放地址。“size”是

要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型

指针。选项B)中b[i]是一个数组,不是指针,需改为

三、公共基础填空题(本题共5题,每题7.0分,共5

分。)

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

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

标准答案:数据存储

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

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

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

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

42、的目的是分析数据问内在语义关联,在此基础上建立一个数据

的抽象模型。

标准答案:数据库概念没计

知识点解析:数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立

一个数据的抽象模型。

43、下列软件系统结构图的宽度为

标准答案:3

知识点解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

44、在两种基本测试方法中,-测试的原则之一是保证所测模块中每一

个独立路径至少要执行一次。

标准答案:白盒

知识点解析:白盒测试的基本原则是:保证所测模块中每•独立路径至少执行一

次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在

边界条件下至少执行一次;验证所有内部数据结构的有效性。

45、数据结构分为线性结构和二仆三线性结构,带链的队列属于

标准答案:线性结构

知识点解析:一个数据结构是线性结构还是非线性结构,判断依据是数据结构前后

件关系的复杂程度,而与其所使用的存储结构是没有关系的。在一个非空的队列

中,每一个元素只有一个前件和后件,因此它属于线性结构。

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

46、当m=l,n=2,a=3,b=2,c=4时,执行d=(m=a!=b)&&(n=b>C后,m的值为

标准答案:1

知识点解析:①“sizeo「、"%”、">"、“vv”、“*=”运算符的优先级顺序为:

“*=,,.“>,,―”一,,―"%,・一,zeof,:②位运算的优先级顺序为:

“〜"(b=2)>(c=4)不成立,逻辑为假,所以n=0;

(a=3)!=(b=2)成立,逻辑为真,所以m=l。

47、若变量x、y已定义为int类型且x的值为33,y的值为3,请将输出语句

printf(,x/yl;补充完整,使其输出的计算结果形式为:x/y=ll0

标准答案:"x/y二%d”

知识点解析:本题考查printf语句的输出格式。printf()函数是格式化输出函数,

般用于向标准输出设备校规定格式输出信息。在编写程序时经常会用到此函数。

printf()函数的调用格式为:printf(“<格式化字符串>",〈参量表〉)其中,格式化字符

串包括两部分内容。一部分是正常字符,这些字符将按原样输出;另一部分是格式

化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个

数一样多,各参数之间用“,”分开,且顺序一一对应,否则将会出现不可意料的错

误。

48、若运行输入:3〈回车,:则以下程序的输出结果是。main(){inta,

b;scanf("%d“,&a);b=(a>=0)?a:-a;printf("b=%d",b);}

标准答案:b=3

知识点解析:条件表达式的基本格式为:“表达式17表达式2:表达式3”;其功

能是:表达式1的值若非0,则计算表达式2的值,且为最终结果;若表达式1的

值为0,则计算表达式3的值,且为最终结果。因为a=3,则a>=0成立,所以

b=a=3«

49、以下程序的运行结果是v#defineMAX(a,b)(a>b?a:b)+lmain()

{inti=6,j=8,k;printf("%d\n”.MAX(ij));)

标准答案:9

知识点解析:本题考查的是条件运算符的应用。带参数的宏定义中定义的MAX函

数的功能是选出a和b中较大的数然后加1;min()函数中显然j比i大,所以输出

的是j加1后的值9。

50下面程序的运行结果是o#inckidemain(){inta,b,c,n;a=2;

b=0;c=l;n=l;while(n<=3){c=c*a;b=b+c;++n;}printf("b=%d”,b);)

标准答案:b=14

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

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

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

51>以下程序的输出结果是o#includemain(){inti=10,j=0;do

{j=j+i;i—;)while(i>5);printf("%d\n"j);)

标准答案:40

知识点解析:分析程序,初始时i=10,j=0,这时do循环中的“j=+i”语句计算结果

为10,“i」后i=9;满足循环条件,继续执行循环,月+i=10+9=19,i-后i=8;满

足循环条件,继续循环,j=j+i=19+8=27,i-后i=7,满足i>5,继续循环,

j=j+i=27+7=34,i—后i=6,继续循环,j=j+i=34+6=40,i—后i=5,此时不能满足条

件i>5,退出循环,因此最后i的值为40。

52、下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例

如,若输入字符串123412132,输入字符人则输出3,请填空。#inckide#include

#defineM81inttim(char*ss»charC{inti=0;if(;;ss++)

if(*ss==Ci++;returni;)main(){chara[M],ch;printf^^hlPleaseentera

string:");gets(a);printf(<fcknPleaseenterachar:");ch=getchar();printfi(ubaThe

numberofthecharis:%d\n",fun(a,ch));}

标准答案:*ss!=€\0,

知识点解析:本题考查的是指针的应用。题目要求求出字符串ss中指定字符的个

数,分析整个程序,空缺处是检验指针ss是否指向了字符串的末尾,如没有,即

执行下面语句,判断指针ss指向的字符是否字符c,若是,i自加1;所以空缺处

填入*ss!=,\(T,作为循环终止的条件。

53、以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。#includemain()

{ima|4||4]={{l,2,6,7),{0,4,2,-8),{1,4,5,2),{2,4,6,8));int

b[4][4]={{-4,0,7,9),{2,-7,7,4),[6,9,0,1),{8,8,6,5)};intij,

c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=;for(i=0;i<4;

i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

标准答案:a[i][j]+b[i][j]

知识点解析:求两个矩阵的和只要将对应元素相加即可。

54、以下程序的输出结果是。main。{char*p[]={"ABC","DEF”,

“GHI”,“JKL”};inti:fbr(i=3;i>=0;i-,i-)prints%cn,*p[i]);}

标准答案:JD

知识点解析:第一次循环,i=3,*p[3]="JKL”,但因为是以“%c”格式输出,只能

输出一个字符,所以只能输出L第二次循环,i=l,*p[l]="DEF”,同样也只能输

出D。

55、以下程序的功能是:从低位开始取出长整型变量S中奇数位上的数,依次构

成一个新数放在t中。高位仍在高位,低位仍在低位。请填空。#includemain()

{longs,t,sl=10;printfC4\nPlcaseenters:^);scanf("%ld",&s);t=s%10;

while(s>0){s=s/100;t=;sl=sl*10;}printf{4tTheresultis:%

ldkn';t);)

标准答案:s%10*sl+t

知识点解析:题日要求从低位开始取出长整型变量sU」奇数位上的数,设S为

7654321,所要去除的为7531。s在每次循环均除以100,因此它的作用是将本次

循环所需要得到的奇数位数放到最末一位,而要获得该数仅需在此后将s对10取

余,si初始值为10,且在每次循环后均乘以10,因此可想到是为了将本次循环所

获得的奇数位数放到已有数的“前面”,即将上一步所得之数乘以si,由于是逐次

获得奇次位数,所以每次还要加上1的原值。

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

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

10分。)

1、计算机系统的组成是。

A、主机、外设

B、运算器、控制器

C、硬件系统和软件系统

D、CPU、内存储器

标准答案:4

知识点解析:暂无解析

2、能直接与CPU交换信息的功能单元是_____o

A、硬盘

B、控制器

C、主存储器

D、运算器

标准答案:4

知识点解析:内存储器又称主存储器,可直接实现与CPU间的信息交换。

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

A、字处理软件

B、系统软件

C、服务性软件

D、操作系统

标准答案:2

知识点解析:暂无解析

4、在计算机系统中,一个字长的二进制位数为o

A、8

B、16

C、32

D、由CPU型号决定

标准答案:8

知识点解析:字长是指微机能直接处理二进制信息的位数,由CPU的类型和型号

决定。

5、算法是求解问题的方法,具有输入、输出、有穷性、确定性和的特性。

A、可行性

B、计算性

C、程序设计性

D、检索性

标准答案:1

知识点解析:操作的实现是用算法来描述的。算法就是解决问题的方法,它是由一

个若干条指令组成的有穷序列,必须满足的5个要素是:有穷性、确定性、输入、

输出和可行性。

6、设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是el、e2、e3、

e4、e5,则出栈元素的顺序不可能是______。

A、el、e2、e3、c4、e5

B、e5、e4>e3、e2、el

C^e2、e4>e3^e5、el

D、e3、e4、el、e2、e5

标准答案:8

知识点解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是

“先进后出,本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元

素为e3,由于入栈顺序是el、e2、e3,那么e3出栈后,栈中元素必定有el和

e2,因为el先入栈,故el应在e2后出栈,所以选项D是不可能的出栈顺序。

7、以下数据结构中不属于线性数据结构的是o

A、队列

B、线性表

C、二叉树

D、栈

标准答案:4

知识点解析:暂无解析

8、编码是指o

A、总体设计到详细设计的过程

B、用0、1代码改写详细设计的结果

C、用编程语言改写详细设计的结果

D、上述都不对

标准答案:4

知识点解析:所谓“编码”,是指把软件设计的结果用计算机系统可以理解的形式表

示出来。用于编码的程序设计语言可以是计算机系统能够直接理解的机器语言,也

可以是必须通过汇编、编译(或解释)才能为计算机系统所理解的汇编语言或高级语

言。

9、软件生命周期一般包括:软件计划期、开发期和软件运行期。因此,在下述项

目中,不是软件开发期的内容。

A、需求分析

B、结构设计

C、程序编制

D、性能优化

标准答案:8

知识点解析:瀑布模型石软件生命周期划分为3个时期,时期又划分为若干阶段:

①软件定义期一问题定义和可行性研究;②软件开发期——需求分析、总体设

计、详细设计、编码和测试;③运行及维护阶段——维护。所以,性能优化不是

软件开发期所应包含的内容。

10、数据的独立性是指。

A、数据库的数据相互独立

B、DBMS和DB相互独立

C、用户应用程序与数据库的数据相互独立

D、用户应用程序与DBMS相互独立

标准答案:4

知识点解析:修改数据库的物理结构或逻辑结构时,通过两级映像,可以使得应用

程序不必修改,保证数据的独立性。数据的独立性包括物理独立性和逻辑独立性。

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

分。)

11、若x为in【类型变量,则执行以下程序段后的x值是_____。x=6;x+=x-=x*x;

A、36

B、-60

C、60

D、-24

标准答案:2

知识点解析:暂无解析

12、设x,y均是int类型变量,则以下不正确的函数调用为o

A、getchar();

B、putchar(,\108,);

C、scanf("%d%*2d%d",&x,&y);

D、putchar('\'');

标准答案:2

知识点露析:八进制中的基本数为0〜7,不可能出现8。

13、以卜程序的输出结果是_____。main。{charcl='6',c2='O';

printf(,,%d,%d,%d\n,\cI,c2,c1-c2);}

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

B、54,48,6

C、6,0,7

D、6»0,6

标准答案:2

知识点解析:本题printf语句输出字符的ASCH码,直(整型)。

14>以下程序的输出结果是______o#include<stdio.h>main(){inia,b,d=241;

a=d/100%9;b=(-1)&&(-!);printf(H%d,%d",a,b);}

A、6,1

B、2,1

C>6,0

D、2,0

标准答案:2

知识点解析:在表达式的值作为逻辑值时,非。值一律为1,0值才为。。

15、若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为

ANfloat

B>int

C、char

D、double

标准答案:8

知识点解析:暂无解析

16、在C语言中提供的合法的关键词是o

A、swicth

B、cher

C、Case

D^default

标准答案:8

知识点解析:选项A应为多分支语句中的switch,选项B应为定义字符类型的

char,选项C应为多分支语句中的分支关键词case(小写)。因此,选项A、B、C都

有书写上的错误,只有选项D正确。

17、下列变量说明语句中,正确的是o

A、chara=b=c;

B、chara;b;c;

C、intx;z;

D、intx,z;

标准答案:8

知识点解析:同时说明多个变量为同一类型时,变量之间应用逗号分隔。故D为

正确选项。

18、以下程序的输出结果是ointi=010,j=10;pnntf(H%d,%d\nM,++ij-);

A、11,10

B、9,10

C、10,10

D、10,9

标准答案:2

知识点解析:在C语言中,以0开头表示八进制数,所以本题程序中010表示八

进制数10,相当于十进制数8。因此i的初值为8,经++i后,i的值为9。变量j

经j-后,变为10,由于自减运算符在j的右侧,所以是先输出j的值10后,再自

减lo

19、标有/$$$/的语句的执行次数是_____ointy,i;for(i=0;i<20;i++){if(i%2==0)

continue;y+=i;/$$$/;)

A、20

R、19

C、10

D、9

标准答案:4

知识点解析:程序中标有/$$$/的语句y+二i在for循环中,由于该语句前面的条件

语句使循环变量i在对2求余为0时就结束本次循环,直接跳过标有/$$$/的语句,

因此该语句执行了10次。

20、以下程序的输出结果是_____omain(){intm=5;if(m++>5)printf(',%d\n",m);

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

A、7

B、6

C、5

D、4

标准答案:2

知识点解析:注意自增和自减运算符在变量的左右侧的不同用法。本题条件表达式

m++>5,即5>5不成立,此时m=6,执行else后面的语句,输出6后再m-使得

m又等于5了。

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

分。)

21、要正确定义并初始叱一个数组a,它含有5个元素,则正确的语句是_____o

A>inta[5]=(0,0,0,0,0);

B、inta[5]={);

C>inta[]=(0,0,0,0,0);

D、inta[]={5*0};

标准答案:4

知识点解析:A项是错误的,赋值时用的是花括号而不是圆括号。B项错在不能初

始化时在花括号内为空。D项错在不可以用表达式对数组一一赋值。C项虽然没有

直接定义数组的大小,但是初始化时只赋了5个元素的值,系统会自动定义数组的

大小为5,这种形式是正确的。

22、若二维数组a有m列,且设a[0H。]位于数组的第一个位置上,则计算任意元

素在数组中位置的公式为。

A、i*m+j

B、j*m+i

C、

D^i*m+j+l

标准答案:8

知识点3析:的位置应该是第i+1行,第j+1列,那么它的位置是6+1-

l)*m+j+l=i*m+j+lo

23、以下程序的输出结果是omain(){charch|2][5]={"6937";(8254"},*p[2];

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

s=10*s+p[i][j]->\0,;printf("%d\n”,s);}

A、69825

B、59713

C、6385

D、693825

标准答案:4

知识点解析:p是指向字符的指针数组。执行第1个循环后,p[0]指向字符数组ch

的第1行“6937",p[I]指向字符数组ch的第2行“8254”,那么p[0]⑼其实就对应着

ch[O][O],表示第1行的第1个元素“6”。第2个循环中,外层i循环是控制指针数

组p的,内层j循环则是对每一行内的各个元素进行处理,特别注意循环变量j的

改变”j+=2"。这样就可以看出是对ch[O][O]、ch⑼⑵、ch[l]⑼和ch[l]⑵进行处

理。

24、以下程序的输出结果是_____。main(){char*s="121";intk=O,a=O,b=O;do

{k++;if(k%2==0){a=a+s[k]-,\0,;continue;}b=b+s[k]-'\O';a=a+s[k]-'\O';}while(s[k+l]);

printf("k=%da=%db=%d\n",k,a,b);}

A、k=3a=98b=49

B、k=3a=99b=50

C、k=2a=99b=50

D、k=2a=98b=49

标准答案:4

知识点解析:第1次循环中,k=l,不执行if分支,s[k]=2,因此b=2,a=2因

s[k+l]=T进入第2次循环,k=2,执行if分支,s[k]=F,使a=3,进而提前结束本

次循环,s[k+l]=t\O\则退出循环,所以k=2,a=3,b=2o

25、执行以下程序后输出的结果是_____。main(){inty=10;do{y-;)while(--y);

printf("%d\n",y-);}

A、-1

B、I

C、8

D、0

标准答案:8

知识点解析:执行第1次循环体,y-使得y=9,然后y减1后判断条件为真,此时

y=8o继续执行4次循环,直到y=0时条件为假退出循环,然后输出产0后再减

lo因此输出的结果为0。

26、以下程序的运行结果是o#inckide<stdio.h>main。(int

a[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=*(p+5);

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

A、运行后报错

B、66

C、612

D、55

标准答案:1

知识之解析:用指针变量p+5对指针变量q进行赋值的正确方法为p=q+5o

27、下面程序的输出结果是o#include<stdio.h>main(){char

ch[7]={"12ab56"};inti,s=0;for(i=0;ch[i]>=,0,&&ch[i]<=,9,;i+=2)s=10*s+ch[i]-,0,;

prinif(',%d\n",s);}

A、1

B、1256

C、12ab56

D、i256

标准答案:1

知识点解析:for语句中的条件表达式决定了循环体只执行一次。因此s=0*10+l,

于是输出结果为1。

28、设有以下程序段:inta[5]={0},*p.*q;p=a:q=a:则合法的运算是。

A^p+q

B>p-q

C、p*q

D^p%q

标准答案:2

知识点解析:指向同一字符串的指针可以、也只能进行减运算,返回一个整型数。

29、函数fun的返回值是ofun(char*a,char*b){intnum=O,n=O;

while(*(a+num)!=,\O,)num++;while(b[n]){*(a+num)=b[n];num-H-;n-H-;}return

num;)

A、字符串a的长度

B、字符串b的长度

C、字符串a和b的长度之差

D、字符串a和b的长度之和

标准答案:4

知识点解析•:本题首先通过第一个while循环计算字符串a的长度,再通过第二个

while循环,将字符串a和b相连,最后返回连接后的总长度。

30、以下程序的输出结果是omain(){intx=10,y=10,i;for(i=0;x>8;y=++i)

printf("%d%d",x-,y);}

A、10192

B、9876

C、10990

D、101091

标准答案:8

知识点解析:第1次循环,i=0,x=10,y=10,先输出x=10,y

温馨提示

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

评论

0/150

提交评论