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

下载本文档

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

文档简介

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

卷第1套

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

1、深度为5的完全二叉树的结点数不可能是()。

A、15

B、16

C、17

D、18

标准答案:A

知识点解析:对于满二叉树,叶子结点的数目等于2n—ln为深度,这里就是

24=16O

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

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

A、课号,成绩

B、学号,成绩

C、学号,课号

D、学号,姓名,成绩

标准答案:C

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

关键字应该与前两个表能够直接联系且能唯一定义元组,学号和课号的组合满足条

件。

3、若有定义:inta,b,c;,则以下选项中的赋值语句正确的是()。

A^a=(b==c)=1;

(a=b)=c=1:

C、a=(b=c)+1;

D^a+b=c;

标准答案:C

知识点解析:赋值运算符的左侧必须为变量而不能是表达式,所以答案选C。

4、关于"while(条件表达式)循环体”,以下叙述中正确的是()。

A、循环体的执行次数总是比条件表达式的执行次数多一次

B、条件表达式的执行次数总是比循环体的执行次数多一次

C、条件表达式的执行次数与循环体的执行次数一样

D、条件表达式的执行次数与循环体的执行次数无关

标准答案:B

知识点解析:考查while循环的执行过程。先计算括号内表达式的值,若不为。则

执行循环体语句,若为0则跳出while循环,所以条件表达式的执行次数总是比循

环体的执行次数多一次,答案选B。

5、以下语句中存在语法错误的是()。

A、charss|6]|20];ss[l]="right?";

B、charss[][20]={wright?M};

w/,

CNchar*ssl6J;ss[l]=right?;

D、char*ss[]={"right?"};

标准答案:A

知识点解析:A项错误,数组定义后,不能对数组整体赋值,ss是二维数组,ss[l]

是一维字符数组,即字符串,字符串赋值可以使用飞trcpy(网1],"right");”的形

式,但不能使用赋值的形式。B、D两项正确,在定义时对数组同时进行初始化;

C项正确,将常量字符串在内存中的首地址赋给指针数组的一个元素。

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

A,如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息

B、即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以

不同

C、设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;

D、指针变量之间不能用关系运算符进行比较

标准答案:A

知识点解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存

储单元,选项A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B

