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

下载本文档

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

文档简介

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

卷第1套

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

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

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

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

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

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

标准答案:

知识之解析A:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不

断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是

指软件产品从提出、实现、使用维护到停止使用退役的过程.

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

{for(;;){if((i%5)==0)break;elsei—;}i+=13,a+=i;}printfV'%d\n'‘,

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

A、62

B、63

C、23

D、36

标准答案:D

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

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

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

i=13,a=13";②判断"i=13V20”,进入while循环体,i=IO时,跳出for循环,执

行“i+=13;a+i;i=23,a=36”;③判断"i=23>20",循环结束。

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

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

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

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

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

标准答案:D

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

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

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

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

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

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

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

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

4、sizeof(double)是

A、一个双精度型表达式

13、一个整型表达式

C、一个不合法的表达式

D、一种函数调用

标准答案:B

知识点解析:sizeof关键字为C语言的运算符,用于测试0内类型其变量所占内

存,表达式结果返回卜进制整数,因此为整型表达式,表明变量所占的内存字节

数。

5、T列数据结构中,不能采用顺序存储结构的是

A、栈

B、堆

C、队列

D、非完全二义树

标准答案:D

知识点解析:堆中某个结点的值总是不大于或不小于其父结点的值、堆总是一棵完

全二叉树,可以以顺序存储结构存储;队列的存储结构分为链式存储、顺序存储两

利栈作为一种数据结沟,是一种只能在一端进行插入和删除操作的特殊线性表,

可以以顺序存储结构存储。

6、有如下函数调用语句:func(rl,r2+r3,(r4,r5));该函数调用语句中,含

有的实参个数是()。

A、3

B、5

C、4

D、有语法错误

标准答案:A

知识点解析:本题的实参个数有3个,r2+r3与(r4,「5)只是两个表达式形式的实

参,首先计算出它们的结果值,以结果值作为实参。

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

A、集成测试、确认测试、系统测试

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

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

D、单元测试、集成测试、回归测试

标准答案:B

知识点解析:软件测试的实施过程主要有4个步骤:单元测试、集成测试、确认测

试(验收测试)和系统测试。

8、若变量X、Y已正确定义并赋值,以下符合C语言语法的表达式是

A、++x,y=x-

B、x+l=y

C、x=x+10=x+y

D、double(x)/10

标准答案:A

知识点解析:用逗号将表达式连接起来的式予称为逗号表达式。其表达式的一般形

式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表

达式的值。所以选项A)为C语言中的逗号表达式。赋值表达式的左侧只能是变

量,不能是常最或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其

中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。

9、以下不能将s所指字符串正确复制到t所指存储空间的是()。

A、do{*t++=*s++:)while(*s):

B、for(i=0;t|i]=s[i];i++);

C、while(*t=*s){t++;s++}

D、for(i=0,j=0;t[i++]=s[j++];);

标准答案:A

知识点解析:"do{*t++=*s++;}while(*s);”不能因为当*s=''0'时,'while(*s)跳出

循环,这样字符串结束标志O'没有复制给*t,造成付不完整。注意,%++=3++

是先执行匚*s,然后才进行s=s+l°B、C、D选项都能将、(T复制过去。

10^设x=061,y=016,则z=x|y的值是()。

A、00001111

B、11111111

C、00111111

D、11000000

标准答案:c

知识点解析:将八进制的X和y化为二进制数,分别得:x=001l0001,y=0000

1110,则z=xIy=OOHCOOII00001110=00111111.故本题的答案为C)«

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

A、变量的作用域取决于变量定义语句的位置

B、全局变量可以在函数以外的任何部位进行定义

C、局部变量的作用域可用于其他函数的调用

D、一个变量说明为sialic存储类型是为了限制其他编译单元的引用

标准答案:D

知识点解析:本题考查函数调用的变量作用域。全局变量不在任何函数体内定义,

作用域为整个文件;局部变量在函数体内定义,作用域仅为本次函数;sialic类型

是静态变量,为了方便其他编译单元的引用,不能随意改变。一个函数包含两部

分:函数首和函数体,函数体包括花括号内的所有语句。

12、以下选项中叙述错误的是

A、在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语

句内

B、C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

C、C程序函数中定义的自动变量,系统不自动赋确定的初值

D、C程序函数的形参不可以说明为static型变量

标准答案:B

知识点解析:在函数定义的静念变量,只需要赋值1次,即可保存初始值,不需要

每次调用时都赋初始值。

13、若a是数值类型,则逻辑表达式(a==l)||(a!=l)的值是

A、1

B、0

C、2

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

标准答案:A

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

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

1,所以总能保证一边非零,所以结果为真,即lo

