全国计算机二级C语言模拟测试含详细解析 6.docx

上传人:b****6 文档编号:12525968 上传时间:2023-06-06 格式:DOCX 页数:30 大小:35.44KB
下载 相关 举报
全国计算机二级C语言模拟测试含详细解析 6.docx_第1页
第1页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第2页
第2页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第3页
第3页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第4页
第4页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第5页
第5页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第6页
第6页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第7页
第7页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第8页
第8页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第9页
第9页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第10页
第10页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第11页
第11页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第12页
第12页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第13页
第13页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第14页
第14页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第15页
第15页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第16页
第16页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第17页
第17页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第18页
第18页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第19页
第19页 / 共30页
全国计算机二级C语言模拟测试含详细解析 6.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

全国计算机二级C语言模拟测试含详细解析 6.docx

《全国计算机二级C语言模拟测试含详细解析 6.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言模拟测试含详细解析 6.docx(30页珍藏版)》请在冰点文库上搜索。

全国计算机二级C语言模拟测试含详细解析 6.docx

全国计算机二级C语言模拟测试含详细解析6

1.面向对象方法中,实现对象的数据和操作结合于统一体中的是

A.结合

B.封装

C.隐藏

D.抽象

正确答案:

B你的答案:

解析:

【解析】对象的基本特点是:

标识唯一性、分类性、多态性、封装性、模块独立性好。

封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式,B选项正确。

 

2.在进行逻辑设计时,将E-R图中实体之间联系转换为关系数据库的

A.关系

B.元组

C.属性

D.属性的值域

正确答案:

A你的答案:

解析:

【解析】E-R模型和关系模式的对照表如下

由表中可以看出,联系转换为关系数据库的关系,A选项正确。

 

3.线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有

A.节省存储空间

B.插入与删除运算效率高

C.便于查找

D.排序时减少元素的比较次数

正确答案:

B你的答案:

解析:

【解析】顺序表和链表的优缺点比较如下表:

由表中可以看出链式存储插入与删除运算效率高,故B选项正确。

 

4.深度为7的完全二叉树中共有125个结点,则该完全二叉树中的叶子结点数为

A.62

B.63

C.64

D.65

正确答案:

B你的答案:

解析:

【解析】在树结构中,定义一棵树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1,树的最大层次称为树的深度。

完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。

深度为6的满二叉树,结点个数为2^6-1=63,则第7层共有125-63=62个叶子结点,分别挂在第6层的左边62个结点上,加上第6层的最后1个叶子结点,该完全二叉树共有63个叶子结点,故B选项正确。

 

5.下列叙述中正确的是

A.所谓有序表是指在顺序存储空间内连续存放的元素序列

B.有序表只能顺序存储在连续的存储空间内

C.有序表可以用链接存储方式存储在不连续的存储空间内

D.任何存储方式的有序表均能采用二分法进行查找

正确答案:

C你的答案:

解析:

【解析】"有序"是特指元素按非递减排列,即从小到大排列,但允许相邻元素相等,A选项错误。

有序表可以顺序存储也可以链式存储,B选项错。

能使用二分法查找的线性表必须满足两个条件:

用顺序存储结构;线性表是有序表,D选项错误。

故C选项正确。

 

6.设二叉树如下:

则后序遍历序列为

A.ABDEGCFH

B.DBGEAFHC

C.DGEBHFCA

D.ABCDEFGH

正确答案:

C你的答案:

解析:

【解析】二叉树遍历可以分为3种:

前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。

本题中前序遍历为ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA,故C选项正确。

 

7.计算机软件包括

A.算法和数据

B.程序和数据

C.程序和文档

D.程序、数据及相关文档

正确答案:

D你的答案:

解析:

【解析】计算机软件由两部分组成:

一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。

故D选项正确。

 

8.下面描述中不属于软件需求分析阶段任务的是

A.撰写软件需求规格说明书

B.软件的总体结构设计

C.软件的需求分析

D.软件的需求评审

正确答案:

B你的答案:

解析:

解析】需求分析阶段的工作可以分为4个方面:

需求获取、需求分析、编写需求规格说明书和需求评审。

故B选项正确。

 

9.当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的

A.逻辑独立性

B.物理独立性

C.应用独立性

D.空间独立性

正确答案:

A你的答案:

解析:

【解析】数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。

故A选项正确。

 

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

则由关系R和S得到关系T的操作是

A.并

B.投影

C.交

D.选择

正确答案:

A你的答案:

解析:

【解析】用于查询的3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。

常用的扩充运算有交、除、连接及自然连接等。