错。语句p=(^Dp=NULL是一样的,都是把一个空指针赋给指针变量p,故选项C

错.指针之间能进行关系运算.比较的是地址值的大小,选项D错.答案选Ac

7、有以下程序:#include<stdio.h>voidfun(intn){staticintx[3]={1,2,3);

intk;for(k=0;k<3;k++)x[k]+=x[k]—n;for(k=0;k<3;k++)printf("%

d,",x[k]);}main()[fun(O);fun(l);)程序运行后的输出结果是()。

A、1,2,3,0,2,4,

B、2,4,6,3,7,11,

C、2,4,6,1,3,5,

D、1,2,3,4,5,6,

标准答案:B

知识点解析:第一次调用fun()函数,此时n=0,数组x是静态的,因此,只在第

一次时初始化,由x[k]+=x[k]—n计算可知,x[]={2,4,6),第二次调用fun。,

此时n=l,x[]={2,4,6},经计算得x口二{3,7,11),故输出结果为2,4,6.

3,7,11,

8、对长度为10的线性表进行冒泡排序,最坏情况卜.需要比较的次数为()。

A、9

B、10

C、45

D、90

标准答案:C

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

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

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

9、有以下定义:structdata{inti;charc;doubled;}x;以下叙述中错误的是

()。

A、x的内存地址与x.i的内存地址相同

B、siructdata是一个类型名

C、初始化时,可以对x的所有成员同时赋初值

D、成员i、c和d占用的是同一个存储空间

标准答案:D

知识点解析:i、c、d是结构体变量x中的三个不同的成员,占用不同的存储空

间。

10、C语言编译程序的功能是()。

A、执行一个C语言编写的源程序

B、把C源程序翻译成ASCH码

C、把C源程序翻译成机器代码

D、把C源程序与系统提供的库函数组合成一个二进制执行文件

标准答案:C

知识点解析:编译程序的功能是将“高级语言”翻译为“机器语言每条C语言语

句.经过编译最终都将转换成二进制的机器指令C

11、有以卜程序:#include<stdio.h>#defineM5#definef(x,y)x*y+Mmain()

{intk;k=f(2,3)*f(2,3);printf("%d\n",k);}程序的运行结果是()°

A、22

B、41

C、100

D、121

标准答案:B

知识点解析:宏定义中的函数在调用时只做简单的替换功能。所以

k=2*3+5*2*3+5=4lo

12、设变量x为longin(型,并已正确赋值,以下表达式中能将x的百位上的数字

提取出的是()。

A、x/10%100

B、x%10/100

C、x%100/10

D、x/100%10

标准答案:D

知识点解析:x/100的个位数是x的百位数上的数字,所以再进行%10运算即可

得到该数字。

13、有以F程序:#include<stdio.h>main(){intk=10:printf("%4d,%o,%x

\n”,k,k,k);}程序的运行结果是()。(□代表一个空格。)

A、10,12,a

B、onlO,012,a

C>010,12,a

D、DDIO,12,a

标准答案:D

知识点解析:%4d表示先输出占4个字符的十进制,10己占2个字符,故先输出

2个空格,然后输出10;%0表示输出八进制,所以输出10的八进制为12;%x

表示输出十六进制,即a。

14,下列数据结构中,属于非线性结构的是()。

A、循环队列

B、带链队列

C、二义树

D、带链栈

标准答案:C

知识点解析:线性结构的特点:①有且只有一个根结点:②每一个结点最多有一

个前驱,也最多有一个后继。不满足线性结构条件的称为非线性结构,二叉树的非

叶子结点最多可以用两个后继结点,属于非线性结构。

15、程序测试的目的是()。

A、为被测程序设计正确的测试用例

B、发现并改正程序中的错误

C、发现程序中的错误

D、改正程序中的错误

标准答案:C

知识点解析:程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目

的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为

发现错误而执行程序的过程,而不是改正错误。故正确答案为C。

16、关于C语言标识符,以下叙述中错误的是()。

A、标识符可全部由数字组成

B、标识符可全部由下面线组成

C、标识符可全部由小写字母组成

D、标识符可全部由大写字母组成

标准答案:A

知识点解析:C语言标识符只能由字母、数字、下画线构成,且只能以字母、下画

线开头,故选项A不正确。

17、有以下程序:#include<stdio.h>main(){inti,j;for(i=l;i<4;i++)

{for(j=i;j<4;j++)printf("%d*%d=%d”,i,J,i*j);printf(〃\n〃);}}程序运

行后的输出结果是()。

A、1*1=11*2=21*3=32*1=22*2=43*1=3

B、1*1=11*2=21*3=32*2=42*3=63*3=9

C、1*1=11*2=22*2=41*3=32*3=63*3=9

D、1*1=12*1=22*2=43*1=33*2=63*3=9

标准答案:B

知识点解析:考查for循环及其嵌套。第一个for循环用来控制输出行数,第二个

for循环用来控制每行输出的表达式个数。当i=l,j=l时,第一行输出3个表达

式:1*1=11东2=21*3=3当i=2,j=2时;第二行输出2个表达式:2*2=42*3=6当

i=3,j=3时,第三行输出1个表达式:3*3=9当i=4时,第一个for循环中4V4条

件不成立,循环结束,整个程序执行完毕。因此答案选B。

18、字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用

的是()。

A、if(strcmp(a,b)==0)

B、if(strcpy(a,b))

C、if(a==b)

D、if(a=b)

标准答案:A

知识点解析:考查字符串比较函数strcmp的功能。

19、要求定义一个具有6个元素的int型一维数组,以下选项中错误的是()。

A、intN=6,a[N];

B、inta[2*3]={0};

C、#defineN3inta[N+N]:

D.inta[]={l,2,3,4,5,6};

标准答案:A

知识点解析:数组定义中长度不能为变量。

20>有以卜程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x

main(){ima=l,b=2;printfT%4.lf\n%S(a+b));}程序运行后的输出结果是

()。

A、31.5

B、7.5

C、程序有错无输出结果

D、14.0

标准答案:C

知识点解析:宏定义不是C语句,结尾不加“;”,所以该程序会出现编译错误,

答案选C。

21、通常软件测试实施的步骤是()。

A、集成测试、单元测试、确认测试

B、单元测试、集成测试、确认测试

C、确认测试、集成测试、单元测试

D、单元测试、确认测试、集成测试

标准答案:B

知识点解析:软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测

试(确认测试)和系统测试。故答案应该选B。

22、一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教师和课程间

的联系是()。

A、1:1联系

B、1:m联系

C,m:1联系

D、m:n联系

标准答案:D

知识点解析:因为一名教师可讲授多门课程,而一门课程乂能由多名教师讲授,所

以教师和课程之间是多对多的关系,可以表示为m:n,选择D.

23、以下各项中,属于合法的转义字符是()。

A、\x4「

B、'\0x41'

C、\X4「

D、\0X4「

标准答案:A

知识点解析:\xhh,表示1到2位十六进制所代表的字符,故答案为A。

24若有以下程序:#include<stdio.h>main(){intc;c=13I15:printf("%d

\n%c);}则程序的输出结果是()。

A、13

B、15

C、18

D、5

标准答案:B

知识点解析:本题考查位运算中按位或运算符,或运算只要两个比较的位中有一个

为1,其结果是1,否则结果为0。13用二进制表示为00001101,15用二进制表示

为00001111,或运算后结果为00001111,即15,故B选项正确。

25、有以下程序:#include<stdio.h>main(){inta=3;do{printf("%d,",a—

=2);)while(!(——a));printfC\n,f);)程序运行后的输出结果是()。

A、1,—3,

B、h—2,

C、3,0,

D、1,0,

标准答案:B

知识点解析:本题重点考查do…while语句,该循环语句的特点是,先执行循环中

的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循

环。因此,do...while循环至少要执行一次循环语句。变量a赋初值为3,每循环