14、若有以下程序voidf(intx){if(x>=10){printf(”%d-”,x%10);f(x/10):)

elseprintf("%d"»x);}main(){intz=123456;f(z).}则程序的输出结果是

A、6-5-4-3-2-1

B、6-5-4-3-2-1-

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

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

标准答案:A

知识点解析:函数f的主要功能为逆置输出整数x的每一位数据,如果z的值为

123456,逆置输出的结果为6-5-4-3-2-1。

15^有以下程序#includemain(){intk=5;while(-k)printf(n%d",k-=3);printf("\nM);}

执行后的输出结果是

A、1

B、2

C、4

D、死循环

标准答案:A

知识点解析:--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打

印k的值k=4-3,结果为1,第二次判断条件即为while(O),条件为假,结束循环,打印回

车换行符。所以选择A选项。

16、以下不合法的字符常量是

A、

B、、\'

C>,\018,

D、、xcc,

标准答案:C

知识点解析:在C语言中,一个字符常量代表ASCII字符集中的一个字符,在程

序中用单引号把一个字符括起来用为字符常量。转义字符常量也是必须括在一对单

引号内,以一个反斜线开头后跟一个特定的字符,用来代表菜一个特定的ASCII

字符。在选项C)中,~018,是用八进制数来代表一个字符常量,所以其中的数

字只能小于8,并不包括8。

17、C语言源程序名的后缀是

A、.exe

B、.obj

C、.c

D、.cp

标准答案:C

知识点解析:由C语言构成的指令序列称为C源程序,源程序文件的后辍为

c”。源程序经过C编译程序编译生成后缀为obj”的二进制文件(称为目标文

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

接起来,生成后缀为exe”的可执行文件。

18、以下叙述中正确的是

A、C程序中的每一行只能写一条语句

B、简单C语句必须以分号结束

C、C语言程序中的注释必须与语句写在同一行

D、C语句必须在一行内写完

标准答案:B

知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同

行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和

数据定义的最后必须有一个分号,分号是C语句的必要组成部分。

19、以下关于C语言的叙述中正确的是

A、C语言中的变量可以在使用之前的任何位置进行定义

B、在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

C、C语言的数值常量中夹带空格不影响常量值的正确表示

D、C语言中的注释不可以夹在变量名或关键字的口间

标准答案:D

知识点解析:C语言中的注释可以出现在程序中的任何位置,但是不能夹在变量或

者关键字之间:C语言的变量在函数开始位置进行定义,也可以在变量使用前位置

定义:一个浮点数可以和一个整数相加I,运算符两侧的运算类型也可以不一致:数

值常量中不允许夹带空格。

20、下列语句组中,正确的是

A、char*s;s="01ympic";

B、chars[7];s="01ympic";

C、charts;s={"Olympic");

D、chars[7];s={"Olympic");

标准答案:A

知识点解析:选项A中定义了指针变量s,通过赋值语句保存字符串常量的地址,

而字符数组绝对不能赋值,而只能初始化或者输入。

21、以下正确的字符串常量是

A、'abc'

B、OlympicGames

D、\\\

标准答案:C

知识点端析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反

斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个八7

表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。

22、若有以下程序main(){intc;01315;printf(n%d\nH,c);}则程序的输出

结果是

A、15

B、18

C、13

D、5

标准答案:C

知识点解析:按位或⑴的运算规则是:参加运算的两个运算数中,只要两个相应

的二进制位中一个为1,则该位的运算结果即为I:只有当两个相应位的数都为0

时,该位的运算结果才为0。13的二进制位1101,5的二进制位0101,或运算的

结果为1101,因此值为13o

23、以下叙述中正确的是

A、函数名代表该函数的入口地址

B、所有函数均不能接受函数名作为实参传入

C、函数体中的语句不能出现对自己的调用

D、如果函数带有参数,就不能调用自己

标准答案:A

知识点解析:函数形、实参传递的时候,要求对应位汽类型一致即可,如果实参为

函数名,可以定义相应的形参为指向函数的指针变量来获得该函数的入口地址,因

此选项B)错误的,在C语言中允许进行递归调用,即自己调用自己,选项C)和选

项D)是错误的。

24、以下定义数组的语句中错误的是

A>int=num[][3]={{l,2],3,4,5,6);

B、intnum[]={1,2,3,4,5,6);

C、intnum[][4]={1,2,3,4,5,6);

D、intnumL2JL4J={{l,2},(3,4),(5,6));

标准答案:D

知识点解析:在选项D)的数组定义中,赋值号左边定义了一个2行4列的二维数

组,而在右边定义了一个3行2列的二维数组。

25、有以卜程序#include〈stdio.h>main(){inta=2,b;b=a<<2;printf("%d\

n",b);)

A、4

B、6

C、8

D、2

标准答案:C