投影,从关系模式中指定若干个属性组成新的关系,T相较于R没有缺少属性,故B选项错误。

选择,从关系中找出满足给定条件的元组的操作称为选择,T相较于R增加了元组,故D选项错误。

交:

R∩S结果是既属于R又属于S的记录组成的集合,T中元组多于R与S,故C选项错误。

并:

R∪S是将S中的记录追加到R后面,与题目中结果相符,故A选项正确。

 

11.以下叙述正确的是

A.C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.obj的二进制文件

B.C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.exe的可执行文件

C.C编译程序把文件后缀为.obj的二进制文件编译成文件后缀为.exe的可执行文件

D.链接程序把文件后缀为.c的源程序文件链接成文件后缀为.exe的可执行文件

正确答案:

A你的答案:

解析:

【解析】C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序.exe,故排除B,C,D选项,答案选A选项。

 

12.以下叙述正确的是

A.循环结构、选择结构、顺序结构都是结构化程序的基本结构

B.计算机可以直接执行C语言程序,不需要做任何转换

C.过于复杂的算法不能使用N-S流程图描述

D.只有不超过20步操作步骤的算法才是简单算法

正确答案:

A你的答案:

解析:

【解析】计算机只能识别机器语言,C语言是高级语言,计算机无法直接执行,排除B选项;N-S流程图是复杂流程算法的描述手段,因此C选项错误;算法的复杂与简单,不能用操作步骤数来衡量,D选项错误;循环结构、选择结构、顺序结构都是结构化程序的基本结构,答案为A选项。

 

13.有如下程序

#include

main()

{

intx=072;

printf("X=%d.\n",x+1);

}

程序运行后的输出结果是

A.X=115

B.X=73

C.X=59.

D.X=72.

正确答案:

C你的答案:

解析:

【解析】x定义为072,表示x为一个八进制数,%d代表十进制整数输出,x需要转化成十进制为58,在输出时,x+1=59,再输出,答案为C选项,另外输出时不能忘记"."。

 

14.下面叙述正确的是

A.任何复杂任务都可以分解成简单子任务

B.C语言程序的所有函数只能处于同一个源文件中WEr

C.包含全部三种基本结构的程序才是结构化程序

D.C语言程序可以定义多个不同内容的main函数

正确答案:

A你的答案:

解析:

【解析】C语言程序的函数可以处于不同的源文件,B选项错误;包含一种基本结构的程序就是结构化程序,C选项错误;C语言只可以定义一个main函数,D选项错误,答案为A选项。

 

15.以下叙述正确的是

A.C程序总是以main()作为程序执行的起始行

B.main()函数若不带参数,其后面的一对圆括号可省略

C.函数体内的定义语句和可执行语句允许任意穿插出现

D.C语言中的语句之间必须用分号作为分隔符

正确答案:

A你的答案:

解析:

【解析】main()函数后面的括号告诉编译器这是一个函数,不可以省略,排除B选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除C选项;C语言中的某些语句可以不用分号,例如if语句,故D选项错误;答案为A选项。

 

16.有以下程序

#include

main()

{

charc;

for(;(c=getchar())!

='#';)putchar(++c);

}

执行时如输入为:

abcdefg##<回车>,则输出结果是

A.abcdefg

B.bcdefgh$

C.bcdefgh$$

D.bcdefgh

正确答案:

D你的答案:

解析:

【解析】for语句中执行的含义是,每次把输入赋给c值,如果不等于'#',则执行putchar(++c),即将当前c值在ASCII码上+1后再输出字符型c值,c的值等于'#',则终止循环,所以输出应该是bcdefgh,答案为D选项。

 

17.有以下程序

#include

main()

{inta=1,b=0;

for(;a<5;a++)

{if(a%2==0)break;

continue;

b+=a;

}

printf("%d\n",b);

}

程序运行后的输出结果是

A.0

B.1

C.10

D.4

正确答案:

A你的答案:

解析:

【解析】题干中for循环有break和continue语句,且均放在b+=a语句前面,无论if条件是否满足,b+=a都不会被执行,因此b值始终为0,答案为A选项。

 

18.有以下程序

#include

main()

{

intx=0x13;

if(x=0x12)printf("True");

printf("False\n");

}

程序运行后的输出结果是

A.True

B.TrueFalse

C.False

D.TrueFalseTrue

正确答案:

B你的答案:

解析:

【解析】if(x=0x12)表示x=0x12,此为赋值语句,表达式的值为0x12,非零为真,执行printf("True"),再执行printf("False\n"),因此答案为B选项,注意赋值操作符"="与相等操作符"=="的区别。

 

