云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 《面向对象程序设计》实验指导书(实验二)

《面向对象程序设计》实验指导书(实验二)

  • 62 次阅读
  • 3 次下载
  • 2025/6/6 18:58:11

㈡ 知识应用实验

1.分析下列程序,写出程序的输出结果,再上机运行程序验证其正确性,如果不正确,请认真分析出错原因。

程序3(exp_203.cpp)

#include

class Myclass

{ private:

int a,b;

public:

Myclass(int x1=0,int x2=0)

{a=x1;b=x2;

cout<<\构造函数被调用!\

}

~Myclass()

{cout<<\析构函数被调用!\

Myclass(Myclass &ob)

{ a=ob.a;b=ob.b;

cout<<\拷贝构造函数被调用!\ } void print(void) { cout<<\ b=\};

void func1(Myclass ob) { cout<<\ ob.print(); }

void func2(Myclass *ob) { cout<<\ ob->print(); }

void func3(Myclass &ob) { cout<<\ ob.print(); }

void main()

{ Myclass ob(10,10);

cout<<\ cout<<\调用func1:\ func1(ob);

cout<<\调用func2:\ func2(&ob);

cout<<\调用func3:\ func3(ob);

你分析的程序输出结果是: 构造函数被调用! Main:a=10 b=10 调用func1: 拷贝构造函数被调用! Func1: a=10 b=10 析构函数被调用! 调用func2: Func2: a=10 b=10 调用func3: Main:a=10 b=10 析构函数被调用! 程序的实际输出结果是: 构造函数被调用! Main:a=10 b=10 调用func1:

拷贝构造函数被调用! Func1: a=10 b=10 析构函数被调用! 调用func2:

Func2: a=10 b=10 调用func3: Main:a=10 b=10 析构函数被调用!

cout<<\}

2.完善、调试通过下列程序,并按所要求回答问题。 程序4(exp_204.cpp)

#include #include class person { private:

char *name; public: person(char *pn);//构造函数声明 ~person(void); //析构函数声明 person(const person &ob);//拷贝构造函数声明 char *get_name(void) { return name;} void print_name(void); };

① ::person(char *pn) //定义构造函数,为name提供值 { name= ② ; if(name!=NULL) ③ ; }

① ::~person(void)//显示定义析构函数 { delete []name; }

① ::person(const person &ob) //定义拷贝构造函数 { name= ④ ; if(name!=NULL) ⑤ ; }

void person::print_name(void) {cout<

void main(void) { person p1(\张三\ person p2=p1;

cout<<\姓名:\ cout<<\姓名:\}

问题:

⑾ 程序中①处应为 person ;

②处应为 new char[strlen(pn)+1]; ;

③处应为 strcpy(name,pn); ;

④处应为 new char[strlen(ob.name)+1]; ; ⑤处应为 strcpy(name,ob.name); ;

程序5(exp_102.cpp)

//头文件“hscore.h”内容:定义一个成绩类:最多可以处理10科成绩及平均成绩 const int M=10; class score { private:

float sc[M],aver; //表示M科成绩的数组及平均成绩 int m; //表示实际考试科数 public: score(void); //无参构造函数

score(float x[],int n); //构造函数重载——初始化成绩 void set_score(float x[],int n); //提供成绩 float get_score(int i) //得到第i科成绩 {return sc[i];}

float get_aver(void) //得到平均成绩 {return aver;} void print_score(void); };

score::score(void) //无参构造函数 { int i; m=M;

for(i=0;i

score::score(float x[],int n) //构造函数重载——初始化成绩 { int i;float sum=0; m=n;

① ; aver=sum/m; }

void score::set_score(float x[],int n) //提供成绩 { int i;float sum=0; m=n;

② ; aver=sum/m; }

void score::print_score(void) //输出成绩、平均成绩 { int i;

for(i=0;i

cout<<\ \

cout<<\ \ }

问题:

⑿ 完善类的定义,程序中,①处应改为: for(i=0,i

//程序“exp_205.cpp”:用成绩类“score”处理成绩:任意个学生,任意科(不超过10科) #include

#include\调入成绩score类的定义头文件

void input(score *p,int n,int m); //普通函数:输入学生成绩 void print(score *p,int n,int m); //普通函数:输出学生成绩

score &average(score *p,int n,int m); //普通函数:平均成绩计算 void sort(score *p,int n,int m);//普通函数:按平均成绩排序 void main(void) { int n,m;

cout<<\学生人数:\ cout<<\考试科数:\ score *p,aver;

p= ① ; //动态数组:用于处理n个学生成绩 if(p==NULL)

{ cout<<\内存分配失败!\ return ; }

input( ② ); //调用输入成绩函数 print( ② ); //调用输出成绩函数

aver=average( ② ); //调用平均值计算函数 aver.print_score(); //输出各科平均成绩 sort ② ); //成绩排序

print( ② ); //调用输出成绩函数 ③ ; //释放内存 }

void input(score *p,int n,int m) { int i,j;float x[M]; for(i=0;i

{ cout<<\第\个学生成绩:\ for(j=0;j

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

㈡ 知识应用实验 1.分析下列程序,写出程序的输出结果,再上机运行程序验证其正确性,如果不正确,请认真分析出错原因。 程序3(exp_203.cpp) #include class Myclass { private: int a,b; public: Myclass(int x1=0,int x2=0) {a=x1;b=x2; cout<<\构造函数被调用!\ } ~Myclass() {cout<<\析构函数被调用!\ Myclass(Myclass &ob) { a=ob.a;b=ob.b;

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com