知识点解析:表达式aVV2,把a向左移动2位,相当于扩大4倍。

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

卷第2套

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

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

A、图元关系

B、数据流

C、控制流

D、调用关系

标准答案:C

知识点露析:在程序流程图中:①标有名字的带箭头线段表示控制流;②矩形表

示加工步骤;③菱形表示逻辑条件。

2、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。

A、下画线

B、大写字母

C、数字字符

D、连接符

标准答案:D

知识点解析:C语言中标识符由字母、下画线或数字组成,且开头必须是字母或下

画线。

3、以下各项中,能正确表述算式sin(2兀什30。)的C语言表达式是()。

A、sin(2*7i*r+3O)

B、sin(2*3.14叼+30)

C、sin(2*3.14*r+3.14*30/180.0)

D、sin(2*3.14*r+3O*3.14/360.0)

标准答案:c

知识点.析:考查算术表达式的写法,选项C中没有兀,需要用数值3.14代替,

sin函数的参数为弧度,角度30转成弧度应为3.14*30/180。故应选C。

4、有以下程序:#include<stdio.h>main(){chara=,H,:a=(a>=,Ar&&a<

=Z)?(a+32):a;printf(〃%c'n",a);}程序运行言的输出结果是().

A、h

B、H

C、A

D、a

标准答案:A

知识点解析:考查条件运算符。条件表达式的形式为:表达式1?表达式2:表达

式3,计算“表达式1”的值,若为“真”,取“表达式2”的值作为整个条件表达式的

值;若为“假”,取“表达式3”的值作为整个条件表达式的值。字符参与运算时一般

计算其ASCH码,并且一个字母的小写一大写=32(ASCH码),该程序将大写字母

转成对应的小写字母,答案选A。

5、有以下程序:#include<stdio.h>intb=2;intfun(int*k){b=*k+b:

return(b);)voidmain(){inta[10]={1,2,3,4,5,6,7,8),i;for(i=2;i<

4;j++))b=fun(&a[i])+b;printf("%d",b);{printf("\n");}程序运行后的输出

结果是()。

A、1012

B、810

C、1028

D、1016

标准答案:C

知识点解析:因为b是全局变量,所以它的值在整个程序结束才会消失。for循环

