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

下载本文档

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

文档简介

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

卷第1套

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

1、下列关于栈和队列的描述中,正确的是()。

A、栈是先进先出

B、队列是先进后出

C、队列允许在队头删除元素

D、栈在栈顶删除元素

标准答案:D

知识点解析:栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一

端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈

底.队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队

头,允许插入的一端叫做队尾。

2、已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历

序列是()。

A、ABCDE

B、ECABD

C、EACDB,

D、CDEAB

标准答案:C

知识点解析:由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序

遍历的首个元素为E,故排除A和D选项。由于中序遍历中,元素B在元素根结

点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,所

以前序遍历的最后一个元素应为B,故选项C为正确选项,即该二义树的前序遍

历序列是EACDB。

3、在数据流图中,带有箭头的线段表示的是()。

A、控制流

B、数据流

C、模块调用

D、事件驱动

标准答案:B

知识点解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,

一般在旁边标注数据流名。

4、结构化程序设计的3种结构是()。

A、顺序结构,分支结构,跳转结构

B、顺序结构,选择结构,循环结构

C、分支结构,选择结构,循环结构

D、分支结构,跳转结构,循环结构

标准答案:B

知识点解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结沟就

足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结

构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效

率,降低软件的开发成本。

5、下列方法中,不属于软件调试方法的是()。

A、回溯法

B、强行排错法

C、集成测试法

D、原因排除法

标准答案:C

知识点解析:软件调试主要采用以下三种方法:强行排错法:作为传统的调试方

法,其过程可概拈为设置断点、程序暂停、观察程序状态、继续运行程序。回溯

法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定

最先发现“症状”的位置°原因排除法:原因排除法是通过演绎和归纳,以及二分

法来实现。

6、下列选项中,不属于模块间耦合的是()。

A、内容耦合

B、异构耦合

C、控制耦合

D、数据耦合

标准答案:B

知识点解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦

合一一若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共

耦合一一若一组模块都访问同一全局数据结构,则称为公共耦合。外部耦合一一

若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合一一若一模块明

显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦

合。标记耦合一一若两个以上的模块都需要其余某一数据结构的子结构时,不使

用其余全局变量的方式而全都使用记录传递的方式,这样的耦合称为标记耦合。

数据耦合一一若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参

数,则这两个模块为数据耦合。非直接耦合——若两个模块没有直接关系,它们

之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦

合,这样的耦合独立性最强。

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

A、多态性

B、标识惟一性

C、封装性

D、耦合性

标准答案:D

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

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

惟一性、多态性、封装性、模块独立性、继承和多态性好。

8、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。

A、需求分析阶段

B、概念设计阶段

C、逻辑设计阶段

D、物理设计阶段

标准答案:C

知识点解析:逻辑结构没计的任务:概念结构是各种数据模型的共同基础,为了能

够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模

型,这正是数据库逻辑结构设计所要完成的任务。它包括从E-R图向关系模式转

换和逻辑模式规范化及调整、实现。

9、在一棵二叉树上,第5层的结点数最多是()。

A、8

B、9

C、15

D、16

标准答案:D

知识点解析:根据二叉树的性质:二叉树第i(Rl)层上至多有2用个结点。得到第

5层的结点数最多是16个v

10、下列有关数据库的芍述,正确的是()。

A、数据库设计是指设计数据库管理系统

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

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

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

标准答案:B

知识点解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模

型。数据库技术的主耍目的是有效地管理和存取大量的数据资源,包括:提高数据

的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数

据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和

维护代价。

11、以下关于C语言的叙述中正确的是()。

A、预处理命令通常位于函数体外面,但也可以位于函数体中间

B、C语言中的变量定义须在其他语句之前

C、在C语言程序的书写中,一个语句必须单占一行

D、一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的

main函数

标准答案:A

知识点解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中

的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以

位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以

由一个或多个源文件组成,但仅可以有一个main函数。

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

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

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

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

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

标准答案:A

知识点解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字

和下划线组成,并口笫一个字符必须为字母或下划线,凡是要求标识符的地方都必

须按此规则命名。在C语言的标识符中,大写字母和小写字母被认为是两个不同

的字符。在选择标识符时,应注意做到“见名知义”,即选择具有一定含义的英文单

词或汉语拼音作为标识符,以增加程序的可读性。

13、下列选项中可作为C语言合法常量的是()。

A、-80

B、-080

C、-8el.0

D、-8().0e

标准答案:A

知识点解析:所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语