19.为了避免在嵌套的if-else语句中产生二义性,C语言规定与else子句配对是

A.与其在同一行上的if子句

B.在其之后最近的不带else的if子句

C.与其缩排位置相同的if子句

D.在其之前最近的不带else的同层if子句

正确答案:

D你的答案:

解析:

【解析】注意if与else的配对关系。

原则是if总是与它上面最近的、未配对的else配对,因此答案为D选项。

 

20.有以下程序

#include

main()

{inti,a;

for(i=0;i<=10;i++)a=i;

printf("%d,%d\n",i,a);

}

程序的运行结果是

A.11,10

B.10,10

C.10,11

D.11,11

正确答案:

A你的答案:

解析:

【解析】当i=10时,i值赋值给a,同时i+1,再判定是否满足i<=10,i=11时,不满足条件,结束循环。

循环结束时,输出i,a的值为11,10,答案为A选项。

 

21.有以下程序

#include

voidfun(inta[],intn)

{

inti=0;

for(i=0;i

{

if(i%2==0)

a[i]+=n;

else

a[i]-=n;

}

}

main()

{

intc[5]={5,4,3,2,1},i;

fun(c,5);

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

printf("\n");

}

程序运行后的输出结果是

A.10,-1,8,-3,6,

B.5,4,3,2,1,

C.10,2,8,4,6,

D.5,-1,3,-3,1,

正确答案:

A你的答案:

解析:

【解析】fun()函数功能是:

对数组中,下标为偶数的元素累加5,下标为奇数的元素减去5,所以执行完fun()函数后,数组c变为10,-1,8,-3,6,A选项正确。

 

22.有以下程序

#include

#defineN4

voidfun(inta[][N])

{

inti;

for(i=0;i

a[0][i]=a[N-1][N-1-i];

}

main()

{intx[N][N]={{1,2,3,4},

{5,6,7,8},

{9,10,11,12},

{13,14,15,16}},i;

fun(x);

for(i=0;i

printf("\n");

}

程序运行后的输出结果是

A.16,6,11,16,

B.1,6,11,16,

C.4,7,10,13,

D.17,17,17,17,

正确答案:

A你的答案:

解析:

【解析】程序最后输出x[0][0],x[1][1],x[2][2],x[3][3],其中只有x[0][0]的值在fun函数中发生改变,在fun函数中,当i=0时,x[0][0]=x[3][3]=16,因此答案为A选项。

 

23.有如下程序

#include

intconvert(int*data)

{

return(*data)++;

}

main()

{

intdata=56;

convert(&data);

printf("%d,",data);

data=convert(&data);

printf("%d,\n",data);

}

程序运行后的输出结果是

A.56,57,

B.57,58,

C.57,57,

D.55,57,

正确答案:

C你的答案:

解析:

【解析】convert函数每次都定义了一个指针*data,再将指针变量*data对应地址的值进行加一处理,再返回加1前的值作为结果,因此答案为C选项。

 

24.设有如下程序段

inta[1]={0};

intb[]={9};

charc[3]={"A","B"};

chard="12";

以下叙述正确的是

A.a,b的定义合法,c,d的定义不合法

B.a,b,c,d的定义都是合法的

C.a,b,c的定义是合法的,d的定义不合法

D.只有a的定义是合法的

正确答案:

A你的答案:

解析:

【解析】inta[1]={0}表示定义一个数组a[1]初值为0,intb[]={9},表示定义一个数组b,其中只有一个值9,系统自动识别数组有1个元素。

charc[3]={"A","B"},数组元素为字符串,需要用二维数组来表示,C选项错误;chard="12";,字符串常量不能赋值给字符变量,D选项错误;因此答案为A选项。

 

25.设有定义:

intx=2,*p=&x;floaty=3.0;charz='c';,则立即进行以下运算有安全隐患的是

A.p++;

B.x++;

C.y++;

D.z++;

正确答案:

A你的答案:

解析:

【解析】由于x是一个整形变量,将x地址赋值给p指针后,A选项中p++对指针p进行加1运算,p指针的值相当于加4(整型变量的地址占4个字节),此时p指向了未知的内存地址,对未知内存地址进行操作具有安全隐患,故答案为A选项。

 

26.有以下程序

#include

doublefun(doublea)

{

doublex;

x=a-(int)a;

returnx;

}

main()

{

doublea=3.1415;

printf("%f\n",fun(a));

}

程序的运行结果是

A.3.000000

B.3.141500

C.0.141500

D.0.000000

正确答案:

C你的答案:

解析:

【解析】这里考查了强制转换的概念,在fun函数中,x=a-(int)a表示x取值为a的小数部分,因此,输入a为3.1415,输出x=0.141500,答案为C选项。

 

27.有以下程序

#include

#include

char*a="you";

char*b="WelcomeyoutoBeijing!

";

main()

{char*p;

p=b;

while(*p!

=*a)p++;

p+=strlen(a)+1;

printf("%s\n",p);

}

程序运行后的输出结果是

A.Beijing!

B.youtoBeijing!

C.WelcomeyoutoBeijing!

D.toBeijing!

正确答案:

D你的答案:

解析:

【解析】while函数判断p指针指向地址的内容是否和a指针指向地址的内容相等,如果不是,则移动指针p+1,当p指向*b字符串中的'y'时,和*a首地址元素相等,退出while语句后,p再向右移动a字符串长度+1个单位地址,此时p指向't',输出't'及剩余的字符串,答案为D选项。

 

28.有如下程序

#include

#include

main()

{

printf("%d\n",strlen("0\t\nA011\1"));

}

程序运行后的输出结果是

A.8

B.9

C.7

D.10

正确答案:

A你的答案:

解析:

【解析】strlen是求字符串长度的函数,"0\t\nA011\1"是一个长度为8的字符串,其中\t、\n、\1均为转移字符常量,但是长度也是1,因此输出结果是8,答案为A选项。

 

29.有如下程序

#include

intsum(intdata)

{

staticintinit=1;

returninit+=data;

}

main()

{

inti;

for(i=1;i<=1;i++)

printf("%d,",sum(i));

printf("\n");

}

程序运行后的输出结果是

A.2,

B.2,3,

C.3,

D.1,

正确答案:

A你的答案:

解析:

【解析】在输出函数中,调用sum函数,sum函数作用是定义一个常数init=1,对Init进行叠加主函数传递的data值,随后将和返回给主函数,因此输出为2,答案为A选项。

 

30.有以下程序

#include

main()

{

chars1[]="programe",s2[]="Language";

char*p1=s1,*p2=s2;

intk;

for(k=0;k<8;k++)

if(*(p1+k)==*(p2+k))

printf("%s\n",(p1+k));

}

程序的运行结果是

A.grameamee

e

B.gae

C.programe

D.无输出字符

正确答案:

A你的答案:

解析:

【解析】定义两个指针变量p1,p2,分别指向数组s1,s2首地址,在for循环中,比较两个指针对应地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串,答案为A选项。

 

31.以下针对全局变量的叙述错误的是

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

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

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

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

正确答案:

C你的答案:

解析:

【解析】在不同编译单位内用extern说明符来扩展全局变量的作用域,extern可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域,答案为C选项。

 

32.有以下程序

#include

#include

typedefstructstu{

charname[10];

chargender;

intscore;

}STU;

voidf(STU*c)

{

strcpy(c->name,"Qian");

c->gender='f';

c->score=350;

}

main()

{

STUa={"Zhao",'m',290},b;

b=a;

f(&b);

printf("%s,%c,%d,",a.name,a.gender,a.score);

printf("%s,%c,%d\n",b.name,b.gender,b.score);

}

程序运行后的输出结果是

A.Zhao,m,290,Qian,f,350

B.Zhao,m,290,Qian,m,290

C.Zhao,m,290,Zhao,m,290

D.Zhao,m,290,Qian,m,350

正确答案:

A你的答案:

解析:

【解析】本题定义了一个结构变量structstu,并且命名为STU,STU结构中包含三个数据。

main函数中,

首先定义两个结构体STU类型的变量a,b,并对a完成初始化,然后将a赋值给b,使得结构体a,b的值都是{"Zhao",'m',290},然后调用f函数,f函数的功能是将形参结构体指针c指向的结构体赋值为{"Qian",'f',350},由于形参是指针,c指向的结构体就是b,所以实参b的值被修改为{"Qian",'f',350},而a的值不变,答案为A选项。

 

33.下面关于编译预处理的命令行,正确的是

A.#definePAI3.14

B.#DefineEps0.00001

C.##DEFINEFALSE0

D.#defineintINT

正确答案:

A你的答案:

解析:

【解析】宏定义用法一般表达式为#define宏名字符串,A选项满足宏定义用法;

C语言中是区分大小写的,define属于C语言的关键字,不可以大写,因此B,C选项错误;D选项中,int是代

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2