C++实验二类与对象(附答案)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
Aa al(1),a2(2);
al.print();
cout<<a2.a<<endl;
return0;
}
2.检查下面的程序,找出其中的错误,并改正。然后上机调试,使程序能正常运行。
(1)
#include<iostream.h>
class Date
{
void set_date();
void show_date();
{
X=p.X;
Y=p.Y; cout<<"Copy-initialization Constructor is called"<<endl;
}
void main()
{
TPoint p1(4,9);
TPoint p2(p1);
TPoint p3=p2; cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;
}
(2)
#include<iostream.h>
class A
{
public:
void A(int i=0)
{
m=i;
}
void show()
{cout<<m<<endl;
}
void ~A(){}
private:
int m;
};
int main()
A a(5); a.m+=10; a.show(); return0;
int year;
int month;
int day;
};
Date d;
int main()
{
set_date(); show_date();
}
void set_date()
{cin>>d.year; cin>>d.month; cin>>d.day;
}
void show_date()
{cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl;
实验二 类与对象
实验目的和要求
1.掌握类、类的数据成员、类的成员函数的定义方式。2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。4.理解构造函数和析构函数的定义与执行过程。5.掌握重载构造函数的方法。
6.了解拷贝构造函数的定义方法。
实验内容
1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。#include<iostream.h>
class Aa
{
public:
Aa(int i=0)
{
a=i;
cout<<"Constructor "<<a<<endl;
}
~Aa()
{
cout<<"Destructor "<<a<<endl;
}
void print()
{
cout<<a<<endl;
}
private:
int a;
};
int main()
{c=c+k;
}
};
void main()
{
X x1;
X x2(2);
X x3(1,2); x1.setA(3);
}
3.调试下列程序。
#include<iostream.h>
class TPoint
{private:
int X,Y;
public:
TPoint(int x,int y)
{
X=x;
Y=y;
}
(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试: 在主函数体内,添加下列说明语句:
TPoint p4,p5(2);
调试程序会出现什么现象?为什么?如何解决? (提示: 对已有的构造函数进行适 当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。
(3)在主函数内使用new创建不同参数动态两个动态对象,输出其坐标,并用delete删除之。运行程序,分析运行结果。
具体要求如下:
(1)私有成员
intn:存放满足条件的连续自然数的个数。
int *p:根据n的值申请一个动态数组用来存放求出的满足条件的n个自然数。
(2)公有成员函数
NUM(int n1):构造函数,用n1初始化n,根据n的值申请动态数组空间,使p指向该
动态数组空间。
int yes(int x):判断x是否为合数。如果是,返回1,否则返回0。
}
(3)#include<iostream.h> class X
{private:
int a=0; int &b; void setA(int i){
a=i;
}
X(int i)
{
a=i;
}public:
int X()
{
a=b=0;
}
X(int i,int j)
{
a=i;
b=j;
}
void setC(int k)
(4)在程序中定义个全局对象,在主函数最前添加语句:cout<<"Enter main"<<endl;
运行程序,分析运行结果。
4•完善程序,并写出运行结果
根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。
试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。当找到 第一组连续的n个合数后,即停止查找。
cout<<"Constructor is called"<<endl;
}
TPoint(TPoint &p);
~TPoint()
{cout<<"Destructor is called"<<endl;}
int getx()
{return X;}
int gety()
{return Y;}
};
TPoint::TPoint(TPoint &p)
void fun():从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次存入动
态数组。
void print():输出满足条件的n个合数。
~NUM():析构函数,释放动态数组所占用的存储空间。
(3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。然后通过对象num调用成员函数求出10个连续的合数,并输出计算结果。
return 1;
return 0;
}
void fun( void)
{
int j;
for(int i=3;1;i++)
{
j=0;
while(&&j<n)
{
P[j]=i;
j++;
i++;
}
if(j==n)
#in clude <iostream.h>
class NUM
{〃定义数据类NUM
private:
int n; int *p;
public:
NUM(i nt n1)
{
n=n1;
p=;//动态分配存放连续合数的存储空间
}Baidu Nhomakorabea
int yes(i nt x)
{
for(int i=2;i<=x/2;i++) if (x%i==0)
Aa al(1),a2(2);
al.print();
cout<<a2.a<<endl;
return0;
}
2.检查下面的程序,找出其中的错误,并改正。然后上机调试,使程序能正常运行。
(1)
#include<iostream.h>
class Date
{
void set_date();
void show_date();
{
X=p.X;
Y=p.Y; cout<<"Copy-initialization Constructor is called"<<endl;
}
void main()
{
TPoint p1(4,9);
TPoint p2(p1);
TPoint p3=p2; cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;
}
(2)
#include<iostream.h>
class A
{
public:
void A(int i=0)
{
m=i;
}
void show()
{cout<<m<<endl;
}
void ~A(){}
private:
int m;
};
int main()
A a(5); a.m+=10; a.show(); return0;
int year;
int month;
int day;
};
Date d;
int main()
{
set_date(); show_date();
}
void set_date()
{cin>>d.year; cin>>d.month; cin>>d.day;
}
void show_date()
{cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl;
实验二 类与对象
实验目的和要求
1.掌握类、类的数据成员、类的成员函数的定义方式。2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。4.理解构造函数和析构函数的定义与执行过程。5.掌握重载构造函数的方法。
6.了解拷贝构造函数的定义方法。
实验内容
1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。#include<iostream.h>
class Aa
{
public:
Aa(int i=0)
{
a=i;
cout<<"Constructor "<<a<<endl;
}
~Aa()
{
cout<<"Destructor "<<a<<endl;
}
void print()
{
cout<<a<<endl;
}
private:
int a;
};
int main()
{c=c+k;
}
};
void main()
{
X x1;
X x2(2);
X x3(1,2); x1.setA(3);
}
3.调试下列程序。
#include<iostream.h>
class TPoint
{private:
int X,Y;
public:
TPoint(int x,int y)
{
X=x;
Y=y;
}
(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试: 在主函数体内,添加下列说明语句:
TPoint p4,p5(2);
调试程序会出现什么现象?为什么?如何解决? (提示: 对已有的构造函数进行适 当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。
(3)在主函数内使用new创建不同参数动态两个动态对象,输出其坐标,并用delete删除之。运行程序,分析运行结果。
具体要求如下:
(1)私有成员
intn:存放满足条件的连续自然数的个数。
int *p:根据n的值申请一个动态数组用来存放求出的满足条件的n个自然数。
(2)公有成员函数
NUM(int n1):构造函数,用n1初始化n,根据n的值申请动态数组空间,使p指向该
动态数组空间。
int yes(int x):判断x是否为合数。如果是,返回1,否则返回0。
}
(3)#include<iostream.h> class X
{private:
int a=0; int &b; void setA(int i){
a=i;
}
X(int i)
{
a=i;
}public:
int X()
{
a=b=0;
}
X(int i,int j)
{
a=i;
b=j;
}
void setC(int k)
(4)在程序中定义个全局对象,在主函数最前添加语句:cout<<"Enter main"<<endl;
运行程序,分析运行结果。
4•完善程序,并写出运行结果
根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。
试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。当找到 第一组连续的n个合数后,即停止查找。
cout<<"Constructor is called"<<endl;
}
TPoint(TPoint &p);
~TPoint()
{cout<<"Destructor is called"<<endl;}
int getx()
{return X;}
int gety()
{return Y;}
};
TPoint::TPoint(TPoint &p)
void fun():从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次存入动
态数组。
void print():输出满足条件的n个合数。
~NUM():析构函数,释放动态数组所占用的存储空间。
(3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。然后通过对象num调用成员函数求出10个连续的合数,并输出计算结果。
return 1;
return 0;
}
void fun( void)
{
int j;
for(int i=3;1;i++)
{
j=0;
while(&&j<n)
{
P[j]=i;
j++;
i++;
}
if(j==n)
#in clude <iostream.h>
class NUM
{〃定义数据类NUM
private:
int n; int *p;
public:
NUM(i nt n1)
{
n=n1;
p=;//动态分配存放连续合数的存储空间
}Baidu Nhomakorabea
int yes(i nt x)
{
for(int i=2;i<=x/2;i++) if (x%i==0)