一次需执行语句a—=2一次,同时循环条件使变量a自减1,所以第一次循环后变

量a变为1,第2次循环后变量a变为一2。故B选项正确。

26>有以卜程序:#include<stdio.h>intadd(inta,intb){retum(a+b);)main()

(intk,(*f)(),a=5,b=10:f=add:}则以下函数调用语句中错误的是()。

A、k=*f(a>b);

k=add(a,b);

C、k=(*f)(a,b):

D、k=f(a,b);

标准答案:A

知识点解析:im(*f)()为一个函数指针变量,返回值为整型,f为一个指针变量,指

向一个已经定义的函数,在调用该函数的时候需要把参数写在相应的小括号内,即

(*指针名)(参数或参数列表),所以选项A调用错误,答案选A。

27、有以下程序:#include<stdio.h>voidmy(){charch:ch=getchar();

if(ch!=,c/)my();putchar(ch);)main(){my();}执行时,输入abcV回车》,则

输出结果是()。

A、abc

B、ababc

C、bca

D、cba

标准答案:D

知识点解析:my()递归,直到输入了c开始返回。究归使用的是栈的思想,因此最

后输入进去的最先返回并输出。所以结果是cha。

28、下列选项中属于面向对象设计方法主要特征的是()。

A、继承

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:面向对象没计方法的基本概念有对象、类和实例、消息、继承与多态

性,所以答案为A。

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

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,耍调用的函数必须放在main。函数中定义

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

D、C语言程序中的main。函数必须放在程序的开始部分

标准答案:C

知识点解析:C程序总是从main。函数开始执行,A选项错误,C选项正确;要调

用的函数必须放在main。函数中是函数嵌套,所有程序执行是从main。函数开始

的,被调用的函数在调用之前要进行声明,B选项错误;调用的函数可以放在

main。函数之前,D选项错误。故正确答案为C。

30、有以卜.程序段:inlm=33,n=66;m=mAn;n=nAm;m=mAn;执行上述语句

后,m和n的值分别是()。

A、m=66,n=33

B、m=33,n=66

C,m=66,n=66

D、m=33.n=33

标准答案:A

知识点解析:m=nin;n=Mm:m=mAn;语句实现了m和n的交换。故答案为

Ao

31有以下程序:#include<stdio.h>main(){inti,array[6]={1,5,0,4);

for(i=0;i<5;i++)printf(//%d,\array[i]);printf(w\nf,);}程序运行后的输出结

果是()。

A、04040

B、15040

C、15540

D、12120

标准答案:B

知识点解析:本题主要考查一维数组的输出。由于数组中有6个元素,但初始化数

组的时候只给出4个元素,所以array[5]=0,array[6]=0,前面几位元素依次输出,

不够位数补0,所以选项B正确。

32、有以下程序段:inlx,i;for(i=1;iV=100;i++){scanR"%d",&x);if(x<

O)continue;printf("%4d\n",x);}下列各项中,针对上述程序段的描述正确的

是()。

A、最多可以输出100个非负整数

B、当x<0时结束整个循环

C、当x>=0时没有任何输出

D、prinlf函数调用语句总是被跳过

标准答案:A

知识点解析:continue语句的功能是结束本次循环,而不是终止整个循环的执行,

所以B选项错误;当x>=0时,程序执行printf(〃%4dW,x);语句,所以C、D

选项错误。因为for循环的循环次数i是从1到100,如果先后输入100个非负整

数,则这些数将全部输出。

33、有以下程序:#include<stdio.h>main(){inta=2»c=5;printR"a=%%d,

b=%%d\n",a,c);}程序的输出结果是()。

A、a=2,b=5

a=%2,b=%5

C>a=%d,b=%d

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

标准答案:C

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

符,而不是根据格式控制符“%d”的含义来输出,故C选项正确

34、设循环队列的存储空间为Q(l:35),初始状态为front=rear=35。现经过系列

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

A、20

B、0或35

C、15

D、16

标准答案:B

知识点解析:Q(l:35)则队列的存储空间为35;队空时:front=rear(初始化时:

front=rear);队满时:(rear+l)%n==front,n为队列长度(所用数组大小)。因此当执

行一系列的出队与入队操作,from=rear,则队列要么为空,要么为满。

35、数据字典(DD)所定义的对象都包含于()。

A、软件结构图

B、方框图

C、数据流图(DFD图)

D、程序流程图

标准答案:C

知识点解析:数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存

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

出详细的说明。

36、以下选项中表示一个合法的常量的是(说明:符号□表示空格)()。

A、9口9口9

B、OXab

C、123E0.2

D、2.7e

标准答案:B

知识点解析:当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面

数要为整数。

37、若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的

switch语句是()。

A^switch(a+9){casecl:y=a-b;casec2:y=a+b;)

B、switcha*b{case10:x=a+b:default:y=a—b:}

C、switch(a+b){easel:case3:y=a+b;break;cascO:casc4:y=a——b;

D、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b:

break;}

标准答案:D

知识点解析:选项A,当cl和c2相等时,不成立;选项B,a*b要用括号括起

