笔试部分
一、选择题
1.算法的空间复杂度是指
A)算法程序的长度
B)算法程序中的指令条数
C)算法程序所占的存储空间
D)执行过程中所需要的存储空间
【参考答案】 D
2.用链表表示线性表的优点是
A)便于随机存取 B)花费的存储空间较顺序存储少
C)便于插入和删除操作 D)数据元素的物理顺序与逻辑顺序相同
【参考答案】 C
3.数据结构中,与所使用的计算机无关的是数据的
A)存储结构 B)物理结构 C)逻辑结构 D)物理和存储结构
【参考答案】 C
4.结构化程序设计主要强调的是
A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性
【参考答案】 D
5.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A)模块间的关系
B)系统结构部件转换成软件的过程描述
C)软件层次结构
D)软件开发过程
【参考答案】 B
6.检查软件产品是否符合需求定义的过程称为
A)确认测试 B)集成测试 C)验证测试 D)验收测试
【参考答案】 A
7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A)控制流 B)加工 C)数据存储 D)源和潭
【参考答案】 A
8.应用数据库的主要目的是
A)解决数据保密问题 B)解决数据完整性问题
C)解决数据共享问题 D)解决数据量大的问题
【参考答案】 C
9.在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段
【参考答案】 B
10.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
A)数据库系统 B)文件系统
C)人工管理 D)数据项管理
【参考答案】 A
11.下面关于C++语言的描述错误的是
A)C++语言支持数据封装
B)C++语言中引入友元没有破坏封装性
C)C++语言允许函数名和运算符重载
D)C++语言支持动态联编
【参考答案】 B
12.设有定义int a=1;float f=12;char c=′a′;,则下列表示错误的是
A)++a; B)f--; C)c++; D)8++;
【参考答案】 D
13.下列程序的运行结果为
#include
void main()
{ int a=2;
int b=a+1;
cout<
A)0.66667 B)0 C)0.7 D)0.66666666
【参考答案】 B
14.设int a=1,b=2;,则(a++)+b和a+++b这两个表达式的值分别为
A)3,3 B)3,4 C)4,3 D)4,4
【参考答案】 A
15.下面程序的运行结果为
#include
void main()
{ char a=′3′;
switch(a)
{ case ′3′: cout<<"3";
case ′2′: cout<<"2"; break;
default:cout<<"1"; } }
A)3 B)321 C)31 D)32
【参考答案】 D
16.有如下数组声明:int num[10];,下标值引用错误的是
A)num[10] B)num[5] C)num[3] D)num[0]
【参考答案】 A
17.存在定义int a[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的?
A)x=*pa; B)x=*(a+1); C)x=*(pa+1); D)x=a[1];
【参考答案】 A
18.下面程序的运行结果为
#include
void swap(int &a,int b)
{ int temp;
temp=a++;
a=b;
b=temp; }
void main()
{ int a=2,b=3;
swap(a,b);
cout<
A)2,3 B)3,2 C)2,2 D)3,3
【参考答案】 D
19.一个函数功能不太复杂但要求被频繁调用,应选用
A)内联函数 B)重载函数 C)递归函数 D)嵌套函数
【参考答案】 A
20.下面关于C++语言变量的叙述错误的是
A)C++语言中变量分为auto,static,extern和register四种存储类型
B)自动变量和外部变量的作用域为整个程序
C)内部静态变量的作用域是定义它的函数
D)外部静态变量的作用域是定义它的文件
【参考答案】 B
21.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为
A)public B)protected C)private D)static
【参考答案】 A
22.在C++语言程序中,对象之间的相互通信通过
A)继承实现 B)调用成员函数实现 C)封装实现 D)函数重载实现
【参考答案】 B
23.类的析构函数是在什么时候调用的?
A)类创建时 B)创建对象时 C)删除对象时 D)不自动调用
【参考答案】 C
24.通常拷贝构造函数的参数是
A)某个对象名 B)某个对象的成员名 C)某个对象的引用名 D)某个对象的指针名
【参考答案】 C
25.下面程序的运行结果为
#include
class A
{ static int n;
public:
A(){n=1;}
A(int num){n=num;}
void print(){cout<
int A::n=2;
void main()
{ A a,b (3);
a.print();
b.print();
cout<
A)11 B)13 C)23 D)33
【参考答案】 D
[NextPage]
26.下列不是描述类的成员函数的是
A)构造函数 B)析构函数 C)友元函数 D)拷贝构造函数
【参考答案】 C
27.继承机制的作用是
A)信息隐藏 B)数据封装
C)定义新类 D)数据抽象
【参考答案】 C
28.C++语言类体系中,不能被派生类继承的有
A)转换函数 B)构造函数
C)虚函数 D)静态成员函数
【参考答案】 B
29.下面程序的运行结果是
#include
class base{
protected:
int a;
public:
base(){cout<<"0";} };
class base1:virtual base{
public:
base1(){cout<<"1";} };
class base2:virtual base{
public:
base2(){cout<<"2";} };
class derived:public base1,public base2{
public:
derived(){cout<<"3";} };
void main()
{ derived obj;
cout<
A)0123 B)3120 C)0312 D)3012
【参考答案】 A
30.对于类定义
class A{
public:
virtual void func1(){}
void func2(){} };
class B:public A{
public:
void func1(){cout<<″class B func 1″<
virtual void func2(){cout<<″class B func 2″<
下面正确的叙述是
A) A::func2()和B::func1()都是虚函数
B) A::func2()和B::func1()都不是虚函数
C) B::func1()是虚函数,而A::func2()不是虚函数
D) B::func1()不是虚函数,而A::func2()是虚函数
【参考答案】 C
31.下面关于运算符重载的描述错误的是
A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B)不是所有的运算符都可以进行重载
C)运算符函数的调用必须使用关键字operator
D)在C++语言中不可通过运算符重载创造出新的运算符
【参考答案】 C
32.与语句cout<
A)cout<<′\n′; B)cout<<′\12′;
C)cout<<′\xA′; D)cout<<′\0′;
【参考答案】 D
33.下面程序的运行结果是
#include
int fun(int a[],int n)
{ int result=1;
for(int i=1;i
result=result*a[i];
return result; }
void main()
{ int a[3]={3,4,5};
cout<
A)12 B)15 C)20 D)60
【参考答案】 C
34.下面程序的运行结果是
#include
void main()
{ int i=1;
while(i<=8)
if (++i%3!=2)continue;
else cout<
A)25 B)36 C)258 D)369
【参考答案】 C
35.下列程序的运行结果为
#include
template
class FF
{ TT a1, a2, a3;
public:
FF(TT b1, TT b2, TT b3){a1=b1; a2=b2; a3=b3;}
TT Sum(){return a1+a2+a3;} };
void main()
{ FF x(int(1.1),2,3),y(int(4.2),5,6);
cout<
A)6.1 15.2 B)6 15 C)6 15.2 D)6.1 15
【参考答案】 B
二、填空题
(1)数据的逻辑结构有线性结构和 【1】 两大类。
【参考答案】
【1】非线性结构
(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。
【参考答案】
【2】相邻
(3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】 。
【参考答案】
【3】可重用性
(4)软件工程研究的内容主要包括: 【4】 技术和软件工程管理。
【参考答案】
【4】软件开发
(5)关系操作的特点是 【5】 操作。
【参考答案】
【5】集合
(6)C++中封装性、继承性和 【6】 是面向对象思想的主要特征。
【参考答案】
【6】多态性
(7)下面程序的结果为【7】。
#include
void main()
{ int a=1,b=2;
bool c=1;
if((a>b)||c)cout<<"true"<
else
cout<<"false"<
【参考答案】
【7】true
(8)下列for语句的循环次数为 【8】 。
for(int a=0,b=1;b&&a<5;a++);
【参考答案】
【8】5
(9)下面程序的输出结果是 【9】 。
#include
void main()
{ int a[6]={1,2,3,4,5,6};
for(int i=0;i<5;i++)
cout<
【参考答案】
【15】*****hello
[NextPage]
上机部分
一、改错题
使用VC6打开考生文件夹下的工程kt13_1,此工程包含一个源程序文件kt13_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
5
5
源程序文件kt13_1.cpp清单如下:
#include
classA{
public:
/*****************found*****************/
staticintn=1;
A(){n++;};
~A(){n--;}; };
/*****************found*****************/
intn=0;
intmain(){
Aa;
Ab[3];
A*c=newA;
c=&a;
/*****************found*****************/
cout<
cout<
return0; }
【参考答案】
(1)将static int n=1;改为:static int n;
(2)将int n=0;改为:int A::n=0;
(3)将cout<n<
【试题解析】
(1)在类的声明中只能对静态数据成员进行引用性声明,不能进行静态数据成员初始化;
(2)由于静态数据成员是类的成员,所以在初始化时必须限定它所属的类;
(3)c为类的对象指针,访问类成员函数时使用符号“->”,而不能用“.”。
二、简单应用题
请编写一个函数sortnum(intnum),参数num是一个三位的整数,该函数将num的百位、十位和个位的数字进行重排,并返回由上述的三个数字组成的最大的三位数。
注意:部分源程序已存在文件kt13_2.cpp中。
如输入456后,输出结果如下:
654
请勿修改主函数main和其他函数中的内容,仅在函数sortnum的花括号中填写若干语句。
文件kt13_2.cpp的内容如下:
#include
intsortnum(intnum)
{
}
voidmain()
{ intnum;
intresult=0;
cout<<"请输入一个三位数";
cin>>num;
cout<
【参考答案】
int number[3],i,j,temp;
for(i=0;i<3;i++)
{ number[i]=num%10;
num=num/10; }
for (i=0;i<2;i++)
{ for (j=i+1;j<3;j++)
if (number[j]<=number[i])
{ temp=number[j];
number[j]=number[i];
number[i]=temp; } }
num=number[2]*100+number[1]*10+number[0];
return num;
【试题解析】
本题主要考查对基本控制结构和数组的访问,以及根据实际需要建立模型,对数字进行排序的能力,答案中采用的是冒泡排序法。请注意程序中数组下标的范围和两层for循环嵌套中循环变量的取值情况。
三、综合应用题
使用VC6打开考生文件夹下的工程kt13_3。此工程包含一个kt13_3.cpp,其中定义了类Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类Person的私有数据成员forename、surname和money,forename和surname都是char型的指针数据,money是double型的数据。请在注释“//**1**”之后添加适当的语句。
(2)完成类Person的带三个参数的构造函数Person(char*f,char*s,doublem),分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money,请在注释“//**2**”之后添加适当的语句。
(3)完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“//**3**”之后添加适当的语句。
(4)完成类Person的成员函数display的定义,使其以格式"fornamesurnamehasmoney"的形式输出内容,请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
输出结果如下:
RichardBerkhas1000.56
Pressanykeytocontinue
源程序文件kt13_3.cpp清单如下:
#include
#include
classPerson
{ private:
//**1**
doublemoney;
public:
Person(char*f,char*s,doublem);
~Person();
voiddisplay(); };
Person::Person(char*f,char*s,doublem)
{ //**2**
strcpy(forename,f);
surname=newchar[strlen(s)+1];
strcpy(surname,s);
money=m; }
Person::~Person()
{ //**3** }
voidPerson::display()
{ //**4** }
voidmain()
{ Personp("Richard","Berk",1000.56);
p.display(); }
【参考答案】
(1)char *forename;
char *surname;
(2)forename = new char[strlen(f)+1];
(3)delete []forename;
delete []surname;
(4)cout<
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|