填空题练习及详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、填空题
二、填空题
1. 数据的逻辑结构有线性结构和 【1】 两大类。
这道题您没有回答:× 这道题总分为:2.0
【1】非线性结构
解析:数据的逻辑结构有线性结构和非线性结构两大类。
2. 顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。
这道题您没有回答:× 这道题总分为:2.0
【2】相邻
解析:常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列存储。
其
中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。
3. 一个类可以从直接或间接的祖先中继承所有属性和方法。
采用这个方法提高了软件的
【3】 。
这道题您没有回答:× 这道题总分为:2.0
【3】可重用性
解析:本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大
大减少了程序中的冗余,提高软件的可重用性。
4. 软件工程研究的内容主要包括: 【4】 技术和软件工程管理。
这道题您没有回答:× 这道题总分为:2.0
【4】软件开发
解析:基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件
开发技术和软件工程管理。
软件开发技术包括:软件开发方法学、开发过程、开发工具和
软件丁程环境,其主体内容是软件开发方法学。
软件工程管理包括:软件管理学、软件工
程经济学,以及软件心理学等内容。
5. 关系操作的特点是 【5】 操作。
这道题您没有回答:× 这道题总分为:2.0
【5】集合
解析:在关系操作中,所有操作对象与操作结果都是关系。
而关系定义为元数相同
的元组的集合。
因此,关系操作的特点是集合操作。
6. C++中封装性、继承性和 【6】 是面向对象思想的主要特征。
这道题您没有回答:× 这道题总分为:2.0
【6】多态性
解析:面向对象系统包含了三个特征―封装性、继承性和多态性,这三个特征可以
很好的实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定行为。
7. 下面程序的结果为 【7】 。
#include<iostream.h>
void main( )
{
int a=1,b=2;
bool c=1;
if((a>b)||c) cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
这道题您没有回答:× 这道题总分为:2.0
【7】true
解析:本题考查的是对于逻辑运算符号的理解,“||”运算符的任何一边取值为真,则整个运算结果为真。
8. 下列for语句的循环次数为【8】。
for(int a=0,b=1;b&&a<5;a++);
这道题您没有回答:× 这道题总分为:2.0
【8】5
解析:因为b的值为1,所以b&&a<5相当于a<5,当a=5时退出循环,一共进行5次循环。
9. 下面程序的输出结果是【9】。
#include<iostream.h>
void main( )
{
int a[6]={1,2,3,4,5,6};
for(int i=0;i<5;i++)
cout<<a[i]<<"";
cout<<endl;
}
这道题您没有回答:× 这道题总分为:2.0
【9】 1 2 3 4 5
解析:本题考查的是考生使用简单循环输出数组元素的能力,因为结束条件是i<5,而i初始值为0,所以只会输出前5个元素。
10. C++程序是从 【10】 函数开始执行的。
这道题您没有回答:× 这道题总分为:2.0
【10】main
解析:所有的C++语言程序都是从main函数开始执行,而普通函数的存在是为了简化main函数的复杂程度。
11. 假定A为一个类,则语句A(A &a);为该类 【11】 函数的原型说明。
这道题您没有回答:× 这道题总分为:2.0
【11】拷贝构造
解析:本题考查的是拷贝构造函数的定义,它是一种特殊的成员函数,作用是使用一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名: :拷贝构造函数名(类名&引用名)。
12. 派生类构造函数的执行顺序是先执行 【12】 的构造函数,然后执行成员对象的构造函数,最后执行 【13】 的构造函数。
这道题您没有回答:× 这道题总分为:2.0
【12】基类
【13】派生类
解析:本题主要考查的是派生类构造函数的执行顺序,在C++语言中构造函数的执行顺序足先基类后派生类,而析构函数的执行顺序正好相反,是先调用派生类后调用基类。
13. 类模板不同于函数模板,类模板只可用 【14】 型参数。
这道题您没有回答:× 这道题总分为:2.0
答案:【14】类
解析:本题考查的是类模板的定义,C++语言中模板分为两种:类模板和函数模板,类模板只能用于类型参数,函数模板可以重载。
14. 下列程序的执行结果为【15】。
#include
void main( )
cout.fill( ' * ' );
cout.width(10);
cout<<"hello"< }
这道题您没有回答:× 这道题总分为:2.0
【15】* * * * * hello
解析:本题考查的是C++语言的流输出操作,cout中包括的函数fill( )和width( )分别实现填充和设定显示长度的功能。
二、填空题
15. 数据结构分为逻辑结构和存储结构,循环队列属于______结构。
这道题您没有回答:× 这道题总分为:2.0
逻辑
[解析] 数据的逻辑结构主要是反映数据之间的逻辑关系,而存储结构是用来反映数据的逻辑结构在计算机存储空间中的存放形式。
循环队列主要是强调数据之间的关系,因此属于逻辑结构。
16. 队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。
允许插入的一端称作______。
这道题您没有回答:× 这道题总分为:2.0
队尾
[解析] 在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
17. 在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。
这道题您没有回答:× 这道题总分为:2.0
31
[解析] 设队列容量为m,rear>front,则队列中元素个数为 rear-front:rear <front,则队列中元素个数为m+(rear-front)。
本题rear<front,则m=32+(2-3)=31。
18. 一棵二叉树第6层(根结点为第一层)的结点最多为______个。
这道题您没有回答:× 这道题总分为:2.0
32
[解析] 二叉树第k层上,最多有2k-i(k≥1)个结点。
第6层的结点数最多是26-1=32。
区别“二叉树的结点最多数”和“某一层的结点最多数”。
前者的计算是深度为m的二叉树最多有2m-1个结点。
19. 度为10的线性表进行冒泡排序,在最坏情况下需要比较的次数为______。
这道题您没有回答:× 这道题总分为:2.0
45
[解析] 对于长度为n的线性表,在最坏情况下(即线性表中元素现在的顺序与目标顺序正好相反),冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
20. 表达式x=operator-(y,z)可以表示为______。
这道题您没有回答:× 这道题总分为:2.0
x=y-z
[解析] 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.operator-(z)或者operator-(y,z);另一种是通过运算符构成表达式,即y-z。
21. 以下函数模板max()的功能是返回数组a中最大元素的值。
请将横线处缺失部分补充完整。
template<typename T>T max(T a[],int n)
{
T m=a[0]
for(int i=1;i<n;i++)
if(a[i]>m)______;
return m;
}
这道题您没有回答:× 这道题总分为:2.0
m=a[i]
[解析] 此题考查的是函数模板、if语句、for循环等知识点。
函数模板max()的功能是返回数组a中最大元素的值,所以当a[i]是最大值时,应将a[i]的值赋值给m。
22. 重载的关系运算符和逻辑运算符的返回类型应当是______。
这道题您没有回答:× 这道题总分为:2.0
bool
[解析] 关系运算符和逻辑运算符重载后只能是true或者false,即返回值为bool型。
23. 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。
下列程序没有使用多态机制,其输出结果是______。
#include<iostream>
using namespace std;
class Base{
public:
void print(){cout<<'B';}};
class Derived:public Base{
public:
void print(){cout<<'D';}};
int main()
{
Derived* pd=new Derived();
Base* pb=pd;
pb->print();
pd->print();
delete pd;
return 0;
}
这道题您没有回答:× 这道题总分为:2.0
BD
[解析] 因为本题中的print()函数不是虚函数,所以通过基类指针pb调用的print()函数,是基类中的版本,而通过派生类指针pb调用的print()函数
是派生类中的版本。
因此,程序运行时会先输出一个字符'B',然后输出字符'D'。
24. 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用______的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。
这道题您没有回答:× 这道题总分为:2.0
基类
[解析] 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用基类的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。
25. 动态多态性通过______实现。
这道题您没有回答:× 这道题总分为:2.0
虚函数
[解析] 动态多态性是在程序运行过程中才动态确定操作所针对的对象。
动态多态性是通过虚函数实现的。
26. 执行下列程序的输出结果是______:
#include<iostream>
using namespace std;
class TestClass1
{
public:
void fun1(){cout<<"TestClass1\n";}
virtual void fun2(){cout<<"TestClass1\n";}
};
class TestClass2:public TestClass1
{
public:
void fun1(){cout<<"TestClass2\n";}
void fun2(){cout<<"TestClass2\n";}
};
void f(TestClass1&b)<b.fun1();b.fun2();}
int main()
{
TestClass2 obj;
f(obj);
return 0;
}
这道题您没有回答:× 这道题总分为:2.0
TestClass1
TestClass2
[解析] 主函数中首先定义TestClass2对象obj,然后执行“f(obj);”。
“void f(TestClass1& b)(b.fun1);b.fun2();}”语句中fun中参数为TestClass1类型的对象b,其中调用fun1()和fun2()。
基类TestClass1中的fun2()为虚函数,所以派生类中的fun2也是虚函数,所以输出为调用TestClass1中的fun1,TestClass2中的fun2。
即结果为TestClass1和TestClass2。
27. 定义一个函数名为fun,返回值为int,没有参数的纯虚函数的定义是______。
这道题您没有回答:× 这道题总分为:2.0
virtual int fun()=0;
[解析] 纯虚函数是在声明虚函数时被“初始化”为0的函数。
定义的一般形式为:virtual函数类型函数名(参数列表)=0。
所以,根据题目要求,答案为“virtual int fun()=0;”。
28. 重新定义标识符的作用域规定是外层变量被隐藏,______变量是可见的。
这道题您没有回答:× 这道题总分为:2.0
内层
[解析] 重新定义标识符的作用域规定是外层变量被隐藏,内层变量可见。
29. 如果表达式x=y*z中的“*”是作为成员函数重的运算符,采用运算符函数调用格式,该表达式还可以表示为______。
这道题您没有回答:× 这道题总分为:2.0
x=y.operator*(z)或x=y.operator*(z)
[解析] 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.operator*(z)或者operator*(y,z);另一种是通过运算符构成表达式,即y*z。
二、填空题
30. 若源程序文件abc. cpp 中只有一个函数,该函数的名称为【1】。
这道题您没有回答:× 这道题总分为:2.0
main 函数
[解析] main 函数为源程序文件中必须有的函数。
31. 要获得一数据或数据类型所占空间的字节数,应使用的操作符是【2】。
这道题您没有回答:× 这道题总分为:2.0
sizeof ()
[解析] 要获得字节数,必须用sizeof ()操作符。
32. 条件表达式(x!=9)&& (x==9)的结果是【3】。
这道题您没有回答:× 这道题总分为:2.0
[解析] 两个条件必然有一个不满足,由于两者是与的关系,所以为0。
33. 函数调用参数的传递方式有三种,值传递、【4】和引用传递。
这道题您没有回答:× 这道题总分为:2.0
指针传递
34. 若函数模板在调用时有【5】,则调用它时必须强制实例化。
这道题您没有回答:× 这道题总分为:2.0
常规参数
35. 设有二维数组int a [10][20];,则a[i][j]的地址可由首元素a[0][0]的地址来表达,由此可得访问数组元素a[i][j]的表达式为【6】。
这道题您没有回答:× 这道题总分为:2.0
*(&a [0][0]+20*4*i+4*j)
[解析] 根据二维数组的定义,它的a[i][j]元素的地址应该是&a [0] [0]+20*4*i+4*j,所以a[i][j]元素的值是*(&a [0][0]+20*4*i+4*j)。
36. 设函数f的原型是:char *f (const char*);,pf 是指向f 的指针,则pf 的定义是【7】。
这道题您没有回答:× 这道题总分为:2.0
char(*p)(const char*)=f;
[解析] 如果要使指针指向函数,函数的原型应该改为上面的形式。
37. 若结构Arith 中有一成员定义为char *op;,另有结构指针p定义为Arith *p=new Arith.,则要访问p所指对象中的。
p成员所指向的对象,应使用表达式【8】。
这道题您没有回答:× 这道题总分为:2.0
*(p->op)
[解析] 访问结构指针所指向的指针的值,首先得到指向的指针(p->op),然后计算值 *(p->op)。
38. 定义类对象时自动调用【9】为类对象中的数据成员赋初值。
这道题您没有回答:× 这道题总分为:2.0
构造函数
[解析] 构造函数在初始化对象时便会自动调用。
39. 若要使用操作符setw进行输出的格式控制,则必须用#include 命令包含【10】头文件。
这道题您没有回答:× 这道题总分为:2.0
iomanip.h
[解析] iomanip.h头文件包含控制输出字符串格式的函数。
40. C++目标程序经【11】后生成扩展名为exe 的可执行程序文件。
这道题您没有回答:× 这道题总分为:2.0
连接
[解析] 在过程中首先编译为.obj文件,然后连接为可执行文件。
41. 16位计算机中整型占【12】个字节存储空间。
这道题您没有回答:× 这道题总分为:2.0
两
[解析] 16位计算机血型占有的字节为16/8=2。
42. 要在屏幕上显示“Hello,world!”应执行语句cout <<【13】。
这道题您没有回答:× 这道题总分为:2.0
“\”Hello. world!\“”
[解析] “Hello,world!”的输出需要转义字符\,所以cout<<“\”Hello. world!\“”。
43. 表达式8&3的结果是【14】。
这道题您没有回答:× 这道题总分为:2.0
[解析] 8&3为二进制的00001000&00000011,结果为0。
二、填空题
44. 汇编语言是面向 [1] 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
这道题您没有回答:× 这道题总分为:2.0
机器
45. 对于顺序存储的队列,存储空间大小为n,头指针为P,尾指针为R。
若在逻辑上看成一个环,则队列中元素的个数为 [2] 。
这道题您没有回答:× 这道题总分为:2.0
(R-F+1)mod n
46. 有64个结点的完全二叉树的深度 [3] (根的层次为1)。
这道题您没有回答:× 这道题总分为:2.0
7
47. 在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、 [4] 。
这道题您没有回答:× 这道题总分为:2.0
判定树
48. 在扩展的E-R模型中;子类 [5] 超类所有的联系和属性。
这道题您没有回答:× 这道题总分为:2.0
继承
49. 若有:
int x=25,y=14,z=19;
则在计算表达式x++<=25&&y--<=2&&++2<=18后,z的值为 [6] 。
这道题您没有回答:× 这道题总分为:2.0
19
50. 下面程序的执行结果是 [7] 。
#include<iostream.h>
void main(){
int a=0,b=2,c=0,d=30;
if(a)
d=d-10;
else if(B)
if(!C)
d=15;
else d=20;
cout<< “d=” <<d<<end1;
这道题您没有回答:× 这道题总分为:2.0
15
51. 下面程序用于计算矩阵的两条对角线上的元素之和。
补充下列语句,实现该功能。
#include<iostream.h>
void main(){
int a[3],[3]={9,8,7,6,5,4,3,2,1};
int sum1=0,sum2=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)sum1+=a[i][j];
for(i=0;i<3:i++)
for(j=2; [8] ;j--)
if(i+j==2)sum2+=a[i][j];
}
这道题您没有回答:× 这道题总分为:2.0
j>=0
52. 分析下列程序,并写出运行结果 [9] 。
#include<iostream.h>
void main(){
int x[10]:
int i=5,*ptr=x;
*(ptr+i)=10;
cout<<x[i]<<end1;
这道题您没有回答:× 这道题总分为:2.0
10
53. 以下程序运行后的输出结果是 [10] 。
#include<iostream.h>
void main(){
char s[]=“123456”,*p;
for(p=s; p<s+2; p++)
cout<<p<<end1;
}
这道题您没有回答:× 这道题总分为:2.0
123456
23456
54. 如果要把viod fun()定义为类X的友元函数:则应在类X的定义中加入语句 [11] 。
这道题您没有回答:× 这道题总分为:2.0
friend void fun()
55. 基类的 [12] 不能被派生类的成员访问,基类的 [13] 在派生类中的性质和继承的性质一样,而基类的 [14] 在私有继承时在派生类中成为私有成员,在公有和私有保护继承时在派生类中仍为保护成员。
这道题您没有回答:× 这道题总分为:2.0
[12]私有成员 [13]公有成员 [14]保护成员
56. ios类中定义的用于控制输入输出的枚举常量中,用于控制对齐方式的常量有left、right和 [15] 。
这道题您没有回答:× 这道题总分为:2.0
internal
二、填空题
57. 线性表最常用的操作是存取第i个元素及其前趋的值,则采用 [1] 存储方式节省时间。
这道题您没有回答:× 这道题总分为:2.0
双向链表
58. 结构化程序设计方法的主要原理的是 [2] 。
这道题您没有回答:× 这道题总分为:2.0
自顶向下,逐步求精
59. 对线性表采用折半查找法,该线性表必须 [3] 。
这道题您没有回答:× 这道题总分为:2.0
采用顺序存储结构,且元素按值有序
60. 在关系代数运算中,并、笛卡尔积、投影、选择和 [4] 为基本的运算。
这道题您没有回答:× 这道题总分为:2.0
差
61. 成本效益分析的目的是从 [5] 角度评价开发一个项目是否可行。
这道题您没有回答:× 这道题总分为:2.0
经济
62. 若有:
int x=25,y=14,z=19;
则在计算表达式x++<=25&&y--<=2&&++z<=18后,z的值为 [6] 。
这道题您没有回答:× 这道题总分为:2.0
19
63. 下列程序段的输出结果是 [7] 。
#include<iostream.h>
void main()
{int i=10,sum=0;
do
{
sum=+sum+i;
i=i-2;
}while(i>=2);
cout<<sum<<end1;
}
这道题您没有回答:× 这道题总分为:2.0
30
64. 若有int x[5],*p=x;则数组元素x[3]可以表示为*(p+ [8] ),也可以
表示为p[3]。
这道题您没有回答:× 这道题总分为:2.0
3
65. [9] 是一种特殊的成员函数,户主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。
这道题您没有回答:× 这道题总分为:2.0
构造函数
66. 下列程序中,先声明一个圆类circle和一个桌子类table,另外声明一个圆桌类roundtable,它是由circle和table两个类派生的,要求声明一个圆桌类对象,并输出圆桌的高度,面积和颜色。
请填空完成程序
#include<iostream.h>
#include<string.h>
class circle{
double radius;
public:
circle(double r){radius=r;}
double get_area(){return 3.416*radius*radius;}
};
class table{
double height;
public:
table(double h)<height=h;}
double get_height(){return height;}
};
class roundtable:public table,public circle{
char *color;
public:
roundtable(double h,double r,char c[]): [10] {
color=new char[strlen(c) +1];
[11] ;
};
char*get_color(){return color;}
}:
void main(){
roundtable rt(0.8,1.0,“白色”);
cout<<"圆桌的高:"<<rt. get_height()<<end1;
cout<<"圆桌面积:"<<rt.get_area()<<end1;
cout<<"圆桌颜色:"<<n.get color()<<end1;
}
这道题您没有回答:× 这道题总分为:2.0
[10] circle(r), table(h) [11] strcpy(color, c)
67. 派生类中所定义的虚函数的 [12] 不影响对它的动态联编,即基类中已定义的虚函数,其同名函数放在派生类中的 [13] ,都可以实现运行时多态性。
这道题您没有回答:× 这道题总分为:2.0
[12]访问属性 [13]任何地方
68. 如果要在类的对象上使用运算符,除了运算符=和 [14] 以外,其它的必须都要被重载。
这道题您没有回答:× 这道题总分为:2.0
&
69. 所有的函数模板定义都是以关键字 [15] 开始的。
这道题您没有回答:× 这道题总分为:2.0
template
考试结果
计算公式((正确得分累加/小题累加总分)*总分=总得分)
大题题量总分小题累加总分正确得分累加总得分正确率
第1大题 69 0 138 0 0 0%。