来;选项C,case与后面的数字用空格隔开。

38、以下选项中,能正确进行字符串赋值的是()。

A、char*s="ABCDE";

B,chars[5]={'A','B','C',,D',

C、chars[4][5]={"ABCDE"};

D、char*s;get(s);

标准答案:A

知识点解析:本题考查字符数组的初始化。B选项中赋值号右侧是赋值给一个字符

串数组,而左边是一个字符数组,所以错误;C选项中字符串包含6个字符,所以

不能赋值给左边只能存放5个字符的字符串数组中。D选项gets函数中参数需要指

定长度故A选项正确。

39有以下程序段:inifur(char*s)char*p;p=s;if(*s==O)return0;while(*+

+p);return(p—s);}该段程序是用来()。

A、计算字符串所占字节数

B、实现字符串的赋值

C、计算字符串的长度

D、将字符串逆序存放

标准答案:C

知识点解析:在fun()函数中定义了指针p,首先把s地址赋给p,再通过while函

数移动指针P,当p指针指向单元为0时,退出while循环,返回此时p和s地址

之差,即字符串长度。

40、以下针对全局变量的叙述中错误的是()。

A、用extern说明符可以限制全局变量的作用域

B、全局变量是在函数外部任意位置上定义的变量

C、全局变量的作用域是从定义位置开始至源文件结束

D、全局变量的生存期贯穿于整个程序的运行期间

标准答案:A

知识点解析:在不同编译单位内用extern说明符来扩展全局变量的作用域,extern

可以将全局变量作用域^展到其他文件,而不是限制全局变量的作用域,故选A。

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

卷第2套

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

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

A、循环队列

B、带链队列

C、二叉树

D、带链栈

标准答案:C

知识点解析:树是简单的非线性结构,所以二叉树作为树的一种,也是一种非线性

结构。

2、若二维数组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个元素,数组第二维的下标是i,说明它前面还有j歹U,有j个元素,所以共有

i*m+j个元素。

3、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属

于应用软件的是()。

A、编译程序

B、操作系统

C、教务管理系统

D、汇编程序

标准答案:C

知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有C选项教务

管理系统才是应用软件。

4、以下选项中关于C语言常量的叙述错误的是

A、常量分为整型常量、实型常量、字符常量和字符串常量

B、经常被使用的变量可以定义成常量

C、常量可分为数值型常量和非数值型常量

D、所谓常量,是指在程序运行过程中,其值不能被改变的量

标准答案:B

知识点解析:常量指在程序运行过程中,具值不能被改变的量。常量分为整型常量

(即整常数)、实型常量、字符型常量和字符串常量。常量也可以按数据类型分为为

数据常量和非数据常量。变量是指在程序运行过程中,其值能被改变的量。

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

点数为

A、219

B、221

C、229

D、231

标准答案:A

知识点解析:在二叉树中,叶子结点个数为no,则度为2的结点数n2=no-l。本题

中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点

数十度为1的结点数十度为2的结点数=70+80+69=219。

6、与十进制数200等值的十六进制数为

A、A8

B、A4

C、C8

D、C4

标准答案:C

知识点解析:本题考察了进制转换,十进制的数转换为十六进制规则:整数部分除

以16取余数,将余数倒过来排列。

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

A、在带链队列中,队头指针和队尾指针都是在动态变化的

B、在带链栈中,栈顶指针和栈底指针都是在动态变化的

C、在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的

D、以上说法均不对

标准答案:B

知识点解析:在栈结构中,插入和删除操作都是在栈顶进行操作,相对应的在带链

栈中,栈顶指针是在动态变化的,但栈底指针是不变的,所以选项B)说法错误。

8、下面属于白盒测试方法的是()。

A、等价类划分法

B、判定一条件覆盖

C、因果图法

D、错误推测法(猜错法)

标准答案:B

知识点解析:白盒测试法主要有逻辑覆盖、基本路径测试等。其中,逻辑覆盖又包

括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖。黑盒测试方法主

要有等价类划分法、边界值分析法、错误推测法和因果图等。

9、软件详细设计产生的图如下,该图是

A、N・S图

B、PAD图

C、程序流程图

D、E-R图

标准答案:C

知识点解析:本题考查程序流程图的概念,流程图直观地描述了程序的具体步骤。

10、软件需求规格说明书的作用不包括()。

A、软件验收的依据

B、用户与开发人员对软件要做什么的共同理解

C、软件设计的依据

D、软件可行性研究的依据

标准答案:D

知识点解析:软件需求规格说明书的作用为:便于用户、开发人员进行理解和交

流;反映出用户问题的结构,可以作为软件开发工作的基础和依据;作为确认测试

和验收的依据。所以答案选择D。

11、下列选项中不属于面向对象程序设计特征的是

A、继承性

B、多态性

C、类比性

D、封装性

标准答案:c

知识点解析:面向对象程序设计的三个主耍特征是:封装性、继承性和多态性。封

装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具

体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定

义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导

致完全不同的行动,该现象称为多态性。

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

A、用户若需要调用标准库函数,调用前必须重新定义

