logo资料库

面向对象实验报告.doc

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
西南交通大学 2012 年面向对象程序设计试题及答案 开发环境为 VC++6.0,运行结果有截图,若发现错误欢迎指正。 实验一、C++程序开发环境及 c++简单程序设计。 题目 1、简单 c++程序 任务: 按提示的操作步骤输入下面的代码,编译连接并执行。 源程序代码: #include"iostream.h" void main() { cout<<"Hello!\n"; } 运行结果: cout<<"Welcome to c++!"< using namespace std; void main() { char ch; cout <<"请输入数字用来转化为英文单词:"; while(1) { cin>>ch;if(ch=='\n') break; switch(ch-48) { break; case 0:cout<<"zero "; break; case 1:cout <<"one "; case 2:cout <<"two "; break; case 3:cout <<"three ";break; case 4:cout <<"four "; break; case 5:cout <<"five "; break; case 6:cout <<"six "; break; case 7:cout <<"seven ";break; case 8:cout <<"eight ";break; case 9:cout <<"nine "; break; } }
} 运行结果: 题目 3、循环结构程序设计 任务 把一张一元纸币换成一分、二分和五分的硬币,假如每一种至少一枚,文友 多少种换法,编程将各种换法显示出来。 源程序代码: #include using namespace std; void main() { int i,j,k,x=0; cout<<"一角 "<<"两角 "<<"三角 "< using namespace std; inline int max(int x,int y); inline int inline_fun(int x); int common_fun(int x); void main()
{ int x=4,y=5; cout<y) return x; else return y; } inline int inline_fun(int x) { return ++x;} int common_fun(int x) { return ++x;} 运行结果: 题目 2、函数参数的传递机制、重载函数 任务 (1)编写重载函数 max1()可分别求 2 个整数、3 个整数、2 个双精度和 3 双精度数的最大值。 (2)定义两个名称都为 sum()的函数,第一个函数支持整型数组,第二个函 数支持浮点型数组,求数组元素的和。 源程序代码: #include using namespace std; int max1(int x,int y) { if(x>y) return x;else return y;} int max1(int x,int y,int z) { if(x>max1(y,z)) return x;else return max1(y,z); } double max1(double x,double y) { if(x>y) return x;else return y;} double max1(double x,double y,double z) { if(x>max1(y,z) ) return x;else return max1(y,z);} int sum(int *p,int n) { int i=0,s=0; for(;i
double sum(double *p,int n) { int i; double s=0; for(i=0;i using namespace std; double volume(double x=1,double y=2,double z=3); void main() { double x=4,y=5,c=6; cout<
数!!! { } 运行结果: cout<<"以"< using namespace std; class Aa { public : int a; private : }; int main() { Aa(int i=0){ a=i; cout<<"Constructor"<
题目 2、构造函数、拷贝构造函数 任务 (1)调试下列程序 源程序代码: #include using namespace std; class Topint { public: Topint(int x,int y) { X=x;Y=y;} Topint(Topint &p); ~Topint () { cout<<"destructor is called \n";} int getx() { return X;} int gety() { return Y;} private : int X,Y; }; Topint::Topint(Topint &p) { X=p.X; Y=p.Y; cout<<"Copy -initialization Cnstructor is called\n"; Topint p1(4,9); Topint p2(p1); Topint p3=p2; cout<<"p3=("<
第 一 个 Constructor is Called 是 构 造 p1 时 产 生 的 , 两 个 Copy-initialization Constructor is Called 分别 hi 构造 p2 和 p3 时 产生的。析构 p3、p2、p1,是产 生了三个 destructor is called。 (2)对上述程序在主函数中添加下列说明语句:Topint p4,p5(2)调试程序会 出现什么现象,为什么?如何解决?结合运行结果分析如何使用不同的构造函数 创建把不同的对象?对程序的输出结果进行分析和说明。 会出现对象 p4,p5 无法构造。在类中将构造函数 Topint(int x,int y);改 成带有默认参数的构造函数,例如:Topint(int x=0,int y =0); 运行结果: 分析同上。 题目 3、析构函数、new 和 delete 运算符 任务 定义字符串类,包括私有数据成员(char *ch),构造函数中用 new 为 ch 申 请空间,析构函数用 delete 释放空间,并验证构造函数和析构函数的调用书顺序。 源程序代码: #include using namespace std; class String { private : char *ch;int n; public : 用!"<n=n; ch=new char[n]; cout<<" 构 造 函 数 被 调 void set() { cout<<"请输入"<>ch[i]; }
void show() { cout<<"字符串的储存的内容如下:"<>n1>>n2; String s1(n1),s2(n2); s1.set();s2.set(); s1.show();s2.show(); } 运行结果: 可以看出构造函数和析构函数的调用的顺序相反! 注意:特别重视构造函数、拷贝构造函数和析构函数的使用以及调用顺序, 这在整个面向对象程序设计中一直是重点同时也一直是难点。 实验四、静态成员与友元 题目 1、静态成员的特性 任务 (1)调试下列程序,写出输出的结果,并分析输出结果。 程序代码: #include using namespace std; class My { public : My(int aa) {A=aa;B-=aa;} static void fun(My m);
分享到:
收藏