言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项B中是以0

开头,表示一个八进制数,而八进制数的取值范围是0〜7,所以“-080”错误:在C

语言中e后面的指数必须是整数,因此,选项C和D也不正确。

14、下列定义变量的语句中错误的是()。

A、int_int;

B、doubleint_:

C>charFor:

D、floatUS$:

标准答案:D

知识点解析:C语言规定,变量的标识符只能由字母、数字和下划线3种字符组

成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两

个不同的字符。选项A定义的变量标识符ini和选项B定义的变量标识符血与C语

言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C

语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有

特殊字符$,因而其不符合C语言的变量命名规定。

15、下列关于函数的叙述中正确的是()。

A、每个函数都可以被其他函数调用(包括main函数)

B、每个函数都可以被单独编译

C、每个函数都可以单独运行

D、在一个函数内部可以定义另一个函数

标准答案:B

知识点解析:在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间

没有从属关系。虽然函数之间可以相互调用,但main。函数不能被调用,选项A

错误;C程序从main。函数开始执行,当main。函数执行完毕时,整个程序就结束

了。C程序的执行必须从main。函数开始,选项C选项错误;函数不能嵌套定义,

选项D错误。

16、当a=l、b=2、c=3、d=4时,执行下面程序段后,x的值是()。if(a<b)if(c<

d)x=l;elseif(a<c)if(b<d)x:2:elsex=3:elsex=6:elsex=7:

A、1

B、6

C、3

D、2

标准答案:A

知识点解析:本题考查的是if-else语句。第一个if语句,先判断条件,发现aVb

条件成立,执行下面的语句。第二个if语句,先判断条件,发现cVd条件成立,

执行下面的语句X=lo

17、以下程序的输出结果是()。#include<stdio.h>main(){inta=4,b=3,c=2,

d=l;printf(,,%d,,»a<b?a:d<c?d:b);}

A、1

B、3

C、2

D、4

标准答案:A

知识点解析:条件表达式的格式为:“a?b:c”,它的功能是:当a为真时,表达

式的值等于b的值;当a为假时,表达式的值等于c的值。因为条件运算符的结合

方向为“自右向左因此,当表达式中嵌套使用条件表达式时,应先计算右边的

条件表达式,再计算左边的条件表达式。题中应先计算“d〈c?d:b”的“dVc”关系

表达式的值,因为“d=l〈c=2”为真,所以取第一个表达式的值,即d的值作为整个

表达式的值。接着计算“aVb?a:d",“a=4Vb=3”为假,取第二个表达式的值,即d

的值作为整个表达式的值。

18、有以卜程序#inc1udeVsldio.h>main(){intb|3]|3]={0,1,2,0,1,2,0,

1,2),i,j,t=0;for(i=0;i<3:i++)for(j=2;j>=i;j-)t+=b[i][j];printf(''%d

\n”,t);}程序运行后的输出结果是()。

A、4

B、3

C>8

D、9

标准答案:C

知识点解析:这道题主要考查的是二维数组的有关知识。在两层for循环语句中,

累加上三角元素,所以程序执行的过程为“二

b[0][0]+b[0][l]+b[0][2]+b[l][l]+b[l][2]+b[2][2]=8-o

19>以下程序:#includc<stdio.h>main(){charstr[10];scanf(''%s'',&str);

printfC%s\nTstr);}运行上面的程序,输入字符串“howareyou",则程序的执

行结果是()。

A、how

B、howareyou

C、h

D、howarcyou

标准答案:A

知识点解析:当从键盘输入“howareyou”时,由于scanf输入函数的特点是遇到空

格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并

在其后自动加上结束符“\0”。

20、设变量x和变量y都是int类型,且x=l,y=2,则printf("%d%d”,x,y,

(x,y))的输出结果是(卜

A、12

R、122

C、1,2

D、输出值不确定

标准答案:A

知识点解析:本题考查printf函数的格式和逗号表达式。printf函数在输出时,是

根据格式说明符的个数输出的,如果函数中有多余的项将不予输出;如果有输出项

少于格式说明符,则出错,不能输出正确的结果。木题中逗号表达式(x,y)只返回

y的值。此时格式说明的个数是2,而输出项的个数是3,因此,primf函数只输出

前两项。

21>以下程序的输出结果是()。#include<stdio.h>main().(inta=8,b=6,

m=l;switch(a%4){case0:m++;break;case1:m++;switch(b%3)

{default:m++:case0:m++;break;}}printf(''%d\n'',m);}

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:本题考查switch语句。因为a=8,a%4=0,所以执行case0后面的语