B、用户可以重新定义标准库函数,但若重新定义,该函数将失去原有意义

C、用户系统根本不允许用户重新定义库函数

D、用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到

用户源文件中,系统会自动寻找该文件

标准答案:D

知识点解析:无论是标准库函数,还是别的函数,都属于函数的范畴,都允许用户

重新定义和使用,使用的时候:include命令必须以“#”号开头,文件名用一对双引

号或一对尖括号括起来,系统提供的头文件是以.h作为文件后缀。

13、下面不属于软件设计原则的是

A、抽象

B、模块化

C、自底向上

D、信息隐藏

标准答案:c

知识点露析:软件设计的基木原则包括抽象、信息隐藏、模块化、局部化、确定

性、一致性、完备性和可验证性。

14、C语言不能使用的数制是()。

A、八进制

B、十进制

C、二进制

D、十六进制

标准答案:C

知识点解析:在C语言中的数值可以用十进制、八进制和十六进制来表示,但不

用二进制来表不。

15、有以下程序:#include<stdio.h>main(){inta=0,b=0»c=0,d=0;

printf("%d,%d,%d,%d\nHa,b,c,d);}程序的运行结果是Q。

A、1,1,2,0

B、0,0,0,3

C、编译有错

D、0,1,2,0

标准答案:C

知识点解析:本题中if(a=l)b=l;与eked=3;之间多了语句c=2;,所以会出现

else语句的位置错误的编译失败提示。

16、卜.面不属于结构化程序设计风格的是

A、程序结构良好

B、程序的易读性

C、不滥用Goto语句

D、程序的执行效率

标准答案:D

知识点解析:结构化程序设计(slmciuredprogramming)是进行以模块功能和处理过

程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子

集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。

17、十进制整数设为整数类I,则下面属于类I的实例的是

A、-518

B、0.518

C、518E-2

D、.518

标准答案:A

知识点解析:整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整

数统称为自然数。-1、-2、-3.........-n、…(n为非零自然数)为负整数。则正整数、

零与负整数构成整数系。整数不包括小数、分数。本题中,选项A是正确的,选

项B是小数,选项C是科学计数,也是小数,选项D是小数。

18、以下关于结构化程序设计的叙述中正确的是

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

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

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

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

标准答案:D

知识点解析:C语言是结构化程序设计语言.顺序结构、选择结构、循环结构是结

构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。

但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提倡结构

化设计以来,got。就成了有争议的语句。首先,由于got。语句可以灵活跳转,如

果不加限制,它的确会破坏结构化设计风格。其次,goto语句经常带来错误或隐

患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。Got。语

句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结

构构成的程序几乎能解决大部分问题。

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

测试

A、

设计

B、

可行

C实现

D、

标准答案:c

知识点器析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退

役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设

计、详细设计和实现属于开发阶段。

20、在一个C源程序文件中所定义的全局变量,其作用域为()。

A、由具体定义位置和extern说明来决定范围

B、所在程序的全部范围

C、所在函数的全部范围

D、所在文件的全部范围

标准答案:A

知识点。析:全局变量的作用域是从声明处到文件的结束,所以选择A选项。

21、下面不能作为软件需求分析工具的是

A、PAD图

B、数据字典(DD)

C、数据流程图(DFD图)

D、判定树

标准答案:A

知识点解析:结构化分析方法的常用工具:数据流图(DFD)、数据字典

(DD)、判定表、判定树。常用的过程设计工具如下所述:图形工具(程序流程

图、N-S图、PAD图、HIPO)、表格工具(判定表)、语言工具(PDL)。所以

选项A正确。

22、有以下程序#include<stdio.h>intflintx,inly){retum((y-x产x);}main()

(inta=3,b=4,c=5,d:d=flfla,b),f(a,c));printf(''%d\n'',d):}程序运行后

的输出结果是

A、10

B、8

C、9

D、7

标准答案:C

知识点解析:本题考查函数的嵌套调用。首先计算f(a,b)与f(a,C,f(a,b)=(h

a)*a=3,f(a,C=(c.a)*a=6,然后计算f(3,6)=(6-3)*3=9o

23、以下选项中合法的常量是

A、2.7e

B、999

C、123E0.2

D、OXab

标准答案:D

知识点解析:Oxab是十六进制表示的常量。

24、若有以卜程序#includevoidsp(inl*a){intb=2:*a=*a*2:prinlf("%d,",

*a);a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3:sp(&k);

printfr%d\n,k);}则程序的输出结果是

A、6,4,6

B、6,4,3

C>6,12,12

D、9,4,9

标准答案:A

知识点解析:本题考查了指针作为函数的参数,可以接收实参变量的地址,改变实

参的值。主函数调用sp(&k),执行sp函数a指向向k,执行语句*a=*a*2后a指向

空间的值k的值为6,改变a的指向以后,此时a指向b,则执行*a=*a*2以后,a

指向空间b的值为4。调用结束返回主函数,输出k的值为6。

25、若有定义inta;floatb;doublec;程序运行时输入:345能把值3输入给变

量a、4输入给变量b、5输入给变量c的语句是

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

