《面向对象程序设计》答案.docx

上传人:b****7 文档编号:26234022 上传时间:2023-06-17 格式:DOCX 页数:33 大小:33.12KB
下载 相关 举报
《面向对象程序设计》答案.docx_第1页
第1页 / 共33页
《面向对象程序设计》答案.docx_第2页
第2页 / 共33页
《面向对象程序设计》答案.docx_第3页
第3页 / 共33页
《面向对象程序设计》答案.docx_第4页
第4页 / 共33页
《面向对象程序设计》答案.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

《面向对象程序设计》答案.docx

《《面向对象程序设计》答案.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》答案.docx(33页珍藏版)》请在冰豆网上搜索。

《面向对象程序设计》答案.docx

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境

一、实验目的

1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。

2、掌握如何编辑、编译、连接和运行一个C++程序。

3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。

二、实验要求

1、分析下列程序运行的结果。

程序一:

#include

intadd(intx,inty=8);

voidmain()

{intx=4;

cout<

cout<

}

intadd(intx,inty)

{returnx+y;

}

//12,28

程序二:

#include

voidmain()

{int*p,i;

i=5;

p=&i;

i=*p+10;

cout<<"i="<

}

//i=15

程序三:

#include

voidmain(void)

{inti=10;

int&r=i;

r++;

cout<<"i="<

i=88;

cout<<"i="<

}

//i=11,r=11

i=88,r=88

程序四:

#include

intf(inti)

{staticintk=1;

for(;i>0;i--)

k+=i;

returnk;

}

voidmain()

{inti;

for(i=0;i<5;i++)

cout<

}

//1251121

程序五:

#include

voidfunc();

intn=1; 

voidmain()

{staticinta;   

intb=-9;     

cout<<"a:

"<

"<

"<

b+=4;

func();

cout<<"a:

"<

"<

"<

n+=10;

func();

}

voidfunc()

{ staticinta=2;  intb=5;         

a+=2;

n+=12;

b+=5;

 cout<<"a:

"<

"<

"<

}

//a:

0b:

-9n:

1

a:

4b:

10n:

13

a:

0b:

-5n:

13

a:

6b:

10n:

35

实验二C++对C的扩充

一、实验目的

1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。

2、进一步熟悉编辑、编译、连接和运行C++程序的方法。

3、进一步熟悉C++程序的结构和编程方法。

二、实验要求

1、分析下列程序运行的结果。

#include

intamount=123;

voidmain()

{intamount=456;

cout<<:

:

amount<<',';

cout<

:

:

amount=789;

cout<<:

:

amount<<',';

cout<

}

//123,456,789,456

2、编写一个程序,用来求2个或3个正整数中的最大数。

①用不带默认参数的函数实现。

include

usingnamespacestd;

intmax(inta,intb,intc)//求3个整数中的最大者

{if(b>a)a=b;

if(c>a)a=c;

returna;

}

intmax(inta,intb)//求两个整数中的最大者

{if(a>b)returna;

elsereturnb;

}

intmain()

{inta=7,b=-4,c=9;

cout<

cout<

return0;

}

②用带默认参数的函数实现。

#include

usingnamespacestd;

intmain()

{intmax(inta,intb,intc=0);

inta,b,c;

cin>>a>>b>>c;

cout<<"max(a,b,c)="<

cout<<"max(a,b)="<

return0;

}

intmax(inta,intb,intc)

{if(b>a)a=b;

if(c>a)a=c;

returna;

}

3、有5个字符串,要求对它们按由小到大顺序排列,用string方法。

#include

#include

usingnamespacestd;

intmain()

{inti;

stringstr[5]={"BASIC","C","FORTRAN","C++","PASCAL"};

voidsort(string[]);

sort(str);

cout<<"thesortedstrings:

"<

for(i=0;i<5;i++)

cout<

cout<

return0;

}

voidsort(strings[])

{inti,j;

stringt;

for(j=0;j<5;j++)

for(i=0;i<5-j;i++)

if(s[i]>s[i+1])

{t=s[i];s[i]=s[i+1];s[i+1]=t;}

}