句,将m加1,遇到break语句跳出switch。

22、定义如下变量和数组:inti,x[3][3]={l,2,3,4,5,6,7,8,9):则下面

语句的输出结果是()。for(i=0;iV3;i++)primf(''%d'',x[i][2-i]);

A、159

B、147

C、357

D、369

标准答案:C

知识点解析:本题主要考查二维数组的使用。题中利用for循环来输出x数组中的

指定元素:①当i=0时,输出x[0][2]=3;②当i=l时,输出③当i:2

时,输出x⑵⑼=7。

23、有下列程序段:typedefslruclNODE{ininum;structNODE*next;)OLD;

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

A、以上的说明形式非法

B、NODE是一个结构体类型

C、OLD是一个结构体类型

D、OLD是一个结构体变量

标准答案:C

知识点解析:C语言允许用typedef说明一种新类型名,其一般形式为:typedef类

型名标识符。typcdcf语句的作用仅仅是使“标识符”来代表已存在的“类型名”,并未

产生新的数据类型。原有类型名依然有效。此题中,用lypedef定义了新的类型

OLD结构.所以OLD为结构体类型0

24、下列数组定义中错误的是()。

A、intx[][3]={0};

B、intx⑵[3]={{1,2),{3,4},{5,6}};

intx[][3]={{l,2,3},{4,5,6));

D>intx[2][3]={1,2,3,4,5,6};

标准答案:B

知识点解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行

的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第二维的定

义。在选项B中赋值号左边定义了一个2行3列的二维数组,而右边用3行2列的

数字进行赋初值。所以出现了边界的越界溢出错误。

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

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

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

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

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

标准答案:D

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

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

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

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

26、若定义函数\nt*func()”,则函数tunc的返回值为()。

A、一个实数

B、一个指向整型变量的指针

C、一个指向整型函数的指针

D、一个整型函数的入口地址

标准答案:B

知识点解析:本题考查函数返回值。fun函数的返回值类型为int*类型,即函数返

回一个指向整型变量的指针。

27、若有定义“inta[5],*p=a;”则正确引用数组元素的是().

A、母&a[5]

B、*a+2

C、*(p+5)

D、*(a+2)

标准答案:D

知识点。析:本题考查通过指针引用数组元素。用指针引用数组有以下3种形式:

①“(p+n)与(a+n)”表示数组元素a[n]的地址;②“*(p+n)与木(a+n)”表示数组元素

a[n|;③"p[n]=*(p+n)”,都表示数组元素a[n]。选项A、B没有这种引用形式:选

项C,“*(p+5)”是引用数组的第6个元素,而数组一共有5个元素.出现越界:选

项D,“*(a+2)”引用数组的第3个元素。

28、以下对C语言中联合类型数据的正确叙述是()。

A、定义了联合变量后,即可引用该变量或该变量中的任意成员

B、一个联合变量中可以同时存放其所有成员

C、联合中的各个成员使用共同的存储区域

D、在向联合中的一个成员进行赋值时,联合中其他成员的值不会改变

标准答案:c

知识点篇析:联合体的几个特点:①联合体所占用的内存空间为最长的成员所占

用的空间;②各个成员分量全部是从低地址方向开始使用内存单元;③联合体中

的空间在某一时刻只能保存某一个成员的数据;④联合体和结构体可以任意嵌

套。

29、有以下函数定义:intfun(doublea,doubleb){returna*b;}若以卜选项中所用

变量都已正确定义并赋值,错误的函数调用是()。

A、if(fun(x,y)){.......}

B、z=fun(fun(x,y),fun(x,y));

C、z=fun(fun(x,y)x,y);

D、fun(x,y);

标准答案:C

知识点解析:本题考查函数调用时的参数传递。选项C中第一个参数的表达式不

正确,因此不能得到正确的结果。

30、执行以下语句段后:xy的值是()。inl*pl,xy;xy=200;pt=-&xy;

xy=*pt+30;

A、200

B、170

C、260

D、230

标准答案:D

知识点解析:本题考查指针的运用。通过pt=&xy,将pl指向xy所占的内存地

址,而*pi是指斜pt所指向内存单元中的内容,即200,所以最后Xy的值为230。

31、卜.述程序的输出结果是()。#include<stdio.h>voidmain(){inta|20],

*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4:i++)