B、scanf(u%d%f%ir,&a,&b,&c);

C、scanf(n%d%f%f,&a,&b,&c);

D、scanf("%lf%lf%ir,&a,&b,&c);

标准答案:B

知识点露析:scanf函数进行输入的时候,默认的输入间隔为空格、跳格和回车,

变量a、b和c均为数值型数据,输入时间隔为空格,因此scanf函数的第一个表示

格式的参数之间不用加入分隔符,而要输入double型数据,格式控制必须用%

If(或%怕)。否则,数据不能正确输入。

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

A、不确定的值

R、一个整数

C、形参p中存放的值

D、形参p的地址值

标准答案:B

知识点解析:由函数inifun(int*p){retum*p}的定义可知,返回值为整型指针变量p

所指向的数据。

27、若有以下程序intflinta口,intn)main(){if(n>l)intan={8,2,9,1,3,6,

4,7,5};{int]|t;t=f(a,n-1);printf(u%d\n",fla,9));returnt>a|n-l|?t:

a[n-l];))elsereturna[D];}则程序的输出结果是

A、9

B、1

C、8

D、5

标准答案:A

知识点解析:主函数中调用f(a,9),递归函数的调用过程如下:f(a,9)-f(a,

8)->f(a,7)Tf(a,6)->f(a,5)->f(a,4)->f(a»3)->f(a,2)->f(a,1),f(a,1)得到返

回值为a[0],值为8,递归过程开始回归,回归过程描述如下:8>a[l],返回

8-8>a[2]不成立,返回a|2]的值为9……因此函数f的主要功能为计算数组中的

最大值。主函数中输出最失值为9。

28、在函数调用过程中,如果函数如funA调用函数funB,函数funB又调用了函

数如funA,则

A、称为函数的直接递归调用

B、称为函数的间接递归调用

C、称为函数的循环调用

D、C语言中不允许这样的递归调用

标准答案:B

知识点解析:本题考查递归的概念,C语言中函数可以直接或间接调用自身,称为

递归调用。本题中funA调用funB,然后funB又谎用funA,即funA间接调用了

自身。

29、程序流程图中带有箭头的线段表示的是()。

A、图兀关系

B、数据流

C、控制流

D、调用关系

标准答案:C

知识点解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用

标有名字的箭头表示控制流。所以选择C)。

30、有以下程序#includemain(){intx=l,y=0,a=0,b=0;switch(x){caseI:switch

(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;)

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

A、a=l,b=0

B、a=1,b=1

C^a=2,b=l

D、a=2,b=2

标准答案:C

知识点解析:本题重点考察switch语句,switch语句中case分支后面如果没有

break,那么就会顺序执行下面的case,直到遇到break跳出。由于变量a和变量b

均赋初值为0,当程序执行完语句case。:a++;break;后,a的值为1,继续执行语句

case2:a++;b++;break;a的值为2,b的值为1。因此C选项止确。

31、在面向对象方法中,不属于“对象”基本特点的是()o

A、一致性

B、分类性

C、多态性

D、标识唯一性

标准答案:A

知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、

模块独立性好。所以选择A)。

32、下列程序中函数f的功能是:当flag为I时,进行由小到大排序;当flag为0

