C++ 实验九

原创 2013年12月03日 11:29:29


实验九
友元与运算符重载
【实验目的】
1、 掌握友元函数的使用方法;
2、 掌握使用运算符重载方法;
【实验内容】
1、 定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”
运算。
•分别用成员函数与友元函数编写运算符重载函数;
•在主函数中定义复数对象 c1(10,20)、c2(15,30),进行 c2-=c1 的复数运算,
并输出 c1、c2 的复数值。
2、 定义一个数组类 Array:
•其私有数据成员为整型一维数组 a[10];
•通过构造函数给数组赋初值;
•用 show 函数显示数组的元素值;
•用成员函数重载运算符 “+” , 直接实现两个一维数组对应元素相加的运算。
•在主函数中定义数组 a、b 分别为:
int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[10]={4,5,6,7,8,9,10,11,12,13};
•用 Array 定义三个数组对象 arr1(a)、arr2(b)、arr3,执行 arr3=arr1+arr2 运
算,输出 arr3 的数组元素值。
•类似地,用友元函数重载运算符“+=” ,实现复合赋值运算:arr1+=arr2,
并输出 arr1 的元素值。
3、 定义一个人民币类 Money;
•类中数据成员为元、角、分;
•用成员函数与友元函数重载“――”运算符,实现人民币对象的减 1 运算;
•在主函数中定义人民币对象 m1=10 元 8 角 5 分及对象 m2、m3,对 m1 作
前置“――”并赋给 m2。对 m1 作后置“――”并赋给 m3。显示 m1、m2、m3
的结果。

1.

#include <IOSTREAM>
using namespace std;
class ComplexNum{
public:
	friend ostream& operator<<(ostream&out,const ComplexNum&cn);
	ComplexNum(double r,double i):real(r),imaginary(i){};
	ComplexNum& operator-=(const ComplexNum&b){
		real=real-b.real;
		imaginary=imaginary-b.imaginary;
		return *this;
	}
private:
	double real,imaginary;

};
ostream& operator<<(ostream&out,const ComplexNum&cn){
	out<<cn.real<<" + "<<cn.imaginary<<"i";
	return out;
}

int main(){
	ComplexNum c1(10,20),c2(15,30);
	c1-=c2;
	cout<<c1<<endl<<c2<<endl;
	return 0;
}
2.
#include <IOSTREAM>
using namespace std;
class Array{
public:
	Array(){

	}
	Array(const int b[]){
		for (int i=0;i<10;i++)
		{
			a[i]=b[i];
		}
	}
	void show(){
		for (int i=0;i<9;i++)
		{
			cout<<a[i]<<" ";
		}
		cout<<a[i];
	}
	Array operator+(const Array&b) const
	{
		Array tmp;
		for (int i=0;i<10;i++)
		{
			tmp.a[i]=a[i]+b.a[i];
		}
		return tmp;
	}
	Array& operator+=(const Array&b){
		for (int i=0;i<10;i++)
		{
			a[i]+=b.a[i];
		}
		return *this;
	}
private:
	 int a[10];
};
int main(){
	int a[10]={1,2,3,4,5,6,7,8,9,10};
	int b[10]={4,5,6,7,8,9,10,11,12,13};
	Array arr1(a);
	Array arr2(b);
	Array arr3;
	arr3=arr1+arr2;
	arr3.show();
	arr1+=arr2;
	cout<<endl;
	arr1.show();
	return 0;
}

3.
#include <IOSTREAM>
using namespace std;
class Money{
public:
	Money(double y=0,double j=0,double f=0):yuan(y),jiao(j),fen(f){
	}
	Money&  operator--(int i){
		yuan--;
		return *this;
	}
	friend Money& operator--(Money&m1);
	friend ostream& operator<<(ostream&out,Money&m);
private:
	double yuan,jiao,fen;
};
Money& operator--(Money&m1){
	m1.yuan--;
	return m1;
}
ostream& operator<<(ostream&out,Money&m){
	out<<m.yuan<<"Ôª"<<m.jiao<<"½Ç"<<m.fen<<"·Ö"<<flush;
	return out;
}
int main(){
	Money m1(10,8,5);
	Money m2,m3;
	--m1;
	m2=m1;
	m1--;
	m3=m1;
	cout<<"m1: "<<m1<<endl;
	cout<<"m2: "<<m2<<endl;
	cout<<"m3: "<<m3<<endl;
	return 0;
}


C++实验6

1.数组合并 /*      * 文件名称:jykjg     * 作    者:李成真     * 完成日期:2016 年 5 月25 日      * 版 本 号:v1.0      ...
  • LiALiu
  • LiALiu
  • 2016年05月25日 23:36
  • 267

C++实验1

C++实验1
  • tmxk13
  • tmxk13
  • 2017年02月27日 00:01
  • 188

C++程序设计实验报告(九)

实验目的:学会使用循环控制语句解决实际问题 实验内容:编写大奖赛用计分程序 * 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了) * 程序的版权和版本声明部分 *...

C++程序设计实验报告 6-2

/* * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:      指针    ...

C++第4次实验(提高班)—函数

项目1:数组素数排序 定义一个有10个的数组a,将数组a中的所有素数放在数组b,再对数组b排序。 [cpp] view plain copy   #include    usi...

C++实验3—项目四:多分数段函数求值

一、问题及代码 /* * 文件名称:fx.cpp * 作 者:习佳星 * 完成日期: 2017 年 3 月 24 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: 输...

C++第四次实验-函数-项目2(奇偶阶乘)

一、问题及代码: /*  * 文件名称:求数组中奇数,偶数的阶乘  * 作    者:温天柱  * 完成日期:2017 年 4 月 10日  * 版 本 号:visual c++ 6...
  • WTZ2016
  • WTZ2016
  • 2017年04月10日 16:35
  • 258

c++第四次实验-继承与派生

一、问题及代码 /* * 文件名称:学生成绩 * 作 者:刘晓龙 * 完成日期:2016年5月6日 * 版 本 号: * 对任务及求解方法的描述部分:继承与派生 * 输入描述:输入...

C++实验4-百钱买百鸡问题

一、问题及代码 /* * 文件名称: c++实验4 * 作 者: 林子豪 * 完成日期: 2017年 4月 5日 * 版 本 号:v1.0 * 对任...

C++第六次上机实验—数组增减

一、问题及代码 /* * 文件名称: change.cpp * 作 者: 王聪 * 完成日期: 2016 年 5月 19 日 * 版 本 号:v1.0 * 对任务及求解方法的描述...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 实验九
举报原因:
原因补充:

(最多只允许输入30个字)