p[i]=&a[i*i+l];for(i=0;i<4;i++){k=k+*p[i];}k);}

A、10

B、18

C、6

D、数组元索引用不合法,输出结果不定

标准答案:B

知识点解析:第一个f。「循环,给数组a的20个元素分别赋值0〜19;第二个for

循环,给数组p赋值,p[0]=a[l]=l,p[l]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第

三个for循环,将数组p中元素的值进行累加,k=l+2+5+10=18o

32、有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti)

{*x=*(x+i)+l;}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);

for(i=0:i<N/2;i++){printf(,,%d,\}printff'\n'');}程序运行后的输

出结果是()。

A、1313

B、3234

C、4234

D、1234

标准答案:C

知识点解析:函数“fun(int*x,inti)”的功能是把数组元素x[i|的值加1赋给x⑼。所

以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句

中,输出数组a中的前Y个元素的值,分别是4、2、3、40

33、卜面程序的输出结果是()。#include<stdio.h>main(){char

a[]={,a,,'b','c',d,T,其'},*p;p=a;primff'%c\n",*p+4);}

A、a

B、b

C>e

D、f

标准答案:C

知识点常析:“”号的优先级比的优先级高,所以先执行“*p”;指针p指向的是

数组的首地址,因此,“*p=a",再加4得七二

34、下面函数的功能是()。sss(s,t)char*s,*t;|while(*s);while(*t)

*(s++)=*(t++);returns;)

A、将字符串S复制到字符串t中

B、比较两个字符串的大小

C、求字符串的长度

D、将字符串t续接到字符串S中

标准答案:D

知识点露析:本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到

字符串s中。

35、下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){static

intm=4;*y=s[ni];m-;)voidmain(){inta[]={1.2,3,4,5},k,x;printf("

\n'>for(k=0;k<=4;k++){sub(a,&x);printf(',%d,\x);))

A^5,4,3,2,1,

B、1,2,3,4,5,

C、0,0,0,0,0,

D、4,4,4,4,4,

标准答案:A

知识点解析:本题考查的是静态变量以及函数的实参与形参之间的地址值传递。

sub。函数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重

复使用时,变量的值保留:所以当main。函数中的for循环中语句“sub(a,&x)”;

执行时,sub函数中m的值依次是4、3、2、1、0:因为变量x进行的是地址值传