中,第一次循环,i=2,a[2]=3,所以fun(&a[i]=3+2=5,b=5,所以

b=fun(&a[i])+b=5+5=10;第二次循环,b=10,然后fun(&a[i])代入a[3]=4,这时

fun(&a[i]=10+4=14,所以b=fun(&a[i])+b=14+14=28o

6、有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):#include<

stdiO.h>#include<string.h>voidmain(){chara[10]=wabc%b[10]="012",

c[10]="xyz";strcpy(a+l,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是

()。

A、al2xyz

B、12yz

C、a2yz

D、bc2yz

标准答案:C

知识点解析:先执行strcpy,将b[2]中的2复制到a[l]中的b及之后的存储空间

中,即此时数组a中值为a2,再执行strcat连接函数,将c|1]所指的y及之后的z

与a连接,即为a2yz。

7、下面结构体的定义语句中,错误的是()。

A、structord{intx;inty;intZ;}structorda;

B、structord{intx;inty;intz;);structorda:

C^structord{intx;inty;intz;)a;

D、struct{intx;inty;intz;)a;

标准答案:A

知识点解析:分号代表该结构体定义语句的结束,选项A的结构体没有定义完全

就用该结构体另外定义变量,用法有误,所以答案选A。

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

点数为()0

A、219

B、229

C、230

D、231

标准答案:B

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

叶子结点即为0,则n2=79,总结点数为n0+nl+n2=80+70+79=229。故B选项正

确。

R

ABCE

12□M

b44LZJEJ3

c23

(132

9、有两个关系R和T如下:则由关系R

得到关系T的操作是()。

A、选择

B、交

C、投影

D、并

标准答案:C

知识点解析:关系T是由关系R的第3、4行的元组组成的,很显然这是对关系R

进行选择运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列

的操作。选择是从表中选出满足给定条件的元组组成新表。故C选项正确。

10、若有以下定义:structtt{charname[10];charsex;}aa={"aaaa",,F'},

*P=&aa:则错误的语句是()。

A、scanf("%c”,aa.sex);

B、aa.sex=getchar();

C、printff'%c\n",(*P).sex);

D、printf"c\n〃,P—>sex);

标准答案:A

知识点解析:sex是一个char类型变量,不是地址,A项应为scanf("%c〃,

&aa.sex);。

11、执行以下程序段后,s的值为O。inta[]={1,2,3,4,5,6,7,8,9),

s=0.k:for(k=0:k<8:k+=2)s+=*(a+k);printf("%d\n",s);

A、13

B、16

C>17

D、45

标准答案:B

知识点解析:数组元素为:a[0]=l,a[l]=2...a[8]=9ok=0时,s=s+*(a+k)=0+l=l;

k=2时,s=l+*(a+2)=1=3=4;k=4时,s=4十5=9;k=6时,s=9十7=16。

12、有以下程序:#include<stdio.h>voidfun(char(*P)[6]){inti;for(i=0;i<

4:i++)printf("%c〃,P[i][i]);printfC\n");}main(){char

s[6][6]={"ABCD","abcde","12345","FGHIJ",〃图iij","54321"};fun(s);}程

序的运行结果是()。

A、AalF

B、Ab3I

C、ABCD

D、fghij

标准答案:B

知识点解析:函数fun的功能是输出所以结果会输出s[O][Oj、s[l][l].

s[2][2],即Ab3I。

13、以下各项中,不是C语言字符型或字符串常量的是()。

A、"ItS〃

B、"0〃

C、'a=0'

D、\oi(r

标准答案:c

知识点解析:C选项是一个赋值表达式。A、B两项是字符串常量,D选项是字符

型常量。

14、若有以下程序:#include<stdio.h>intf(intm){staticintn=0;inta=2;n+

+;a++;returnn+m+a;)main(){intk;for(k=0;k<4;k++)printK"%d,",

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

A、3,5,7,9,

B、4,7,10,13,

C、4,5,6,7,

D、4,6,8,10,

标准答案:D

知识点解析,本题考查静态局部变量以及自增运算符.静态局部变量在函数调用结

束后,并不释放,仍然保留它的值。本题中,k为。时,rcturnn+m+a之前,n为

1,a为局部变量是3,m为0,所以第一个返回值为4。k为1时,在函数返回值

之前,静态局部变量为2,局部变量a仍然为3,m为1,所以结果是6。以此类

推,答案为D。

15、软件需求规格说明书在软件开发中的作用不包括()。

A、软件设计的依据

B、软件可行性分析的依据

C、软件验收的依据

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

标准答案:B

知识点解析:需求分析就是分析软件用户的需求是什么,描述需求的文档称为软件

需求规格说明书。软件需求规格说明书是需求分析阶段的最后成果。需求规格说明

书是使开发人员获得设计和实现这些功能所需的所有必要信息,是软件设计的依

据,A选项正确;软件需求规格说明书是软件测试和验收的依据,通过检查每项需

求是否能通过设计测试用例或其他的验证方法,来确定产品是否确实按需求实现

了,C选项正确;软件需求规格说明书对所有需求说明的用户和开发人员都只能有

一个明确统一的解释,是用户和开发人员对软件要做什么的共同理解,D选项正

确。可行性分析是项目立项阶段要做的工作,虽然也需要对用户需求进行调研,但

此阶段不会形成软件需求规格说明书。故正确答案为B。

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

A、计算机只接收由0和1代码组成的二进制指令或数据

13、计算机只接收由。和I代码组成的十进制指令或数据

C、计算机可直接接收并运行C源程序

D、计算机可直接接收并运行任意高级语言编写的源程序

标准答案:A

知识点解析:二进制数中只有两个字符。和1,表示具有两个不同稳定状态的元器

件。例如,电路中有无电流,有电流用1表示,无电流用0表示。类似的还比如电

路中电压的高低,晶体管的导通和截止等。二进制数运算简单,大大简化了计算中

运算部件的结构,故选预A正确。

17,有以下程序:#inckide<stdio.h>doublefun(doublea){doublex;x=a一

(int)a;returnx;)main(){doublea=3.1415;printf("%f\n",fun(a));}程序

的运行结果是()。

A、0.141500

B、3.141500

C、3.000000

D、0.000000

标准答案:A

知识点解析:这里考查了强制转换的概念。在fun函数中,x=a-(int)a,表示x取

值为a的小数部分,因比.输入a为3.1415.输出x=0.14LS00,故A选项正确

18、有以下程序:#include<stdio.h>charf(charx){returnx*x%lO+^'z}

main(){chara;intb=0;for(a=0;a<5;a+=1){b=f(a);putchar(b);}}则程序

的输出结果是()。

A、014916

B、01234

C、01496

D、00000

标准答案:C

知识点解析:该题目中x*x%10,即x和x相乘后,结果再对10求余操作。主函

数中通过for语句使变量a从0到4进行取值,当a=0时,调用函数f后,返回值

为0,赋给b,并且进行字符输出;当a=l时,返回值为1赋给b,并且进行字符

输出;当a=2时,返回值为4赋给b,并且进行字符输出;当a=3时,返回值为9

赋给b,并且进行字符输出;当a=4时,返回值为6赋给b,并且进行字符输巴。

故C选项正确。

19>有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)retum((x+y)/

2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d\n”,fun(2*a,

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

A、3

B、6

C、8

D、12

标准答案:B

知识点解析:考查函数的调用。输出结果为fun(2*a,fun(b,c))=fun(8,5)=6,答

案选B。

20>有以卜程序:#include<stdio.h>main(){intc[6]={10,20,30,40»50,

60),*p,*s:p=c;s=&c[5];printf("%d'n",s—p);}程序运行后的输出结果

是()o

A、5

B、50

C、6

D、60

标准答案:A

知识点解析:本题主要考查数组和指针。首先初始化一维数组c[6],语句p=c;表

示将c|0]元素的地址赋给指针变量p;语句s=&c|5';表示将c[5]元素的地址赋给

指针变量s。程序最后输出s—p,即结果为5。故A选项正确。

21、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列各项

中属于应用软件的是()c

A、学生成绩管理系统

B、C语言编译程序

C、UNIX操作系统

D、数据库管理系统

标准答案:A

知识点解析:软件按功能可以分为:应用软件、系统软件、支撑软件、操作系统、

编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件,所以B、C、

D选项都是系统软件,只有A选项是应用软件。

22、在数据库中,数据模型包括数据结构、数据操作和()。

A、数据约束

B、数据类型

C、关系运算

D^查询

标准答案:A

知识点解析:数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、

动态行为和约束条件,为数据库系统的信息表示和操作提供一个抽象的框架,即描

述了数据结构、数据操作及数据约束。故正确答案为A。

23、若变量均已正确定义并赋值,以下各项中属于合法的C语言赋值语句是

A、x=n%2.5:

B、x=v==5;

C、x+n=i;

D、x=5=4+l;

标准答案:B

知识点解析:%取余操作数只能是整数,x+n和数值5不能作为赋值的左值,所以

A、C、D选项错误。

24、对于if(表达式)语旬,以下叙述中正确的是()。

A、“表达式”的值可以是任意合法的数值

B、变量不能出现在“表达式”中

C、常量不能出现在“表达式”中

D、如果“表达式”的值不是逻辑值,程序会出编译错误

标准答案:A

知识点解析:B、C、D选项描述比较片面。

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

A、char,cl,c2,*c3,c4[40];是合法的变量定义语句

B、数组下标的下限由数组中第一个非零元素的位置决定

C、数组下标的下限由数组中第一个被赋值元素的位置决定

D、数组下标的下限是1

标准答案:A

知识点解析:A选项正确,chare1,c2,*c3,c4[40]表示定义了两个字符变量cl、

c2,一个字符指针c3,一个字符数组c4。数组的下限永远为0,选项B、C、D

错,答案选Ao

26、以下选项中,没有编译错误的是()。

A、charstr3[]={,d,,七','b','u','g',,\0'};

B、charstrl[5]=,rpassw,str2[6];str2=strl;

C^charname[10];nams=,,china,,;

D、charstr4[];str4="he11oworld";

标准答案:A

知识点解析:B选项中,不能直接将字符数组名直接赋值给另一个字符数组名。C

选项赋值错误,不能将一个字符串常量赋值给一个字符指针D选项定义slr4时需

要定义其长度。故A选项正确。

27、有以卜.程序:#include<stdio.h>voidsp(int*a){intb=2;a=&b;

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

d,%d\n”,k,*p);1则程序的输出结果是()。

A、4,3,3

B、4,3,4

C^6,3,6

D、6>6,6

标准答案:A

知识点解析:首先在主函数中给整型变量k赋值为3,将变量k的地址赋给指针变

量p,调用sp函数,将实参p的值传给形参a,在sp函数中,指针变量a又获得变

量h的地址,通过运算后,输出a的值为4,返回主函数,输出k的值和p的值为

3和3。故A选项正确。

28、下列关于队列的叙述中正确的是()。

A、在队列中只能插入数据

B、在队列中只能删除数据

C、队列是“先进先出”的线性表

D、队列是“先进后出”的线性表

标准答案:C

知识点解析:队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操

作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一

端称为队首(front)。队列具有“先进先出''的特点,它是按“先进先出”的原则组织数

据的

29、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多

个共有的()。

A、记录

R、行

C、属性

D、元组

标准答案:C

知识点解析:进行自然连接时要求两个关系具有相同列,即属性。

30、若有定义语句:intx=12,y=8,z;在其后执行语句:z=0.9+x/y;则z的

值为()。

A、1

B、1.9

C、2

D、2.4

标准答案:A

知识点解析:x、y为整数,乂/丫值为1,加上0.9为1.9,赋值给整型变量z,

接收后为1。

31、有以下程序#includeVsidio.h>main(){inti=l;fbr(printf(w%dw,i);i<4;

i++)printf(〃%d”,i);printf("\n〃);}程序运行后的输出结果是()。

A、0123

B、123

C、1123

D、001

标准答案:C

知识点解析:for语句的一般形式为“for(表达式1;表达式2;表达式3){循环体语

句}”,其执行流程是先计算表达式1,之后计算表达式2,根据表达式2的值来判

定是否进行循环,若为真,则执行循环体,循环体执行完毕之后再计算表达式3的

值。整个循环过程中,表达式的值只会执行一次,而表达式2、3以及循环体每次

循环都会执行,所以答案选C。

32、有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,

0,1,2},0j,t=l;for(i=0;i<3:i++)for(j=i;j<=i:j++)t+=b[i][j];

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

A、4

B、3

C、1

D、9

标准答案:A

知识点解析:考查二维数组的遍历。

t=t+b|O]|b|O]|O|]+b|1||b|11|1||+b|2]|b|2||2||=t+b|0][01+b[11|1|+b|2]|2|=l+0+l+2=4,

所以答案选A。

33、设有定义:inta=64,b=8;,则表达式(a&&b)和(aIb)&&(aIIb)的值分别

为()。

A1和

、1

B1和

、0

co和

、1

DO和

、0

标准答案:A

知识点解析:常用的位运算符有:“〜”按位求反,“VV”左移,“>>”右移,

按位与,“人”按位异或,“I”按位或。逻辑或运算符“I”,计算左表达式值,如果

为真,则不计算右表达式值,而整个表达式为真;若左表达式为假,再计算右表达

式值,然后做或运算逻辑与运算符“&”,计算左表达式值,如果为假,则不计算右

表达式值,而整个表达式为假;若左表达式为真,再计算右表达式值,然后做与运

算。a=64换算为二进制为1000000,b=8换算为二进制为1000,a&b=0为假,

a&&b为真,(a&b)II(a&&b)为真,值为1。aIb=1001000为真,aIlb为真,

则(alb)&&(allb)为真,值为1。故A选项正确,

34、设文件指针fp已定义,执行语句fp=fbpen("file",〃w〃);后,以下针对文本文

件file操作叙述的选项中正确的是()。

A、只能写不能读

B、写操作结束后可以从头开始读

C、可以在原有内容后追加写

D、可以随意读和写

标准答案:A

知识点解析:文件打开方式为“w”表示只写不读,选项A正确。

35、C语言中最基本的数据类型包括()。

A、整型、实型、逻辑型

B、整型、字符型、数组

C、整型、实型、字符型

D、整型、实型、结构体

标准答案:C

知识点解析:C语言中最基本的数据类型包括整型、实型、字符型。

36、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述中正确

的是()u

A、预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义

B、用户标识符可以由字母和数字任意顺序组成

C、在标识符中大写字母和小写字母被认为是相同的字符

D、关键字可用作用户标识符,但失去原有含义

标准答案:A

知识点解析:用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键

字不能用作用户标识符。

37、下列关系表达式中,结果为“假”的是()。

A、(3+4)>6

B、(3!=4)>2

C、3<=4I|3

D、(3<4)=1

标准答案:B

知识点解析:在一个表达式中,括号的优先级高,先计算3!=4,为真即1,1>2

为假。

38、有以卜程序:#include<stdio.h>intf(intx)(returnx*x+l;)voidmain()

{inta,b=0;for(a=0:a<3;a++){b=b+f(a);putchar('A'+b);}printR"\

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

A、ABE

B、BDI

C、BCF

D、BCD

标准答案:B

知识点解析:第一次循环时,b=l,输出结果为B;第二次循环时,b=3,输出结

果为D;第三次循环时,b=8,输出结果为1。

39、以下选项中,合法的是()。

A、charstr3[]={'d',b,'u','g','0'};

B、charstr4;str4="he11oworld";

C、charname[10];nams=,/china//;

D、charstrl[5]=,,passw,str2[6J;str2=strl;

标准答案:A

知识点解析:选项B不能把一个字符串赋值给一个字符变量,选项C和D犯了同

样的错误是把字符串赋给了数组名。

40>有以卜程序:#include<stdio.h>structSTU{charname|9];charsex;int

score[2];}:voidf(structSTUa[]){structSTUb={"Zhao",'m',85,90);

a[I]=b;}main(){structSTUc[2]={{"Qian%T,95,92),{"Sun",'m',98,

99)};f(c);printf("%s,%c,%d,%d,",c|0|.name,c|0].sex,

c[0].score[0],c[0].score[l]);printf("%s,%c,%d,%d\n",c[l].name,

c[l].sex,c[l].score[0],c[l].score[l]);}程序运行后的输出结果是()。

A、Zhao,m,85,90,Sun,m,98,99

B、Zhao,m,85,90,Qian,f,95,92

C>Qian,f,95,92,Sun,m,98,99

D、Qian,f,95,92,Zhao,m,85,90

标准答案:D

知识点解析:fun函数是为结构体数组的第二个数赋值,数组的第一个数没有变

化,所以正确答案应选D。

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

卷第3套

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

1、在长度为n的顺序表中查找一个元素,假设需要查找的元素有一半的机会在表

中,并且如果元素在表中,则出现在表中每个位置上的可能性是相同的。则在平均

情况下需要比较的次数大约为()。

A、n

B、3n/4

C、n/2

D、n/4

标准答案:B

知识点解析:在顺序表中查找,最好情况下第一个元素就是要查找的元素,则比较

次数为1;在最坏情况下,最后一个元素才是要找的元素,则比较次数为这是

找到元素的情况。如果没有找到元素,则要比较n次。因此,平均需要比较:找到

1回

元素的情况”+未找到元素的情况x」=(l+2-t-...+n)/nx+nxo

2、以下描述中,不是线性表顺序存储结构特征的是()。

A、可随机访问

B、需要连续的存储空间

C、不便于插入和删除

D、逻辑相邻的数据物理位置上不相邻

标准答案:D

知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻

辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在

物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。

3、下列叙述中正确的是

A、结点中具有两个指针域的链表一定是二叉链表

B、结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构

C、二叉树只能采用链式存储结构

D、循环链表是非线性结构

标准答案:B

知识点解析:结点中尽管有两个指针域但没有分别指向两个不同的结点就不是二又

链表,故选项A不正确;二叉树是非线性结构,即每个数据结点至多只有一个前

驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构,故选项C不正

确:循环链表是在单链表中,将终端结点的指针域NULL改为指向表头结点或开

始结点的线性结构,故选项D不正确;当结点中两个指针分别指向前驱结点和后

继结点时为线性结构,当指向两个不同的前驱或后继结点时为非线性结构,故选项

B正确。

4、若x=2,y=3,则x&y的结果是()。

A、0

B、2

C、3

D、5

标准答案:B

知识点解析:将x和y化为二进制数分别得:x=OOiX)OOIO,y=00000011,则

