全国计算机二级C语言模拟测试含详细解析 6.docx
- 文档编号:25198605
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:30
- 大小:35.44KB
全国计算机二级C语言模拟测试含详细解析 6.docx
《全国计算机二级C语言模拟测试含详细解析 6.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言模拟测试含详细解析 6.docx(30页珍藏版)》请在冰豆网上搜索。
全国计算机二级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是代
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机二级C语言模拟测试含详细解析 全国计算机 二级 语言 模拟 测试 详细 解析