4、定义一个求两个数中较小值的函数模板min(),要求在main()函数中进行调用求两个

浮点型数据和两个整型数据中较小的数。

#include"iostream"

#include"string"

usingnamespacestd;

template

Tmin(Ta,Tb)

{

returna

a:

b;

}

intmain()

{

inta=1,b=9;

floatc=1.23471,d=32.431564;

cout<<"Theminof"<

<<"Theminof"<

return0;

}

实验三类和对象

(一)

一、实验目的

1、掌握声明类的方法,类和类的成员的概念以及定义对象的方法。

2、掌握类的构造函数与析构函数的概念和使用方法。

3、初步掌握用类和对象编制基于对象的程序。

二、实验要求

1、分析下面的程序,写出其运行时的输出结果。

#include

usingnamespacestd;

classDate

{public:

Date(int,int,int);

Date(int,int);

Date(int);

Date();

voiddisplay();

private:

intmonth;

intday;

intyear;

};

Date∷Date(intm,intd,inty):

month(m),day(d),year(y){}

Date∷Date(intm,intd):

month(m),day(d){year=2005;}

Date∷Date(intm):

month(m)

{day=1;

year=2005;

}

Date∷Date()

{month=1;

day=1;

year=2005;

}

voidDate∷display()

{cout<

intmain()

{Dated1(10,13,2005);

Dated2(12,30);

Dated3(10);

Dated4;

d1.display();

d2.display();

d3.display();

d4.display();

return0;

}

//10/13/2005

12/30/2005

10/1/2005

1/1/2005

2、建立一个名为Student的类,该类有以下几个私有成员变量:

学生姓名、学号、性别、年龄。

还有以下两个成员变量:

一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。

编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。

#include"iostream"

#include"string"

usingnamespacestd;

classstudent

{

public:

student();

voiddisplay();

private:

stringsName,sNum;

charchSex;

intiAge;

};

student:

:

student(stringna,stringnum,chars,inta):

sName(na),sNum(num),

chSex(s),iAge(a){}

voidstudent:

:

display()

{

cout<<"----------THEINFORMATIONOFSTUDENT----------\n";

cout<<"name:

"<

"<

<<"sex:

"<

"<

}

intmain()

{

students("WangFang","0811045263",'w',20);

s.display();

return0;

}

3、类Person的定义如下,请实现该类,并在主函数中创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。

classPerson

{private:

charname[10];

intage;

intsalary;

chartel[8];

public:

Person(char*xname,intxage,intxsalary,char*xtel);

voiddisp();

};

解:

#include

#include

Person:

:

person(char*Xname,intXage,intXsalary,char*Xtel)

{strcpy(name,xname);

age=xage;

salary=xsalary;

strcpy(tel,xtel);}

voidPerson:

:

disp()

{cout<<“姓名:

”<

cout<<“年龄”:

<

cout<<“工资”:

<

cout<<“电话”:

<

}

voidmain()

{Personobj(“张三”,25,850,“45678912”);

obj.disp()

}

实验四类和对象

(二)

一、实验目的

1、进一步加深对类和对象的理解。

2、掌握对类的对象数组、对象的指针及其使用方法。

3、掌握友元的概念和使用。

4、了解类模板的使用方法。

二、实验要求

1、分析并比较下列程序运行的结果。

程序一:

#include

#include

classsmallone

{public:

smallone(intsma)

{cout<<"smconstr:

"<

};

voidfn(intn)

{smallonesm(n);

cout<<"infunctionfnwithn="<

}

intmain()

{fn(10);

fn(20);

return0;

}

//smconstr:

10

infunctionfnwithn=10

smconstr:

20

infunctionfnwithn=20

程序二:

#include

#include

classsmallone

{public:

smallone(intsma)

{cout<<"smconstr:

"<

};

voidfn(intn)

{staticsmallonesm(n);

cout<<"infunctionfnwithn="<

}

intmain()

{fn(10);

fn(20);

return0;

}

//smconstr:

10

infunctionfnwithn=10

infunctionfnwithn=20

2、建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

#include

usingnamespacestd;

classStudent

{public:

Student(intn,floats):

num(n),score(s){}

intnum;

floatscore;

};

voidmain()

{Studentstud[5]={

Student(101,78.5),Student(102,85.5),Student(103,98.5),

Student(104,100.0),Student(105,95.5)};

voidmax(Student*);

Student*p=&stud[0];

max(p);

reyurn0;

}

voidmax(Student*arr)

{floatmax_score=arr[0].score;

intk=0;

for(inti=1;i<5;i++)

if(arr[i].score>max_score){max_score=arr[i].score;k=i;}

cout<

}

3、声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。

#include

usingnamespacestd;

template

classCompare

{public:

Compare(numtypea,numtypeb)

{x=a;y=b;}

numtypemax()

{return(x>y)?

x:

y;}

numtypemin()

{return(x

x:

y;}

private:

numtypex,y;

};

intmain()

{Comparecmp1(3,7);

cout<

cout<

Comparecmp2(45.78,93.6);

cout<

cout<

Comparecmp3('a','A');

cout<

cout<

return0;

}

实验五运算符重载

一、实验目的

1、进一步了解运算符重载的概念和使用方法。

2、掌握几种常用的运算符重载的方法。

二、实验要求

1、定义一个复数类Complex,重载运算法“+”,使之能用于复数的加法运算。

将运算符重载为普通函数(非成员、非友元)、成员函数、友元函数。

根据要求修改通过函数来实现复数相加的示例,分别编写程序,求两个复数之和。

#include

usingnamespacestd;

classComplex//定义Complex类

{public:

Complex(floatx=0,floaty=0){real=x;imag=y;}//构造函数

Complexcomplex_add(Complex&c2);//声明复数相加函数

voiddisplay(){cout<

private:

floatreal;//实部

floatimag;//虚部

};

ComplexComplex:

:

complex_add(Complex&c2)

{Complexc;

c.real=real+c2.real;

c.imag=imag+c2.imag;

returnc;

}

intmain()

{Complexcomplex1(3.34f,4.8f),complex2(12.8f,5.2f);

Complexcomplex;//定义3个复数对象

complex=plex_add(complex2);//进行两个复数的加运算

complex.display();

return0;

}

//16.14+10i

//普通函数(非成员、非友元)

#include

usingnamespacestd;

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

doubleget_real();

doubleget_imag();

voiddisplay();

private:

doublereal;

doubleimag;

};

doubleComplex:

:

get_real()

{returnreal;}

doubleComplex:

:

get_imag()

{returnimag;}

voidComplex:

:

display()

{cout<<"("<

Complexoperator+(Complex&c1,Complex&c2)

{

returnComplex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag());

}

intmain()

{Complexc1(3,4),c2(5,-10),c3;

c3=c1+c2;

cout<<"c3=";

c3.display();

return0;

}

//运算符重载为成员函数

#include

usingnamespacestd;

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

Complexoperator+(Complex&c2);

voiddisplay();

private:

doublereal;

doubleimag;

};

ComplexComplex:

:

operator+(Complex&c2)

{Complexc;

c.real=real+c2.real;

c.imag=imag+c2.imag;

returnc;}

voidComplex:

:

display()

{cout<<"("<

intmain()

{Complexc1(3,4),c2(5,-10),c3;

c3=c1+c2;

cout<<"c1=";c1.display();

cout<<"c2=";c2.display();

cout<<"c1+c2=";c3.display();

return0;

}

//将运算符重载为友元函数

#include

usingnamespacestd;

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler){real=r;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

friendComplexoperator+(Complex&c1,Complex&c2);

voiddisplay();

private:

doublereal;

doubleimag;

};

Complexoperator+(Complex&c1,Complex&c2)

{returnComplex(c1.real+c2.real,c1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1