时,进行由大到小排序voidflintb[],inin,iniflag)main。{inti,j,I;{ini

a[10]={5,4,3,2,1,6,7,8,9,10),i;for(i=0;ib|j]:b[i]

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

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

C>5,4,3,2,I,6,7,8,9,10,

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

标准答案:B

知识点解析:主函数中进行了两次f函数的调用。第一次传递给形参数组b的地址

为元素a[2]的地址,n接收数据位5,因此数组b中元素为3,2,1,6,7,此时

nag的值为0,进行由大到小排序,而数组b和实参数组a共用一段存储空间,第

一次调用结束以后,数组a的值为5,4,7,6,3,2,1,8,9,10。第二次调用

f函数,形参数组接收实参数组a的首地址,取5个元素,由小到大排序,调用结

束以后,数组a的值为3,4,5,6,7,2,1,8,9,10。

33、下面选项中的程序段,没有编译错误的是

A、char*sp,s[10];sp="Hello";

B、char*sp,s[10];s="Hello";

C>charstr1[10]="computer',,str2[10]:str2=strl;

D、charmark[];mark="PROGRAM";

标准答案:A

知识点解析:选项R中数组名为常量,不能赋值,选项C字符数组之间无法完成

赋值操作,选项D和选项B相同,无法对数组进行赋值。

34、以下能正确定义二维数组是

A.inta[][3];

inta[][3]={2*3);

C、inta[][3]={);

D>inta[2][3]={{l),(2},{3,4)):

标准答案:B

知识点解析:C语言中定义二维数组,必须指定二维数组每一维的大小。选项A

没有指定数组a行的大小,错误:选项B,虽然没有指定行大小,但是可以通过大

括号里面的元素个数计算出行的大小为1,因此是正确的:选项C同样没有指定行

的大小,也不能通过元素个数计算行的个数,错误:选项D定义的是二行三列数

组,但是后面数据是三行,超出范围,所以错。

35、有以下程序#includestructord{intx,y;}dt[2]={1,2,3,4);

main。{structord*p=dt;pfintf("%d,",++(p—>x));printf(n%d\n",++(p

—>y));}程序运行后的输出结果是

A、4,1

B、2,3

C>3,4

D>I,2

标准答案:B

知识点解析:在题目中定义了结构体。rd类型的数组变量dt,并对其赋初值。在程

序中定义了指向结构体ord类型的指针变量p,并且它指向变量数组dl的第一个元

素出[0],所以此时成员变量p—>x的值等于1,成员变量p—>y的值等于2,在

输出时分别加1,所以输出结果为选项B。

36、下面关于位运算符的叙述,正确的是

A、#表示“按位异或”的运算

B、II表示“按位或”的运算

C、~表示“按位异或”的运算

D、&表示“按位与”的运算

标准答案:D

知识点解析:C语言提供了6种位运算符,各种位运算符的含义见下表:

各种位总算符及其台汽

运算符含义优先级

■依位求反1

«K.n2

»右样2

&技位93

A核位v或4

按位或5(假)

37、下面对对象概念描述正确的是

A、对象间的通信靠消息传递

B、对象是名字和方法的封装体

C、任何对象必须有继承性

D、对象的多态性是指一个对象有多个操作

标准答案:A

知识点解析:对象之间进行通信的构造叫做消息、,A正确。多态性是指同一个操作

可以是不同对象的行为,D错误.对■象不一定必须有继承性,C错误。封装性是指

从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现

操作,B错误。

38、有以FJSJr#includestructS{inta;int*b;};main(){intxl[]={3,4},x2[]={6,7);

structSx[]={1,x1,2,x2);printf("%d,%d\nu,*x[O].b,*x[1].b);}程序的运行结果是

()o

A、3,6

B、1,2

C、4.7

3/量的地址值

标准答案:A

知识点解析:数组名为一个指针常量,指向该数组的首地址,所以*x[0].b与*xl即

xl⑼等价,值为3,与*x2即x2⑼等价,值为6,答案选A。

39、有以下程序#includeintfun(char*s){char*p=s;while(*p!=0)p++;return(p-

s);}main()(printf("%d\n",fun("goodbey!"));}程序的输出结果是

A、0

B、6

C、7

D、8

标准答案:C

知识点解析:本题主要考查了函数定义及调用,以及while循环语句,执行fun函

数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符

串的长度,所以本题答案为8。

40、在软件开发中,需求分析阶段产生的主要文档是()0

A、可行性分析报告

B、软件需求规格说明书

C、概要设计说明书

D、集成测试计划

标准答案:B

知识点解析:A)错误,可行性分析阶段产生可行性分析报告。。错误,概要设计

说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概耍设计阶段编

写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文

档。

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

卷第3套

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

1、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n—1)/2的排序方

法是()。

A、快速排序

B、冒泡排序

C、直接插入排序

D、堆排序

标准答案:D

知识点解析:除了堆排序算法的比较次数是O(n】og2n)外,其他的都是n(n—1)/

2o

2、在深度为7的满二叉树中,度为2的结点个数为()。

A、64

B、63

C、32

D、31

标准答案:B

知识点解析:根据满二叉树的性质,深度为7的满二叉树共有22.1=127个结点。

根据二叉树的性质,该满二叉树在第7层上,共有2川=64个结点,即共有64个叶

子结点,那么度为2的结点个数为127-64=63个。

3、下面程序段的执行结果是()。i=3;do{print"%2d",i-);)while(!i);

A、3

B、321

C、不打印任何内容

D^陷入死循环

标准答案:A

知识点解析:do-while语句不管循环条件是什么都至少执行一次,在执行了一次打

印语句后,i值变为2,!i为假(0),程序退出循环。

4、下面不属于软件工程过程的4种基本活动

A、软件规格说明

B、软件开发

C、软件演进

D、软件测试

标准答案:D

知识点解析:软件工程过程的4种基本活动是:软件规格说明、软件开发、软件确

认、软件演进八

5、若有定义和语句:inta,b;scanf("%d,%d,",&a,&b);以下选项中的输

入数据,不能把值3赋给变量a、5赋给变量b的是

A、3.5

B、3,5,

C、3,5

D、75,4

标准答案:C

知识点解析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到

输入流中,不能随意加入空格等,否则无法得到正确的输入结果。

6、若有以下程序#includeVstdio.h>main()(inta=O,b=0,c=0;c=(a-=++a),

(a+=b,b+=4);printf(,5%d,%d,%d\n”,a,b,c);)则程序的输出结果是

A、0,4,4

B、1,4,1

C、0,4,0

D、174,4

标准答案:C

知识点解析:对于语句c=(a+=++b,b+=4);首先计算a=a+(++b),a,b初值为0,

则计算以后a为1,b为1,然后计算b+=4,得到b的值为5,此时表达式b+=4的

值为整个逗号表达式的值,因此c的值为5。

