C++期中考试试卷
天使之城结局-公司停电通知
长沙理工大学考试试卷
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
试卷编号 拟题教研室(或教师)签名
教研室主任签名
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
课程名称(含档次) 面向对象与可视化编程
课程代号
专 业 计通学院各专业
层次(本、专) 本 考试方式(开、闭卷) 闭
一、选择题(每空2分,共20分)
1.
下面选项中不属于面向对象程序设计特征的是(C ) 。
A)继承性 B)多态性
C)相似性 D)封装性
2. 可用作C++语言用户标识符的一组标识符是( B )。
A) void define +WORD B) a3_b3
_123 YN
C) for -abc Case D) 2a
DO sizeof
3. 假定一个二维数组的定义语句为“int
a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A)
0 B) 4 C) 8 D) 6
4.
以下哪一关键字可用于重载函数的区分( C )
A)extern B)static
C)const D)virtual
5. 下列有关继承和派生的叙述中,正确的是( C )
A)派生类不能访问通过私有继承的基类的保护成员
B)多继承的虚基类不能够实例化
C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数
D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
6.
下列关于this指针的说法正确的是( B )
A)this指针存在于每个函数之中
B)在类的非静态函数中this指针指向调用该函数的对象
C)this指针是指向虚函数表的指针
D)this指针是指向类的函数成员的指针
7. 在下列关于C++函数的叙述中,正确的是( C )
A)每个函数至少要有一个参数 B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明 D)函数不能自己调用自己
8.
下列运算符中,不能重载的是 ( C )
A)&& B)!= C). D)->
9. 关于结构化程序设计方法说法错误的是( )。
A)在数据处理过程中,采用的是自顶向下、分而治之的方法。
B)将整个程序按功能划分为几个可独立编程的子过程模块。
C)以“对象”或“数据”为中心。
D)数据和处理数据的过程代码是分离的、相互独立的实体。
10.
关于静态成员的描述中,( )是错误的。
A)静态成员可分为静态数据成员和静态成员函数。
B)静态数据成员定义后必须在类体内进行初始化。
C)静态数据成员初始化不使用其构造函数。
第 1 页 共 7 页
C++程序设计试卷
D)静态数据成员函数中不能直接引用非静态成员。
二、阅读程序写出程序运行结果(每题6分,共30分)
1、
#include
class Sample
{
int n;
public:
Sample(int i){n=i;}
friend int add(Sample &s1,Sample &s2);
};
int add(Sample &s1,Sample &s2)
{
return s1.n+s2.n;
}
void main()
{
Sample s1(10),s2(20);
cout<
2、
#
include
class A
{
public:
A();
A(int i,int j);
~A(){cout< void print();
private:
int a,b;
};
A::A()
{
a=b=10;cout<<
A::A(int i,int j)
{
a=i,b=j;cout<<
void A::print()
{cout<<
void main()
{
第 2 页 共 7 页
C++程序设计试卷
A
m,n(15,18);
();
();
}
3、
#include
using namespace
std;
class Base
{
public:
Base(int i) { cout << i; }
~Base () { }
};
class Base1: virtual public Base
{
public:
Base1(int i, int j=0) :
Base(j) { cout << i; }
~Base1() {}
};
class Base2: virtual public Base
{
public:
Base2(int i, int j=0) : Base(j) {
cout << i; }
~Base2() {}
};
class
Derived : public Base2, public Base1
{
public:
Derived(int a, int b, int c, int d)
: mem1(a), mem2(b), Base1(c),
Base2(d), Base(a)
{ cout << b; }
private:
Base2 mem2;
Base1 mem1;
};
void main() { Derived objD (1, 2, 3,
4); }
4、
#include
using namespace std;
class Test{
第 3 页 共 7 页
C++程序设计试卷
public:
Test(){}
~Test(){cout<<'#';}
};
int main(){
Test temp[2], *pTemp[2];
return 0;
}
5、
#include
using namespace std;
class
point
{
public:
static int
number;
public:
point() { number++;}
~point() {number--;}
};
int
point::number=0;
void main()
{ point
*ptr;
point A,B;
{
point
*ptr_point=new point[3];
ptr=ptr_point;
}
point C;
delete[] ptr;
cout<
三、程序编写题(第一题为必做题,后面三题选做二题)
1、首先编写一个选择排序函数,然
后在主函数中调用排序函数对10个整数从小到大进行排序。
提示:采用数组名作为函数参数。选择排序
:每一趟从待排序的序列中选出一个最小的数据。(10分)
代码:
#include
using namespace std;
int
*select(int a[],int n)
{
int i,j,k,temp;
第 4 页 共 7 页
C++程序设计试卷
}
void main(){
int data[10],i,*q;
cout<<请输入个整数:<
{
cin>>data[i]; }
q=select(data,10);
for(i=0;i<10;i++)
{ cout<<*q<<; if(i!=9)
q=q+1;}
cout<
int *p;
for(i=0;i
}
p=a;
return p;
k=i;
for(j=i;j
if(i!=k) {temp=a[k]; a[k]=a[i]; a[i]=temp;} 2、建立一个CPoint类,该类有两个私有成员变量x,y,表示点的坐标。有一个构造函数用于设置坐标,还有两个公有的成员函数:分别用于获取x和y 的坐标。由CPoint派生出CCircle类
,派
生类CCircle增加一个私有成员变量用于表示半径,并用派生类的构造函数设置半径,同时增
加三
个成员函数:一个用于获取半径,另两个分别用于获取圆外接正方形左上角的x坐标和y坐标。(2
0
分)
#include
using namespace
std;
class Point{
private:
};
Point::Point(int a,int b)
{x=a;y=b;}
int Point::getx()
{return
x;}
int Point::gety()
{return y;}
class Circle:public Point{
第 5 页 共 7 页
int x,y;
Point(int a,int
b);
int getx();
int gety();
public:
C++程序设计试卷
private:
};
int Circle::getr()
{return r;}
void main()
{
Point a(2,2);
cout<<()<
cout<<()<
int r;
Circle(int a,int b,int c):Point(a,b)
{r=c;}
int getr();
public:
3、设计一个类
Time(时间),该类用于表示时间值(时、分、秒)。要求能设置时间和输出时间。
再设计一个日期
类Date,该类用于表示日期值(年、月、日)。要求除了能够通过相应的成员函数设
置和获取日期值
外,还能够实现将日期加一天的操作。利用建立的日期类和时间类多重派生出日期
时间类DateTim
e,并实现日期和时间的设置和输出。(20分)
#include
using namespace std;
class Time{
private:
};
Time::Time(int h,int m,int s){
hour=h;minute=m;second=s;}
cout<
class Date{
private:
};
Date::Date(int y,int
mo,int d){
{
第 6 页 共 7 页
year=y;month=mo;day=d;}
Date::~Date()
int year,month,day;
Date(int y,int mo,int d);
~Date();
public:
int hour,minute,second;
Time(int h,int m,int s);
~Time();
public:
C++程序设计试卷
cout<
public:
};
void main(){
DateTime
today(2006,6,29,7,38,30);}
DateTime(int y,int
mo,int d,int h,int m,int
s):Date(y,mo,d),Time(h,m,s){}
4、建立一个名为CSt
udent的类,该类有以下几个私有成员变量:学生姓名、学号、性别和年龄。
有一个成员函数:用于
初始化学生姓名、学号、性别和年龄的构造函数。还有一个用于输出学生信
息的友元函数。编写一个主函
数,声明一个学生对象,然后调用友元函数在屏幕输出学生信息。(20
分)
#include
#include
using namespace std;
class CStudent
{
};
void show(CStudent st){
}
void main(){
}
CStudent
st(念奴娇,,女,19);
show(st);
cout<<姓名:<
char
m_Name[20];
char m_ID[20];
char m_Sex[10];
int m_Age;
CStudent::CStudent(char*name,ch
ar*ID,char*sex,int age){
strcpy(m_Name,name);
strcpy(m_ID,ID);
strcpy(m_Sex,sex);
m_Age=age;}
private:
public:
第 7 页 共 7 页
长沙理工大学考试试卷
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
试卷编号 拟题教研室(或教师)签名
教研室主任签名
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
课程名称(含档次) 面向对象与可视化编程
课程代号
专 业 计通学院各专业
层次(本、专) 本 考试方式(开、闭卷) 闭
一、选择题(每空2分,共20分)
1.
下面选项中不属于面向对象程序设计特征的是(C ) 。
A)继承性 B)多态性
C)相似性 D)封装性
2. 可用作C++语言用户标识符的一组标识符是( B )。
A) void define +WORD B) a3_b3
_123 YN
C) for -abc Case D) 2a
DO sizeof
3. 假定一个二维数组的定义语句为“int
a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A)
0 B) 4 C) 8 D) 6
4.
以下哪一关键字可用于重载函数的区分( C )
A)extern B)static
C)const D)virtual
5. 下列有关继承和派生的叙述中,正确的是( C )
A)派生类不能访问通过私有继承的基类的保护成员
B)多继承的虚基类不能够实例化
C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数
D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
6.
下列关于this指针的说法正确的是( B )
A)this指针存在于每个函数之中
B)在类的非静态函数中this指针指向调用该函数的对象
C)this指针是指向虚函数表的指针
D)this指针是指向类的函数成员的指针
7. 在下列关于C++函数的叙述中,正确的是( C )
A)每个函数至少要有一个参数 B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明 D)函数不能自己调用自己
8.
下列运算符中,不能重载的是 ( C )
A)&& B)!= C). D)->
9. 关于结构化程序设计方法说法错误的是( )。
A)在数据处理过程中,采用的是自顶向下、分而治之的方法。
B)将整个程序按功能划分为几个可独立编程的子过程模块。
C)以“对象”或“数据”为中心。
D)数据和处理数据的过程代码是分离的、相互独立的实体。
10.
关于静态成员的描述中,( )是错误的。
A)静态成员可分为静态数据成员和静态成员函数。
B)静态数据成员定义后必须在类体内进行初始化。
C)静态数据成员初始化不使用其构造函数。
第 1 页 共 7 页
C++程序设计试卷
D)静态数据成员函数中不能直接引用非静态成员。
二、阅读程序写出程序运行结果(每题6分,共30分)
1、
#include
class Sample
{
int n;
public:
Sample(int i){n=i;}
friend int add(Sample &s1,Sample &s2);
};
int add(Sample &s1,Sample &s2)
{
return s1.n+s2.n;
}
void main()
{
Sample s1(10),s2(20);
cout<
2、
#
include
class A
{
public:
A();
A(int i,int j);
~A(){cout< void print();
private:
int a,b;
};
A::A()
{
a=b=10;cout<<
A::A(int i,int j)
{
a=i,b=j;cout<<
void A::print()
{cout<<
void main()
{
第 2 页 共 7 页
C++程序设计试卷
A
m,n(15,18);
();
();
}
3、
#include
using namespace
std;
class Base
{
public:
Base(int i) { cout << i; }
~Base () { }
};
class Base1: virtual public Base
{
public:
Base1(int i, int j=0) :
Base(j) { cout << i; }
~Base1() {}
};
class Base2: virtual public Base
{
public:
Base2(int i, int j=0) : Base(j) {
cout << i; }
~Base2() {}
};
class
Derived : public Base2, public Base1
{
public:
Derived(int a, int b, int c, int d)
: mem1(a), mem2(b), Base1(c),
Base2(d), Base(a)
{ cout << b; }
private:
Base2 mem2;
Base1 mem1;
};
void main() { Derived objD (1, 2, 3,
4); }
4、
#include
using namespace std;
class Test{
第 3 页 共 7 页
C++程序设计试卷
public:
Test(){}
~Test(){cout<<'#';}
};
int main(){
Test temp[2], *pTemp[2];
return 0;
}
5、
#include
using namespace std;
class
point
{
public:
static int
number;
public:
point() { number++;}
~point() {number--;}
};
int
point::number=0;
void main()
{ point
*ptr;
point A,B;
{
point
*ptr_point=new point[3];
ptr=ptr_point;
}
point C;
delete[] ptr;
cout<
三、程序编写题(第一题为必做题,后面三题选做二题)
1、首先编写一个选择排序函数,然
后在主函数中调用排序函数对10个整数从小到大进行排序。
提示:采用数组名作为函数参数。选择排序
:每一趟从待排序的序列中选出一个最小的数据。(10分)
代码:
#include
using namespace std;
int
*select(int a[],int n)
{
int i,j,k,temp;
第 4 页 共 7 页
C++程序设计试卷
}
void main(){
int data[10],i,*q;
cout<<请输入个整数:<
{
cin>>data[i]; }
q=select(data,10);
for(i=0;i<10;i++)
{ cout<<*q<<; if(i!=9)
q=q+1;}
cout<
int *p;
for(i=0;i
}
p=a;
return p;
k=i;
for(j=i;j
if(i!=k) {temp=a[k]; a[k]=a[i]; a[i]=temp;} 2、建立一个CPoint类,该类有两个私有成员变量x,y,表示点的坐标。有一个构造函数用于设置坐标,还有两个公有的成员函数:分别用于获取x和y 的坐标。由CPoint派生出CCircle类
,派
生类CCircle增加一个私有成员变量用于表示半径,并用派生类的构造函数设置半径,同时增
加三
个成员函数:一个用于获取半径,另两个分别用于获取圆外接正方形左上角的x坐标和y坐标。(2
0
分)
#include
using namespace
std;
class Point{
private:
};
Point::Point(int a,int b)
{x=a;y=b;}
int Point::getx()
{return
x;}
int Point::gety()
{return y;}
class Circle:public Point{
第 5 页 共 7 页
int x,y;
Point(int a,int
b);
int getx();
int gety();
public:
C++程序设计试卷
private:
};
int Circle::getr()
{return r;}
void main()
{
Point a(2,2);
cout<<()<
cout<<()<
int r;
Circle(int a,int b,int c):Point(a,b)
{r=c;}
int getr();
public:
3、设计一个类
Time(时间),该类用于表示时间值(时、分、秒)。要求能设置时间和输出时间。
再设计一个日期
类Date,该类用于表示日期值(年、月、日)。要求除了能够通过相应的成员函数设
置和获取日期值
外,还能够实现将日期加一天的操作。利用建立的日期类和时间类多重派生出日期
时间类DateTim
e,并实现日期和时间的设置和输出。(20分)
#include
using namespace std;
class Time{
private:
};
Time::Time(int h,int m,int s){
hour=h;minute=m;second=s;}
cout<
class Date{
private:
};
Date::Date(int y,int
mo,int d){
{
第 6 页 共 7 页
year=y;month=mo;day=d;}
Date::~Date()
int year,month,day;
Date(int y,int mo,int d);
~Date();
public:
int hour,minute,second;
Time(int h,int m,int s);
~Time();
public:
C++程序设计试卷
cout<
public:
};
void main(){
DateTime
today(2006,6,29,7,38,30);}
DateTime(int y,int
mo,int d,int h,int m,int
s):Date(y,mo,d),Time(h,m,s){}
4、建立一个名为CSt
udent的类,该类有以下几个私有成员变量:学生姓名、学号、性别和年龄。
有一个成员函数:用于
初始化学生姓名、学号、性别和年龄的构造函数。还有一个用于输出学生信
息的友元函数。编写一个主函
数,声明一个学生对象,然后调用友元函数在屏幕输出学生信息。(20
分)
#include
#include
using namespace std;
class CStudent
{
};
void show(CStudent st){
}
void main(){
}
CStudent
st(念奴娇,,女,19);
show(st);
cout<<姓名:<
char
m_Name[20];
char m_ID[20];
char m_Sex[10];
int m_Age;
CStudent::CStudent(char*name,ch
ar*ID,char*sex,int age){
strcpy(m_Name,name);
strcpy(m_ID,ID);
strcpy(m_Sex,sex);
m_Age=age;}
private:
public:
第 7 页 共 7 页