递,所以最后依次输出的是数组a的元素a[4]、a[3ha⑵、a[l],a[0]o

36、设ql和q2是指向一个int型一维数组的指针变量,k为float型变量,下列不

能正确执行的语句是()c

A、k=*ql*(*q2);

B、ql=k;

C、ql=q2;

D^k=*ql+*q2;

标准答案:B

知识点解析:本题考查指针变量的赋值操作。选项A是将指针ql和q2所指向的

变量值相乘,然后赋给k;选项B中,float型数据和指针型数据之间不能进行赋值

运算;选项C中,是两个指针变量之间的赋值;选项D中,是两个指针型变量所

指向的两个ini型数据相加。

37、下列程序的输出结果为()。main(){unionunfchar*name;intage:int

pay;)s;s.name=''zhaoming'';s.agc=32;s.pay=3000;printf(''%d\

n'\s.age);}

A、32

B、3000

C、0

D、不确定

标准答案:B

知识点解析:本题考查的是联合体的有关概念。因为联合体是各个成员共享一段存

储空间,此段存储空间最终存放的是最后存入的成员的值,所以题目中输出

s.age实际_L输出了最后存入的3000,囚为3000己经把原来存入的s.age(32)的

值覆盖。

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

A、使用宏定义可以嵌套

B、宏定义语句不进行语法检查

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

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

标准答案:D

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

宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此,不做

语法检查:②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不

是必须用大写;⑨双引号中出现的宏名不替换:④使用宏定义可以嵌套,即后定

义的宏中可以使用先定义的宏。

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

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

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

果是()。

A、1214

B、1232

C、1014

D、1020

标准答案:B

知识点解析:i=2时,fun(&a[2])返回值是:b=b+a[l]=34-3=6,b=b+b=6+6=12;i=3

时,fun(&a[3])返回值是:b=b+a[3]=12+4=16,b=b+b=16+16=320

40、已知函数的调用形式“fread(buffer,size,count,fp);”其中buffer代表的是

()o

A、一个整型变量,代表要读入的数据项总数

B、一个文件指针,指向要读的文件

C、一个指针,是指向的输入数据放在内存中的起始位置

D、一个存储区,存放要读的数据项

标准答案:C

知识点解析:数据块输入/输出函数的调用形式为:fread(buffer,size,count,

fp)ofread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存

放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据

项;是指文件型指针。

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

卷第2套

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

1、以下能正确输出字符a的语句是()。

A、printf("%s';na");

B、printff%s",'a');

C、printf(n%c",Ha");

D、printf(“%)d",'a');

标准答案:A

知识点解析:输出函数printf()的一般形式为“prinlf(”格式控制字符串”,输出项1,输

出项2,…厂,输出项的形式要和格式控制字符串中的格式控制符保持一致,“%s”为

输出字符串,“%c”为输出单个字符,“%d”为以十进制形式输出带符号整数,答案

选Ao

2、以下不能输出小写字母a的选项是()。

A、printf(',%c\n,,,,,a,');

B、printf(',%c\n,,/A,+32);

C^putchar(97);

D、putchar(,a,);

标准答案:A

知识点解析:选项A)中输出语句的输出项和格式控制符不相符,应写作

"printf("%c\n'';a,);",答案选A)。

3、有以下程序段charcl,c2,c3;scanf("%c%c%c”,&cl,&c2,&c3);若要给cl、c2、c3

分别输入字母A、B、C,则以下对输入形式的描述正确的是()。

A、字母A、B、C之间不能有分隔符

B、字母A、B、C之间可以用空格分隔

C、字母A、B、C之间可以用回车符分隔

D、字母A、B、C之间可以用Tab键分隔

标准答案:A

知识点解析:考查scanf函数的格式输入,输入的格式要严格遵循“格式控制串”中

的格式,如果”格式控制串”中没有非格式字符,则输入时也不能输入非格式字符,

答案选A。

4、设有定义:chars[81];imi=0;以下不能将一行(不超过80个字符)带有空格的

字符串正确读入的语句或语句组是()。

A、scanf("%s",s);

B、while((s[i-H-]=getcharO)!-\n,);s[i]=>\O*;

C、gets(s);

D^do{scanf(M%c",&s[i]);}whilc(s[i++]!='\n');s[i]='\0';

标准答案:A

知识点解析:函数scanf()输入字符串时默认空格为间隔符,所以不能输入空格,

答案选A。

5、有以下程序段#includeintj;floaty;charname[50];scanf("%2d%f%sH,&j,&y,

name);当执行上述程序段,从键盘上输入555667777abc后,y的值为()。

A、566.0

B、55566.0

C、7777.0

D、566777.0

标准答案:A

知识点解析:函数scanf()输入字符串时默认空格为间隔符,格式控制符若为“%2d”

表示控制输入语句的宽度为2,程序中输入为555667777abc时,只把55赋予变量

x,而把566赋予变量y,7777abe赋予变量name,所以答案选A。

6、有以下程序段charname[20];intnum;scanf("nanie=%snum=%d",name,&num);

当执行上述程序段,并从键盘输入:name=Lilinum=l入lv回车〉后,name的值为

()O

A、Lili

B、name=Lili

C、Lilinum=

D、name=Lilinum=1001

标准答案:A

知识点解析:考查scanf的格式输入。如果scanf的””内有普通字符,则程序调试的

时候必须原样输入,所以字符数组name接受到的字符为Lili,答案选A。

7、以下正确的字符串常量是()。

标准答案:A

知识点解析:字符串常量是由两个双引号引起来的若干字符所构成的字符序列,而

且?\\\?不是C语言合法字符,所以“\\\"也不是合法的字符串常量,答案选A。

8、以下语句的输出结果是printf("%d\n",strlen("\t\”\065\xff\n"));()。

A、5

B、8

C、14

D、输出项不合法,无正常输出

标准答案:A

知识点解析:字符串“\N\065\xff\n”中共有五个转义字符,分别是?\t?、?\

”?、?\065?、?\n?,各代表一个字符,strlen。计算的是字符串的实际长度

(不包含结束标识符),所以输出结果为5,答案选A。

9、有如下程序#include#includernain(){printf("%d\n",strlen("O\nOl}程序运

行后的输出结果是()。

A、6

B、8

C、9

D、4

标准答案:A

知识点解析:字符串"O\nOU\l”中共有两个转义字符,分别是?\n?、?\1?,各代表一

个字符,s3en()计算的是字符串的实际长度(不包含结束标识符),所以输出结果

为6,答案选A。

10、有三个关系R、S和R如下:

RST

BCDBCD

a0kl□二a0kl

b1nl□2J

MIJM

EJ2JEJ

得到关系T,则所使用的运算为()。

A、并

B、自然连接

C、笛卡尔积

D、交

标准答案:D

知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量

必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔

积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以

C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组

所以取得是交运算,选择D)。

11、若有定义inlx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):

(y++)中的条件表达式(x-y)等价的是()。

A、(x-y<0||x-y>0)

B、(x-y<0)

C、(x-y>0)

D、(x-y==O)

标准答案:A

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

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

值;若为“假“,取“表达式3”的值作为整个条件表达式的值。本程序中要选能判定

(x-y)为嗔”的语句,即K!=y,或者(x-yvO||x-y>0),选A。

12>有以下程序#includemain(){chara=,H,;a=(a>='A'&&av=Z)?(a程2):a;

primf("%c\n”,a);}程序运行后的输出结果是()。

A、h

B、H

C、A

D、A

标准答案:A

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

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

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

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

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

13、有以卜程序#includemain(){intx=l,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;

elsey+=3;printf("%d\n",y);}程序运行后而输出结果是()。

A、0

B、2

C、1

D、3

标准答案:A

知识点解析:在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执

行,y值没有发生改变,答案选A。

14、若有定义:floatx=L5;inta=l,b=3,c=2;则正确的switch语句是()。

A^switch(a+b){case1:printf(H*\n");case2+1:printf("**\n");}

B、switch((int)x);{case1:printf("*\n");case2:printf(n**\n");}

C、switch(x){case1.0:printf(M*\n");case2.0:printf("**\nH);}

D、switch(a+b){case1:printf("*\nM);casec:printf("**\n");}

标准答案:A

知识点解析:switch(表达式)后不能有分号,选项B)错误;switch语句的圆括号

中表达式的值必须为整型或者字符型,不能为实型,选项C)错误:case后面的表

达式可以是求得整型量和字符型量的常量表达式,但是常量表达式中不能含有变

量,选项D)错误;答案选A)。

15、若变量已正确定义,在if(W)printf("%d\n”,k);中,以下不可替代W的是

()0

A、a<>b+c

ch=getchar()

C、a==b+c

D、D

E、a++

标准答案:A

知识点解析:C语言中没有符号“<>",答案选A。

16、有以下程序段#includeinta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;

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

A、a=10b=50c=10

a=10b=50c=30

C、a=10b=30c=10

D、a=50b=30c=50

标准答案:A

知识点解析:if语句的形式为“if(表达式)语句体”,若语句体为复合语句,则必须

用”{}”括起来,否则只会执行if(表达式)下的第一条语句。程序中"c=a;“不属于if语

句体。if语句表达式为假,对应语句体不执行。接下来执行“c=a;",c的值变为

10,a.b的值不变,所以答案选A。

17、设有定义:inta=l.b=2,c=3;以下语句中执行效果与其它三个不同的是()。

A、if(a>b)c=a;a=b;b=c;

B、if(a>b){c=a,a=b,b=c;J

C^if(a>b)c=a,a=b,b=c;

D、if(a>b){c=a;a=b;b=c;|

标准答案:A

知识点解析:if语句的形式为”if(表达式)语句体”,若语句体为复合语句,则必须

用“{}”括起来,否则只会执行if(表达式)下的第一条语句。只有选项A)只执行第

一条语句k二%”,其余三条语句均执行,所以答案选A)。

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

是()。

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

B、必须是整数值

C、必须是正数

D、必须是逻辑值

标准答案:A

知识点解析:if语句的一般形式为”if(表达式)语句体",其中,“表达式”可以是任意

合法的C语言表达式,所以计算出的结果可以是任意合法的数值,所以答案选

Ao

19、有如下嵌套的if语句if(a

A、k=(a

B、k=(ac)?b:c);

C、k=(a

D、k=(a

标准答案:A

知识点解析:一个条件运算符”表达式1?表达式2:表达式3”相当于一个if双分支

选择结构”if(表达式1)表达式2clsc表达式3”。if-clsc的嵌套也和条件运算符的嵌

套是对应的,所以答案选A。

20有以下程序#inckidemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)

printf("%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果()。

A、大于3且不等10的整数

B、不等于10的整数

C、大于3或等于10的整数

D、小于3的整数

标准答案:A

知识点解析:程序为嵌套的if选择结构,在else后面又嵌套了一个if单分支选择

结构,执行内层嵌套的if语句体时才会输出x的值。进入else分支的条件是x大

于3,而进入嵌套的if语句的条件是x不能为10,所以答案选A。

21、以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是()。

A、if((a>b)&&(b>c))k=l;elsek=0;

if((a>b)||(b>c))k=1;elsek=0;

C、if(a<=b)k=0;elseif(b<=c)k=l;

D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;

标准答案:A

知识点解析:一个条件运算符”表达式1?表达式2:表达式3”相当于一个if双分支

选择结构”if(表达式1)表达式2else表达式3”,条件运算符的嵌套也和的嵌

套是对应的,所以该条件语句可以写作"if(a>b)if(b>c)k=l;elsek=0;elsek=0;"o即

是当a>b并且b>c时,k=l,其余情况k=0,所以答案选A)。

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

A^switch(a==l){caseO:a=b;break;casel:a++;}

B、switch(a)(casel:a=b;break;default:a++;}

C、switch(a){default:a+-i-;break;case1:a=b;}

D、switch(a==l){casel:a=b;break;case0:a++;)

标准答案:A

知识点解析:题目程序的意思是当a值为1的时候,将b值赋给a,若a值不为1

则a自加1。选项A)中,若a的值为1,则表达式a==l的值为1,进入case1分

支,a自力口1,而a值不为。时,执行“a=b;break;",和题目程序执行的语句不一

致,所以答案选A)。

23有以下程序#inckidemain(){inta=l,b=2,c=3,d=0;if(a==l&&b++==2)if

(b!=2||c-!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);else

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

A、1,3,3

B、1,3,2

C、1,2,3

D、3,2』

标准答案;A

知识点解析:else总是与前面距离它最近的且未曾配对的if语句配对。

"a=l,b=2,c=3,d=0",所以语句“if(a==l&&b++=2)"的判定条件为真,之后b自加

1,其值为3。而语句“if(b!=2||c--!=3)”的判定条件也为真,根据逻辑运算符的“短路

求值”原理,表达式“b!=2”为真后整个逻辑表达式的值就为真,“。・!二3”不再计算,

所以答案选A。

24、下列条件语句中,输出结果与其他语句不同的是()。

A、if(a==0)prinlf("%d\n",x);elseprinlf("%d\n",y);

B、if(a==0)printf("%d\nM,y);elseprintf("%d\n",x);

C>if(a!=0)printf("%d\nu,x);elseprintf("%d\n'\y);

D、if(a)printf("%d\nH,x);elseprintf("%d\n",y);

标准答案:A

知识点解析:选项A)的逻辑是当a为0就输出x的值,否则输出y的值,而选项

B)、C)、D)的逻辑正好相反,答案选A)。

25有以下程序#includemain(){intx=l,y=2,z=3;if(x>y)if(y

A、1

B、41

C、2

D、331

标准答案:A

知识点解析:嵌套的if-else语句执行条件不满足所以整个条件嵌套语句并没有执

行,只执行了最后一句"printf("%d\n”,x++);\输出x的值为1,答案选A。

26、若有以卜程序#includemain(){inta=l,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\nM,a,b,c,d);}则程序的输出结果是

()o

A、222,4

B、2,1,2,-1

C、5,1,2,-1

D、1,234

标准答案:A

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

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

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

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

27、若有以下程序#includemain(){inta=l,b=2,c=3,d=4,r=0;if(a!=l);elser=l;if

(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输

出结果是()。

A、7

B、10

C、6

D、3

标准答案:A

知识点解析:else总是与前面距离它最近的且未曾配对的if语句配对。”if(a!=l);

else『1;”执行的是空语句";“if(b=2)r+=2;else;”执行的是语句”r+=2",r值为

2。”if(c!=3)r+=3;else;”执行的是空语句if(d==4)r+=4;"执行语句”r+=4”,计算

后r的值为7,输出结果为选项A)。

28、若有以下程序#includemain(){inta=l,b=2,c=3,d=4;if((a=2)&&(b=l))c=2;if

((c==3)||(d=-1))a=5;printf("%d,%d,%d,%d\n",a,h,c,d);)则程序的输出结果是

()0

A、

B、2,1,2,-1

C、2,2,2,4

D、1,2,3,4

标准答案:A

知识点解析:该程序中所有的逻辑表达式均不满足'短路求值”原理,所以所有的表

达式都需要计算,第一个if语句执行完毕之后,a=2,b=l,c=2,第二个if语句执

行完毕之后,d=-l,a=5,所以最终的a=5,b=l,c=2»d=-l,答案选A。

29、若有以下程序#includemain(){inta=l,b=2,c=3,d=4,r=0;if(a!=l);elser=l;if

(b==2)r+=2;if(c!=3);r+=3;if(d==4)r+=4;printf("%d\n'\r);}则程序的输出结果是

()o

A、10

B、7

C、6

D、3

标准答案:A

知识点解析:if语句的形式为”if(表达式)语句体”,若语句体为复合语句,则必须

用”{}”括起来,否则只会执行if(表达式)下的第一条语句。所以整个程序执行的语

句为“r=l;r+=2;r+=3;r+=4;",输出的r值为10。答案选A。

30有以下程序#inckidemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch

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

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

A、a=2,b=1

B、a=1,b=1

C、a=1,b=0

D、a=2,b=2

标准答案:A

知识点解析:break语句用于循环嵌套或者switch选择嵌套时,只能跳出当前层的

switch选择层或循环层。本程序中,先执行swilch(x),而x=l,执行case1对应的

语句块,进入嵌套的选择语句switch(y),y=0,执行case0:a++;break;止匕时a=l»

遇到break语句后跳出switch(y),没有遇到break,继续执行case2:a++;b++;

break;此时a=2,b=l0遇到break跳出switch(x)。最终a=2,b=l,输出结果为

31、有以下程序#includemain(){intk,j,s;for(k=2:k<6;k++,k++){s=l;for(j=k;

j<6;j++)s+=j;}printf(',%d\nH,s);)程序运行后的输出结果是()。

A、10

B、6

C、24

D、40

标准答案:A

知识点解析:嵌套循环,外层循环k从2循环至I」5,每次自增2,。内层循环j从k

到5,每次自增1,s为在s的基础上累加当前内层循环所有的j值。程序输出的是

最后一次外层循环时s的统计值,即k=4时,j的取值为4、5,所以s=10,答案选

Ao

32^由以下while构成的循环,循环体执行的次数是intk=0;while(k=l)k++;

()o

A、无限次

B、一次也不执仃

C、执行一次

D、有语法错,不能执行

标准答案:A

知识点解析:循环条件是“k=l",该表达式恒为真,所以程序构成死循环,答案选

Ao

33、有以下程序#includemain(){doublex=2.0,y;if(x<0.0)y=0.0;elseif((x<5.0)

&&(!x))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);)

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