7、设数据结构B=(D,R),其中D={a,b,c,d,e,f}R={(f,a),(d,b),(e,d),(c,e),(a,c))该数据

结构为

A、线性结构

B、循环队列

C、循环链表

D、非线性结构

标准答案:A

知识点解析:由结点之间的关系R={(f,a),(d,b),(e,d).(c,e),(a,c)}可以得到,该数据结

构为:“f-a-ced-b”。由此可知结点f没有前驱,结点b没有后继结点,并且其它的

结点只有一个前驱结点和一个后继结点,所以该数据结构为线性结构。所以应选A

选项C

8、软件测试的目的是

A、评估软件可靠性

B、发现并改正程序中的错误

C、改正程序中的错误

D、发现程序中的错误

标准答案:D

知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程

序中的错误。

9、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是

A、提高耦合性降低内聚性有利于提高模块的独立性

B、降低耦合性提高内聚性有利于提高模块的独立性

C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D、内聚性是指模块间互相连接的紧密程度

标准答案:B

知识点解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部

各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于

模块的独立性。

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

A、可以用关系运算符比较字符串的大小

B、空字符串不占用内存,其内存空间大小是0

C、两个连续的单引号是合法的字符常量

D、两个连续的双引号是合法的字符串常量

标准答案:D

知识点解析:比较两个字符串大小用函数strcmp(std,str2),空字符串有结尾符,

所以也要占用字节,两个双引号表示地是空字符串。

11、以下选项中可用作C程序合法实数的是()。

A、.IcO

B、3.0e0.2

C,E9

D、9.12E

标准答案:A

知识点解析:考查实型常量的科学计数法。科学计数法中,e/E前后必须有数字并

且后面的数字必须为整数,所以答案选A。

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

A、getchar()

B、getc()

C、gets()

D、seanf()

标准答案:C

知识点解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所

以用scanf()函数不能输入空格;getchar。函数用于输入字符,其调用格式为:

ch=getchar(),getchar(酒数从终端读入一个字符作为函数值,把读入的字符赋给变

ftcho在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键

时,读入才开始执行。gets。函数的调用形式为:gets(str_adr),其中stjadr是存放

输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变

量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为

止。getc()函数的调用形式为:ch二getc(pf),其中pf是文件指针,函数的功能是从

pf指定的文件中读入一个字符,并把它作为函数值返回。因此C选项正确。

13、下列叙述中正确的是

A、软件的使用存在老化问题

B、软件是物理实体,不具有抽象性

C、软件是逻辑实体,具有抽象性

D、软件的运行对计算机系统不一定具有依赖性

标准答案:c

知识点解析:软件是一种逻辑实体,而不是物理实体,具有抽象性。软件的使用不

存在老化问题。

14、以下叙述中正确的是

A、在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式

B、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存

放整型数

C、若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变

为0

D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4

标准答案:A

知识点解析:选项B中a=10,在赋值时会把10自动转换为double类型然后赋

值,实型变量中不可能存放整型。而选项C中执行a=b后,b的值不变还是9,选

项D中执行a=b;b=a;后,a的值为9,b的值也为9。

15、若有代数式4屋1(其中e仅代表自然对数的底数,不是变量),则以下能

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

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

B、sqrt(abs(nAx+eAx))

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

D、sqrt(fabs(pow(x,n)+exp(x)))

标准答案:C

知识点解析:n和e的x帮次方,要分别调用C语言的数学库函数doublepow(n,

x)和doubleexp(x),因为这两个函数的返回值都为double型,对其两者的和计算绝

对值,调用库函数doublefabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平

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

达式的值。

16、有以下程序#incltadeintfun(chars[])main(){intn=0;{char

s[10]={,6,,‘1','4','9','O',,*'};while(*s<='n'9&&*s>='n'O)

printf("%d\n",fun(s));{n=10*n+*s-,0,;s++;}}return(n);}程序的运行结果

A、61490

B、61

C、9

D、5

标准答案:B

知识点解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其

是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。

所以在主函数中调用fun(s)时,将把字符数组s中的数字组成一个数输出。因为当

指针s指向数组的第3位时,即字符循环条件不成立,循环结束,返回n的

值。所以输出n的值为61。

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

A、if(sl==s2)ST;

B、if(strcpy(sl,s2)==1)ST;

C、it(strcmp(s2,sl)==O)S1,;

D、if(sl-s2==0)ST;

标准答案:c

知识点解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比

较函数slrcmp(),如果这个函数的返回值等于0,说明两个字符串相等。

18、以下不能用于描述算法的是()。

A、E-R图

B、程序语句

C、伪代码和流程图

D、文字叙述

标准答案:A

知识点解析:E-R图即”实体-联系图”将现实世界中的要求转化成实体、联系、属性

等基本概念,描述的是实体之间的联系,而不能对算法进行描述,相对而言,程序

语句、伪代码和流程图以及文字都能描述算法的基本思想,所以答案选A。

19、有下列程序:inta=4;intf(intn){intt=0:staticinta=5;if(n%2)(inta=

6;t+=a++;)else{int

温馨提示

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

评论

0/150

提交评论