x&y=000000l0&00000011=00000010,即2,故本题的答案为B)。

5、以下叙述中正确的是

A、每个后缀为.c的C语言源程序都应该包含一个main函数

B、在C语言程序中,main函数必须放在其他函数的最前面

C、每个后缀为.c的C语言源程序都可以单独进行编译

D、在C语言程序中,只有main函数才可单独进行编译

标准答案:C

知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才

可以执行。

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

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

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

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

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

标准答案:B

知识点解析:滥用got。语句将使程序的流程亳无规律,可读性差,对于初学者来说尽

量不要使用,所以A错误。一个结构化程序可以包含顺序.分支。循环结构中的一种

或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D

错误。

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

A^autoflstatic

B、extern和register

C、autoflregister

D^statie^0register

标准答案:C

知识点解析:aulo:函数中的局部变量,动态地分配存储空间,数据存储在动态存

储区中,在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释

放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU

中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形参可以作为寄存

器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从

变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有

效的作用范围只限于定义处到文件终了。static:静态局部变量,属于静态存储类

别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。

8、公司的开发人员可以同时参加多个项目的开发,则实体开发人员和实体项目问

的联系是

A、多对多

B、一对多

C、多对一

D、一对一

标准答案:A

知识点解析:多对多关系是关系数据库中两个表之间的一种关系,该关系中第一个