A、0.500000

B、0.250000

C、0.000000

D、1.000000

标准答案:A

知识点解析:if多分支选择结构中,从上到下依次判定if(或elseif)后的圆括号

内的表达式的值,只有之前的if(或elseif)条件都为假时,才会判定下一条else

if语句的条件是否成立,该程序中,执行的是语句“日seif(x<10.0)产1.0/x;",所

以y的计算结果为0.5,答案选A。

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

A、else不是一条独立的语句,它只是if语句的一部分

R、对于逻辑表达式:a++&&h++,设a的值为0,则求解表达式的值后,h的值

会发生改变

C、、对于逻辑表达式:a++||b++,设a的值为1,贝]求解表达式的值后,b的值会

发生改变

D、关系运算符的结果有三种:0,1,-1

标准答案:A

知识点解析:else必须与if配对才能构成一个完整的if选择结构,所以else语句是

if语句的一部分,选项A)正确;逻辑或(与)表达式满足“短路求值”原理.,对于

逻辑与,若第一个表达式的值为假,整个表达式的值为假,第二表达式不再计算。

同样,对于逻辑或,若第一个表达式的值为真,则整个表达式的值为真,第二表达

式也不再计算。所以b的值不一定会改变,选项B)、C)错;关系运算符的结果

只有两种情况:“0“或“1",选项D)错;答案选A)。

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

A、if子句和else子句中可以是任意的合法的C语句

B、if语句只能嵌套一层

C、不能在else子句中再嵌套if语句

D、改变if-clsc语句的缩进格式,会改变程序的执行流程

标准答案:A

知识点解析:C语言中,选择嵌套可以多层,嵌套的if语句既可以放在if子句中,

也可以放在else子句中,选项C)错;else总是与前面最近的且未曾配对的if语句

配对,程序的执行流程和缩进与否无关,选项D)错;选项A)的表述正确,所以

答案选A)。

36、若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的swiich语句是

()O

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

B>switch(a+b){easel:case3

温馨提示

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

评论

0/150

提交评论