表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以

与第一个表中的一个或多个行相关。本题中,开发人员可以同时参加多个项目,而

一个项目也需要多个开发人员来完成,因此,是多对多关系。

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

A、getc()

B、gets()

C、getchar()

D、scant()

标准答案:B

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

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

ch=getchan|),getchav。函数从终端读入一个字符作为函数值,把读入的一个字符

赋给变量ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入

Enter.键时,读入才JT始执行。gets。函数的调用形式为:gets(str_adr)»其中str_adr

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

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

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

pf指定的文件中读入一个字符,并把它作为函数值返回。

10^有以下程序#inckideintfun(intn){if(n==l)return1;elseretum(n+fun(n-1));)

main(){intx;scanf("%d",&x);x=fun(x);printf(n%d\n",x);}执行程序时,给变量x输

入10,程序的输出结果是

A、55

B、54

C、65

D、45

标准答案:A

知识点解析:该程序考察的是函数的递归调用,在调用一个函数的过程中又出现直

接或间接地调用该函数本身,称为函数的递归调用,执行结果为

1+2+3+…+8+9+10=55。因此A选项正确。

11、以下选项中不属于C语言标识符的是

A、用户标识符

B、关键字

C、常量

D、预定义标识符

标准答案:C

知识点解析:C语言的标识符可分为以下3类:①关键字。C语言预先规定了一批

标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键

字。例如,int、doubk、if、else、while、for等。②预定义标识符。即预先定义并

具有特定含义的标识符。③用户标识符。由用户根据需要定义的标识符称为用户

标识符,又称自定义标只符,一般用来给变量、函数、数组等命名。

12、以下叙述中正确的是

A、字符变量在定义时不能赋初值

B、同一英文字母的大写和小写形式代表的是同一个字符常量

C、字符常量可以参与任何整数运算

D、转义字符用@符号开头

标准答案:C

知识点解析:一个字符常量代表ASCII字符集中的一个字符,在C程序中,字符

常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。

13、若有以下程序#includemain(){inta=1,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);}则程序的输出结果是

()0

A、2,2,2,4

B、2』,2,-1

C、5,1,2,-1

D、1,2,3,4

标准答案:A

知识点解析:根据逻辑表达式的“短路求值”原理,逻辑或的第一个表达式“a=2"的

值为真,则表达式“b=l”不再计算,整个逻辑表达式值为真,执行语句"c=2;“,第二

个if语句条件不成立,所以第二个表达式“d=-l”也不计算,所以变化的值有a和

c,变化后a=2,c=2,所以答案选A。

14、不能用于向文件中写人数据的C语言函数是()。

A、fprintf

B、fputc

C、ftell

D^fwritc

标准答案:C

知识点解析:本题考查文件操作。ftell函数返回文件指针的当前位置,其他的都写

文件函数。

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

A、必须是整数值

B、必须是正数

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

D、必须是逻辑值

标准答案:C

知识点》析:在if语句中,表达式可以是在意合法的数值。当其值为非零时,执

行jf语句,为0时执行else语句。

16、有以下程序main。{inii=5;do{if(i%3=l)if(i%5==2){prinlf(“*%d",i);

break:)i++;)while(i!=0);printf("\n”),)程序的运行结果是

A、*3*5

B、*5

C、*7

D、*2*6

标准答案:C

知识点解析:由于循环变量i的初值等于5,所以第一、二次进入do…while循环

语句时,条件语句if(i%3=l),if(i%5=2){printf("*%d”,i);break;不执行,只

执行i++语句。当行7时,满足条件语句if(i%3==l),if(i%5==2){printf("*%d,

"i);break:),所以输出*7,结束循环。

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

A、getc()

B、gets()

CNgctchar()

D、scanf()

标准答案:B

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

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

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

给变量ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入

Emer键时,读入才开始执行。gels()函数的调用形式为:gets(str_adr),其中sijadr

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

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

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

pf指定的文件中读入一个字符,并把它作为函数值返回。

18、若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是

()O

A^intn=10,a[n];

B、#dcfincn5inta[2*n];

Csinta[5+5];

D^#defineN10inta[N];

标准答案:A

知识点解析:定义数组时数组的维数需为常量或者常量表达式,不可以用变量更不

可以省略,所以答案选A。

19、有以卜程序voidfun(int*P,int*q){intt;t=*p:*p=*q;*q=l;*q=*p;)

main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);)程序的输出结

果是

A、00

B、99

C、90

D、09

标准答案:B

知识点解析:函数fun的主要功能是交换p和q指向的地址空间的数据,然后更改

p的指向的地址空间数据,使之和q指向的数据相同。主函数调用fun后,p指向

a,q指向b,因此a和b的数据全部为9。

20、以下选项中有语法错误的是

A^charstrL3J[10J;str[lj="gucst";

B、charstr[][10]={Hguesf'};

C^char*str[3];str[l]="guest";

D^char*str[]={"guest"}:

标准答案:A

知识点解析:本题考查字符数组的定义和使用。选项A)定义了一个二维字符数

组,第二句是直接给字符数组赋值错误,C语言中不能直接给字符数组赋值;选项

B)、C)和D)都是正确的。

21,有以下程序#include<stdio.h>inta=l,b=2;voidfunl(inta,intb)

{printf(t<%d%d,,,a,b);}voidfun2(){a=3;b=4;}main(){flin1(5,6);fun2();

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

A、3456

B、1256

C、5612

D、5634

标准答案:D

知识点解析:函数funl{)的作用是输出局部变量a和b的值,在主函数中执行

funl(5,6)的结果是输出5,6;函数fun2()的作用是给变量a和b分别赋值3,4;执行

fun2()的作用是输出3,4。

22、下列语句组中,正确的是

A、char*s;s="Olympic";

B、chars[7];s="Olympicn;

C、char*s;s={"Olympic');

D、chars[7];s={"Olympic'1);

标准答案:A

知识点解析:选

温馨提示

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

评论

0/150

提交评论