函数和重载实验报告
重载封装实验报告
一、实验目的1. 深入理解Java中方法重载的概念和特点。
2. 掌握封装的概念及其在Java编程中的应用。
3. 通过实际编程练习,提高对面向对象编程思想的理解和运用能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Eclipse IDE3. 编程语言:Java三、实验内容本次实验主要围绕方法重载和封装两个主题展开。
1. 方法重载(1)实验要求编写一个名为“Calculator”的类,实现以下方法重载功能:- 加法运算:重载一个名为“add”的方法,该方法接受两个整数参数,返回它们的和。
- 乘法运算:重载一个名为“add”的方法,该方法接受两个浮点数参数,返回它们的乘积。
- 字符串连接:重载一个名为“add”的方法,该方法接受两个字符串参数,返回它们的连接结果。
(2)实验步骤步骤1:创建一个名为“Calculator”的类。
步骤2:在“Calculator”类中定义三个重载的“add”方法。
步骤3:编写主类“Main”,在主方法中创建“Calculator”对象,并调用重载的方法进行测试。
(3)实验代码```javapublic class Calculator {public int add(int a, int b) {return a + b;}public double add(double a, double b) {return a b;}public String add(String a, String b) {return a + b;}}public class Main {public static void main(String[] args) {Calculator calc = new Calculator();System.out.println("整数加法结果:" + calc.add(3, 5));System.out.println("浮点数乘法结果:" + calc.add(3.5, 2.5));System.out.println("字符串连接结果:" + calc.add("Hello", "World"));}}```2. 封装(1)实验要求编写一个名为“Student”的类,实现以下封装功能:- 学生姓名:私有属性,通过公共方法获取和设置。
实验九 函数的重载和变量的作用域
实验九函数的重载和变量的作用域一、实验目的1、了解内联函数、重载函数、带默认参数函数的定义及使用方法。
2、掌握作用域的概念、变量的存储类型及它们之间的差别。
3、掌握程序的多文件组织。
二、实验内容1、重载函数允许不同的函数使用相同的名字,这使得完成类似的任务时可以使用相同的函数名。
范例:编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其内切圆、内接等腰三角形和等腰梯形面积。
函数原型如下: double area(double radius=0);//圆面积,参数为半径,默认参数为0,表示点面积 double area(double a, double b);// 计算矩形面积,参数为长和宽 double area(double a, double b, double h);//计算梯形面积,参数为两底和高 double area(double a, double b, double c, int);//计算三角形面积,参数为三边长,int 型参数起标示作用,以区别于梯形,不参加计算。
#include<iostream>#include<cmath>using namespace std;const double PI=3.14159;double area(double radius=0);double area(double a,double b);double area(double a,double b,double h);double area(double a,double b,double c,int);int main(){cout<<"Area of point is"<<area()<<'\t';cout<<"Area of square is"<<area(1,1)<<'\n';cout<<"Area of circle is"<<area(0.5)<<'\n';cout<<"Area of trapezium is"<<area(1,0.5,1)<<'\n';cout<<"Area of triangle is"<<area(1,sqrt(1+0.5*0.5),sqrt(1+0.5));return 0;}double area(double radius){return PI*radius*radius;}double area(double a,double b){return a*b;}double area(double a,double b,double h){return (0.5*(a+b)*h);}double area(double a,double b,double c,int){double s=0.5*(a+b+c);return sqrt(s*(s-a)*(s-b)*(s-c));}(1)编译运行程序,并记录运行结果,注意函数调用时,实参与形参之间的关系(包括类型、个数)。
运算符重载实验报告
运算符重载实验报告运算符重载实验报告引言:运算符重载是C++语言中的一项重要特性,它允许用户自定义运算符的行为。
通过运算符重载,可以使得程序更加直观、简洁,并提高代码的可读性和可维护性。
本实验旨在探索运算符重载的用法和效果。
一、实验目的本实验旨在通过实际操作,深入了解运算符重载的机制和使用方法,以及运算符重载对程序设计的影响。
二、实验环境本实验使用C++编程语言,并在Visual Studio开发环境下进行实验。
三、实验过程1. 了解运算符重载的基本概念运算符重载是指通过定义函数,改变运算符的行为。
在C++中,可以通过重载运算符函数来实现运算符的重载。
运算符重载函数的命名规则为"operator 运算符",例如"operator+"表示重载加法运算符。
2. 实现运算符重载的实验示例为了更好地理解运算符重载的使用方法,我们以矩阵的加法为例进行实验。
首先,定义一个Matrix类,并重载"+"运算符。
```cppclass Matrix {private:int** data;int rows;int cols;public:Matrix(int rows, int cols) {this->rows = rows;this->cols = cols;data = new int*[rows];for (int i = 0; i < rows; ++i) {data[i] = new int[cols];}}Matrix operator+(const Matrix& other) {Matrix result(rows, cols);for (int i = 0; i < rows; ++i) {for (int j = 0; j < cols; ++j) {result.data[i][j] = data[i][j] + other.data[i][j]; }}return result;}};```在上述代码中,我们定义了一个Matrix类,其中包含矩阵的数据成员data、行数rows和列数cols。
函数和重载实验报告
{
cin >> array[i];
}
cout << "\n整数部分.." << endl;
myCount(array,n);
cout << "\n实数部分.." << endl;
myCount(dd,5);
cout << "\n奇偶部分.." << endl;
myShow(array,n);
}
void myShow(int *array,int n)
{
int iபைடு நூலகம்sum=1;
for(i = 0;i < n; i++)
{
sum = sum * array[i];
if( array[i]%2 == 1)
cout << "奇数值是:" << array[i] << endl;
if( array[i]%2 == 0)
if(max < array[i])
max = array[i];
}
avg = sum / 5;
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
cout << "平均值是:" << avg << endl;
}
实验5 函数与重载
实验5 函数与重载一、实验目的1.掌握函数的声明、调用、实参与形参的值传递关系、返回值;2.理解函数重载,掌握函数重载的方法;3.理解递归的概念,掌握递归函数的定义与使用;二、实验内容及步骤时1.求三个数中最大的数(分别考虑整数、双精度数、长整数的情况)。
实验步骤:(1)分析问题,并确定变量的个数及类型和重载函数;(2)写出头文件及变量定义;(3)编写程序,运行并调试程序(4)输出正确的结果疑难:使用重载函数,的特点是:(1)函数名相同(2)函数的形参个数不同或至少有一个形参的类型不同。
第一次调用是三个整形数,第二次调用是三个长整形数,第三次调用是三个double型的数。
程序:#include<iostream>using namespace std;void fun(int x,int y,int z);void fun (long x,long y,long z);void fun (double a,double b,double z);int main(){int x,y,z;cout<<"输入三个整数:";cin>>x>>y>>z;fun(x,y,z);long a,b,c;cout<<"输入三个长整形的数:";cin>>a>>b>>c;fun(a,b,c);double h,g,f;cout<<"输入三个双精度的数:";cin>>h>>g>>f;fun(h,g,f);system("pause");return 0;}void fun(int x,int y,int z){int max=x;if(x<y)max=y;if(max<z)max=z;cout<<”max=”<<max<<endl;}void fun(long x,long y,long z){long max=x;if(max<y)max=y;if(max<z)max=z;cout<<”max=”<<max<<endl;}void fun(double x,double y,double z){double max=x;if(max<y)max=y;if(max<z)max=z;cout<<”max=”<<max<<endl;}结果:输入三个整数:1 2 3max=3输入三个长整形的数:123 456 789max=789输入三个双精度的数:12.3 63.55 2364.356max=2364.36请按任意键继续. . .2.定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则判断它是否是直角三角形。
Complex运算符重载实验实验报告
Complex运算符重载实验实验报告实验名称:Complex类的运算符重载姓名:XX 学号:XXXXXXXXXX 班级XXXXXXXX 完成日期:20XX-X-XX 实验目的:这个实验题目的主要目的是让同学们掌握c++运算符重载的用法过程描述:一、本实验中主要内容有创建一个Complex类,这个类需要完成的运算符重载有:(1)+ :重载+,用来完成两个复数的加法;(2)- :重载-,用来完成两个复数的减法;(3)* :重载*,用来完成两个复数的乘法;(4)<< :重载<<,用来输出一个复数,输出的格式为(a + b*i),其中a为实部,b为虚部。
二、本实验中1、首先定义一个名为Complex的类,其友元函数有六个,包括前面提到的+,-,*,<<的重载,以及附加功能/ 和== 的重载,具体如下:friend ostream& operator<<(ostream &os, const Complex& obj); //输出重载函数friend Complex operator+(const Complex &c1, const Complex &c2); // +运算符重载friend Complex operator-(const Complex &c1, const Complex &c2); // -运算符重载friend Complex operator*(const Complex &c1, const Complex &c2); // *运算符重载//附加功能friend Complex operator/(const Complex &c1, const Complex &c2); // /运算符重载friend bool operator==(const Complex &c1, const Complex &c2); // ==运算符重载2、其中数据成员有两个,分别为real(表示实部),img(表示虚部)。
[C++]运算符重载实验报告
+operator+(const COMPLEX &other): COMPLEX+operator-(const COMPLEX &other) : COMPLEX+operator-(): COMPLEX+operator=(const COMPLEX &other) : COMPLEX运行结果2. 程序的类结构图为:Tx,y:int+T(int a,int b)+&operator<<(ostream &os,T &a):friend ostream运行结果3. 程序的类结构图为:Shape+Area():virtual double const+PrintShapeName():virtual void const +Print():virtual void constPointx,y:int+Point(int=0,int=0)+SetPoint(int a,int b):void+GetX():int const+GetY():int const+PointShapeName():virtual void const +Print():virtual void constCircleradius:double+Circle(int x=0,int y=0,double r=0.0) +SetRadius(double r):void+GetRadius():double const+Area():virtual double const+Print():virtual void const+PrintShapeName():virtual void const 运行结果{cout<<'['<<x_size<<","<<y_size<<']'<<", "<<'['<<i_size<<","<<j_size<<']'; }int main(){Circle1 circle(0.0,0.0,3.0);circle.area();circle.perimeter();circle.print();cout<<"\n";Square1 square(0.0,0.0,3.0,3.0);square.area();square.perimeter();square.print();cout<<"\n";cout<<"圆的面积为:"<<circle.area()<<endl;cout<<"圆的周长为:"<<circle.perimeter()<<endl;cout<<"圆的圆心坐标和半径为:";circle.print();cout<<"\n\n";cout<<"正方形的面积为:"<<square.area()<<endl;cout<<"正方形的周长为:"<<square.perimeter()<<endl;cout<<"正方形的中心坐标和一个顶点坐标分别为:";square.print();cout<<"\n";return 0;}运行结果【实例编程】运行结果。
运算符重载类型转换与类实验报告范文
运算符重载类型转换与类实验报告范文实验题目运算符重载类型转换与类模板日期
班级
组别
姓名
类型
【实验目的】
1.掌握运算符重载的定义及实现。
2.熟练掌握运算符重载为类成员函数和重载为一般普通函数的区别。
3.掌握类型转换的方法。
【实验原理】
将运算符“+=”重载为适用于两个复数的复合赋值运算。
【实验器材】
微型计算机、ViualC++6.0集成软件平台
【实验步骤】
1.编辑源程序.2.对源程序进行编译并调试程序.3.连接并运行程序;4.检查输出结果是否正确。
程序设计如下:
#includeclaData{public:Data(doubler=0,doublei=0){real=r;imag =i;}Dataoperator+=(Data某);voidprint();private:
doublereal;doubleimag;};DataData::operator+=(Data某){real=某.real+real;imag=某.imag+imag;return某
thi;}voidData::print(){cout<
【实验结论】
讲的很好,很有指导意义。
函数的重载实验报告(3篇)
第1篇一、实验目的1. 理解函数重载的概念和原理。
2. 掌握函数重载的使用方法。
3. 通过实验加深对函数重载的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容函数重载是指在同一作用域内,允许存在多个名称相同但参数类型或数量不同的函数。
当调用函数时,编译器会根据参数列表的不同来选择合适的函数执行。
1. 实验一:基本函数重载(1)实验目的验证基本函数重载的实现和调用。
(2)实验步骤1)创建一个名为“FunctionOverload”的C++文件。
2)定义两个同名函数,但参数类型不同。
3)在主函数中调用这两个函数,并观察输出结果。
```cppinclude <iostream>using namespace std;void print(int num) {cout << "打印整数:" << num << endl;}void print(double num) {cout << "打印浮点数:" << num << endl;}int main() {print(10);print(3.14);return 0;}```(3)实验结果```打印整数:10打印浮点数:3.14```2. 实验二:重载函数的参数个数(1)实验目的验证重载函数的参数个数对函数调用的作用。
(2)实验步骤1)在“FunctionOverload”文件中添加两个同名函数,但参数个数不同。
2)在主函数中调用这两个函数,并观察输出结果。
```cppvoid print(int num1, int num2) {cout << "打印两个整数:" << num1 << "和" << num2 << endl;}void print(int num) {cout << "打印一个整数:" << num << endl;}int main() {print(1, 2);print(3);return 0;}```(3)实验结果```打印两个整数:1和2打印一个整数:3```3. 实验三:重载函数的参数类型(1)实验目的验证重载函数的参数类型对函数调用的作用。
实验四 函数和运算符重载
实验四函数重载和运算符重载(2学时)一、实验目的1.掌握函数的定义和调用方法。
2.练习重载函数的使用,注意与缺省参数的区别。
3.练习函数模板的使用。
4.练习运算符重载。
5.练习使用系统函数。
6.学习使用VC++的debug调试功能,使用step into追踪到函数内部。
二、实验任务1.定义一个简单的菜单类,运行时显示主菜单,可通过选择进入子菜单(可模仿ATM柜员机的模式,菜单内容可自行设定,相关功能函数可不用实现):主菜单:取现的子菜单1.转账 1.5002.余额查询 2.10003.取现 3.1500Q(退出) 4.返回主菜单请选择(A/S/F/Q)?选择相应的选项后悔执行相应模块并回到主菜单,选择Q则退出。
2.编写重载函数Maxl可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。
3.使用重载函数模板重新实现上小题中的函数Maxl。
4.使用系统函数pow(X,y)计算X y的值,注意包含头文件math.h。
5.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
6.写一个点point的类,并重载+实现两个点的坐标相加,和-实现求两点间的距离, >>、<<输入输出点的信息,(1)和(2)分别取点的x和y轴坐标。
三、实验步骤1.考虑抽取菜单的数据和相关操作。
2.分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。
程序名:lab3_2.cpp。
3.使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名函数模板maxl,其参数个数不同,实现函数重载,在main()函数中测试函数功能。
程序名:lab3_3.cpp。
4.在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用pow(x,y)函数计算x的Y次幂的结果,再显示出来。
程序名.1ab3_4.cpp。
5.编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。
实验报告_实验6 运算符重载(2)
实验报告_实验6 运算符重载(2)(学生学号
_姓名)
实验目的:
1、掌握使用友元函数重载运算符方法。
2、熟悉=、[]、插入(<<)、提取(>>)等运算符重载的方法;
3、通过案例了解运算符重载的应用效果;
4、熟悉标准库string类的基本用法;
5、了解CTime等MFC类中的运算符重载情况。
实验内容
1、(基础题)掌握用友元函数重载运算符的方法
要求:在下列程序的适当位置添加代码,,使用友元函数方法实现下列运算符重载:
添加的程序代码:
2、(基础题)程序代码:
3、(基础题)运行下列程序,体会、理解长度可变整型数组类的功能与实现方法,并回答相关问题。
(1)该类有哪几个数据成员?各具有什么功能?
(2)构造对象时要完成哪些工作?
(3)调用成员函数push_back(int v)如何扩展数组大小?
(4)该类怎样实现数组对象的赋值运算?
4、(基础题)回答问题:
问题1:如何生成名为school,内容为:广州大学华软软件学院字符串?
问题2:能否将C语言中的字符串直接赋给string对象?
问题3:如何取出string str=”计算机系计算机科学与技术专业”中的“计算机科学与技术专业”子串?
问题4:string::npos表示什么?它有什么用途(写出一种即可)?
问题5:请说明insert()的基本用法。
问题6:请说明replace()的基本用法。
函数的重载和变量的作用域
C++语言实验报告实验名称:函数的重载和变量的作用域实验日期:2011-5-6 实验预习报告日期:2011-5-6 实验目的1、了解内联函数、重载函数、带默认参数函数的定义及使用方法。
2、掌握作用域的概念、变量的存储类型及它们之间的差别。
3、掌握程序的多文件组织。
二、实验内容预习及准备(1)分析和设计(编程思路,关键公式、步骤或算法)实验一、重载函数允许不同的函数使用相同的名字,这使得完成类似的任务时可以使用相同的函数名。
范例:编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其内切圆、内接等腰三角形和等腰梯形面积。
实验源码#include<iostream> #include<cmath> using namespace std; const double PI=3.14159; double area(double radius=0); double area(double a,double b); double area(double a,double b,double h); double area(double a,double b,double c,int); int main(){cout<<"Area of point is:"<<area()<<endl; cout<<"Area of square is:"<<area(1,1)<<endl; cout<<"Area of circle is:"<<area(0.5)<<endl; cout<<"Area of trapezium is:"<<area(1,0.5,1)<<endl; cout<<"Area of triangle is:"<<area(1,sqrt(1+0.5*0.5),sqrt(1+0.5*0.5),0)<<endl; return 0; } double area(double radius){ return PI*radius*radius; } double area(double a,double b){ return a*b; } double area(double a,double b,double h){ return (0.5*(a+b)*h); } double area(double a,double b,double c,int){ double s=0.5*(a+b+c); return sqrt(s*(s-a)*(s-b)*(s-c)); } 实验过程记录实验要求1、若将计算矩形面积的函数原型改为double area(double a=0, double b=0);重新编译运行情况会怎样?为什么?编译错误,无法执行2、若将计算三角形面积的函数原型改为double area(double a, double b,double c);程序还能正确运行吗?为什么?不能,输出流对象输出的函数与定义函数不对应3、若将计算三角形面积的函数原型改为double area(double a, double b,double c=0,int); 程序还能正确运行吗?为什么?不能,输出流对象输出的函数与定义函数不对应实验二、编程:将上题以多文件方式组织,在area.h 中声明各个area( )函数原型,在area.cpp 中定义函数,然后在Exp9_2.cpp 中包含area.h,并定义main( )函数并执行。
实验07_多态性_函数与运算符重载
实验07.多态性-函数与运算符重载7.1实验目的1、理解动态联编和动态联编的概念;2、理解掌握成员函数方式运算符重载;3、理解掌握友元函数方式运算符重载;4、理解掌握++、--、=运算符的重载;7.2实验内容7.2.1程序阅读与调试1.理解下面的程序,并在Code::Blocks下运行查看结果,回答程序后面的问题。
问题1:①处的运算符重载,为什么该函数的返回值要设计成CComplex类型问题2:②处的运算符重载函数调用就相当于“obj=operator+(obj1,obj2);”,但是为什么CComplex类中的运算符重载函数只设计了一个参数。
问题3:本程序的执行结果是什么。
——请将上述问题的解答填写在实验报告对应题号下面。
2.理解下面的程序,并在Code::Blocks下运行查看结果,回答程序后面的问题。
问题1:以上程序中的三个运算符重载都有错误,试改正过来,并分析该程序的输出结果?——请将上述问题的解答填写在实验报告对应题号下面7.2.2程序设计1.对7.2.1中的第2个程序,如果要实现后缀的--,即在主函数中添加以下语句:CComplex obj5 = obj3--;cout << "postfix after , obj5=obj3--; obj5 = "; obj5.print();cout << "postfix after , obj5=obj3--; obj3 = "; obj3.print();后输出:postfix after , obj5=obj3--; obj5 = 6.7 + 6.7ipostfix after , obj5=obj3--; obj3 = 5.7 + 5.7i应该如何扩展程序。
该程序命名为exp07_p1_1.cpp。
7.3思考题1、定义CPoint类,有两个成员变量:横坐标(x)和纵坐标(y),对CPoint 类重载“++”(自增运算符)、“--”(自减运算符),实现对坐标值的改变。
C++实验3成员函数的重载
实验3 成员函数的重载1.实验目的及要求:1)掌握普通函数重载的方法;2)掌握成员函数重载的方法;2.实验内容:2.1分析下面的程序,指出程序运行的结果:class ListClass{int *List ;unsigned nMax ;unsigned nElem ;public:void Init (int n=10){List=new int [n] ;nMax=n ;nElem=0 ;}int Elem(int);int &Elem(unsigned n){return List [n] ;}unsigned Elem(void) {return nElem ;}unsigned Max (void){return nMax ;}void Print (void) ;int GetElem(int i){if((i>=0)&&(i<=nElem))return List [i] ;else return 0;}void Destroy (void) {delete [nMax]List ;}};int ListClass ::Elem(int elem){if(nElem<nMax){List[nElem++]=elem;return nElem ;}else{int*list ;list=new int [nMax+1];for(int i=0 ; i<nElem ; i++) list [i]=List[i] ;delete [nMax]List ;nMax++ ;List=list;List[nElem++]=elem ;return nElem ;}}void ListClass ::Print(void){for(int i=0 ;i<nElem ; i++) cout <<List[i]<<'\t';cout<<'\n';}void main (void ){ ListClass list ,list1;list.Init(10);list1.Init(20);for (int i=0 ; i<10 ; i++)list1.Elem(i) ;cout<<"线性表list的元素的个数为:"<<list.Elem()<<'\n' ;cout<<"线性表list长度为:"<<list.Max()<<'\n' ;cout<<"线性表list1的元素的个数为::"<<list1.Elem()<<'\n' ;cout<<"线性表list1长度为:"<<list1.Max()<<'\n';list1.Print();list1.Elem(3u)=100 ;cout<<"现在线性表list1中的第三个值为:"<<list1.Elem(3u)<<'\n' ;list1.Elem(20);list1.Elem (200);cout<<"现在线性表list1中元素的个数为:"<<list1.Elem()<<'\n' ;list1.Print();cout<<"现在线性表list1中的最后一个元素为:"<<list1.GetElem(list1.Elem()-1)<<'\n' ;list.Destroy();list1.Destroy();}程序执行过程如下:程序运行情况和结果如下:3.2 编写并调试程序:1) 使用函数重载的方法定义两个重名函数,分别求出整型数的两点间距离和实型数的两点间距离。
运算符重载—C++课程实验报告
using namespace std; class AB
{
public:
AB(int xx, int yy); void ShowAB(); AB& operator ++(); AB operator ++(int);
AB& operator --();
AB operator --(int);
通过这次实验我基本掌握了通过运算符重载实现多态性的方法学会了运算符重载的成员函数法和友元函数法基本能够区分单目运算符的前置与后置
C++
学生姓
名
xxx
班级
学号
xxxxxxxxx
实验项
目
实验四运算符重载
指导教师
杜之波
实验目
的和要
求
一、实验目的
(1)掌握通过运算符重载实现多态性的方法;
(2)学会运算符重载的成员函数法和友元函数法;
运算后,
A的值为:"
什+AA).ShowAB();
coutvv"
B
的值为:";
(++BB).ShowAB();
cout<v"B=A--运算后,A的值为:";
(--AA).ShowAB();
coutvv"B的值为:";
(BB--).ShowAB();
cout<<"B=--A运算后,A的值为:";
(--AA).ShowAB();
{
AB AA(0,0);
AB BB(0,0);
cout<v"A的值为:";
实验3 虚函数与函数重载实验-4h
C++应用程序的验证与编写(续) 应用程序的验证与编写( 应用程序的验证与编写 5,设计一个虚基类CBase,包含姓名和年龄私 ,设计一个虚基类 , 有数据成员以及相关的成员函数, 有数据成员以及相关的成员函数,由它派生出 领导类CLeader,包含职务和部门私有数据成 领导类 , 员以及相关的成员函数.再由CBase派 生出工 员以及相关的成员函数.再由 派 程师类CEngineer,包含职称和专业私有数据 程师类 , 成员以及相关的成员函数.然后由CLeader和 成员以及相关的成员函数.然后由 和 CEngineer类派生出主任工程师类 类派生出主任工程师类CChairman. 类派生出主任工程师类 . 采用一些数据进行测试. 采用一些数据进行测试.
C++应用程序的验证与编写 应用程序的验证与编写
验证: 验证:
1,教材重载部分例子. ,教材重载部分例子. 2,教材虚函数部分例子. ,教材虚函数部分例子.
练习: 练习: 第一次作业: 第一次作业:
1,分析以下程序执行结果,并说明原因. ,分析以下程序执行结果,并说明原因. using namespace std; int add(int x, int y) { return x + y; } double add(double x, double y) { return x + y; } int main( ) { int a = 4, b = 6; double c = 2.6, d = 7.4; cout << add(a, b) << ", "<< add(c, d) << endl; }
实验3 实验3
虚函数与函数重 载实验
运算符重载-- 实验报告
南昌航空大学实验报告2011年12月1号课程名称:面向对象程序设计B 实验名称:运算符重载班级:姓名:同组人:无指导教师评定: 签名:一、实验目的理解运算符重载(非成员形式和成员形式)、学习重载几类运算符(++,=,!=,+,-,==等)。
二、实验内容应用VC++6.0的构建一个复数类Complex,试对下列几个运算符进行重载:++,=,!=,+,-,==,其中要求要有成员重载形式和友元重载形式,而且,++运算符要求实现先加和后加两种形式。
三、概要设计函数原型:class complex{private:double real;double image;public:complex(double r=0,double i=0);complex &operator+(complex &c);complex operator-(complex &c);complex operator*(complex &c);friend complex operator/(complex &c1,complex &c2);friend bool operator==(complex &c1,complex &c2);friend bool operator!=(complex &c1,complex &c2);complex operator++();complex operator++(int);void show();};四、详细设计重载运算符 + 的函数:complex &complex::operator+(complex &c){complex temp;temp.real=real+c.real;temp.image=image+c.image;return temp;}重载运算符 - 的函数:complex complex::operator-(complex &c){complex temp;temp.real=real-c.real;temp.image=image-c.image;return temp;}重载运算符 * 的函数:complex complex::operator*(complex &c){complex temp;temp.real=real*c.real;temp.image=image*c.image;return temp;}重载运算符 / 的函数:complex operator/(complex &c1,complex &c2){complex temp;double t;t=1/(c2.real*c2.real+c1.image*c1.image);temp.real=(c1.real*c2.real+c1.image*c2.image)*t;temp.image=(c2.real*c1.image-c1.real*c2.image)*t;return temp;}重载运算符 == 的函数:bool operator==(complex &c1,complex &c2){if(c1.real==c2.real&&c1.image==c2.image)return true;elsereturn false;重载运算符 != 的函数:bool operator!=(complex &c1,complex &c2){if(c1.real!=c2.real||c1.image!=c2.image) return true;elsereturn false;}重载运算符 ++ 的函数:complex complex::operator++(){++real;++image;return *this;}complex complex::operator++(int){real++;image++;return *this;}五、程序调试经调试无误后,运行的结果为:六、实验总结通过这次的试验,我明显的感觉到自己对这方面的知识掌握的还不够熟练,不能顺利地、流畅地运用这方面的知识,因为我没有在规定的时间内完成程序的设计,课后还是要多复习。
C++实验报告——函数
评分签名日期湖南商学院实验报告课程名称 C++语言程序设计实验名称函数专业班级姓名学号实验日期第四周星期三七八节实验地点E6032011—2012学年度第二学期一、实验目的1.掌握函数声明、定义和使用的方法。
2.掌握形式参数与实在参数之间的对应关系;掌握函数调用时形参、实参之间的“值传递”和“地址传递”的区别。
3.掌握函数递归调用的方法。
4.掌握内联函数、重载函数及默认函数参数的使用方法。
5.掌握自定义头文件的方法,学会建立和调试多文件程序。
二、实验内容1.编写一个求整数n阶乘(n!)的程序。
将求n阶乘的过程设计成函数供主函数调用,参数为n,返回为n阶乘的值。
2.定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是传址参数,在程序中分别调用这两个函数。
3.求斐波那契数列。
将求斐波那契数列的过程设计成递归函数,参数为数列的项数,由主函数调用。
4.输入并运行下列程序,分析和写出各程序的运行结果。
(1)//内联函数#include <iostream>#include <cstdlib>//内联函数定义inline void error_message(char *a){std::cout<<'\a'<<a;exit(1);}void main(){error_message("You called?");}(2)函数重载——复制字符串#include <iostream.h>//string_copy()第一版本void string_copy(char *dest,const char* src){while((*dest++=*src++)!='\0');}//string_copy()第二版本void string_copy(char *dest, const char* src,int len){while(len && (*dest++=*src++)!='\0')--len;while(len--)*dest++='\0';}char misspiggy[20],kermit[20];void main(){string_copy(misspiggy,"Miss Piggy");string_copy(kermit,"Kermit,the file transfer protocol",6);cout<<kermit<<" and "<<misspiggy<<endl;}(3)具有默认参数的函数#include <iostream.h>//原形void show(int =1,float =2.5,long =5);void main(){show(); //提供所有三个默认变量show(5); //提供第一个变量show(6,8.8f); //提供第一个和第二个变量show(7,7.5,10L); //提供所有三个变量}//显示默认变量的结果void show(int first ,float second, long third){cout<<" first ="<<first;cout<<", second ="<<second;cout<<",third ="<<third<<endl;}5.将实验2改编成为多文件结构的程序。
实验六 函数与重载
实验六函数与递归一、实验目的1.熟悉函数的定义和调用格式,以及值参和引用参数的各自作用。
2.熟悉变量的定义和使用规则,变量的作用域和生存期的概念。
3.进一步掌握递归的概念和递归函数的使用。
4.熟悉模板函数的定义格式和使用模板函数的作用,模板函数与重载函数的关系。
5.了解函数指针的概念和函数参数的使用。
二、实验内容1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用两个函数,并输出结果,两个整数由键盘输入。
/*********************************************************#include <iostream.h>void main (){void z1(int m,int n);int x,y,temp;cin>>x;cin>>y;if(x<y){temp=x;x=y;y=temp;}z1(x,y);cout<<endl;}void z1(int m,int n){if(m%n==0){cout<<"最小公倍数是:"<<m<<endl;cout<<"最大公约数是:"<<n<<endl;}if(m%n!=0){int q,r;r=m*n;while(m%n!=0){q=m%n;m=n;}m=r/n;cout<<"最小公倍数是:"<<m<<endl;cout<<"最大公约数是:"<<n<<endl;}}/*********************************************************2.写一个判别素数的函数。
/********************************************************* #include<iostream>#include<math.h>using namespace std;int main(void){int data(int num);int x,p;cout<<"请输入一个正整数:";cin>>x;p=data(x);if(p)cout<<x<<"是素数"<<endl;elsecout<<x<<"不是素数"<<endl;return 0;}int data(int num){int i,k;k=sqrt(num);for(i=2;i<=k;i++)if(num%i==0)break;if(i>=k+1&&num!=1)return 1;else}/*********************************************************3.用递归法将一个整数n转换成字符串。
C++ 函数实验报告
实验报告课程名称 C++语言程序设计实验名称函数专业班级信管1402姓名黄涛学号 1405020031实验三一、实验名称:函数二、实验目的1、复习并掌握C++函数的定义方法和调用形式。
2、学习使用函数原型来声明函数。
3、掌握函数参数的传递方式,透彻理解值传递方式和引用传递方式之间的区别。
4、掌握递归函数的设计方法。
5、学习并掌握函数重载技术。
6、学习并掌握函数模板技术。
7、进一步学习程序的调试方法。
三、实验内容1.编写一个函数完成两个整数的加法运算,并返回运算结果。
要求使用函数原型声明该函数。
程序代码:#include <iostream>using namespace std;int add(int a,int b);int main(){int x,y,sum;cout<<"enter x and y:"<<endl;cin>>x>>y;sum=add(x,y);cout<<"sun="<<sum<<endl;return 0;}int add(int a,int b){ return a+b;}2.定义一个函数计算一个正整数各位数字之和,要求不使用函数返回值和指针返回运算结果。
程序代码:#include <iostream>using namespace std;void sum(int n,int &s);int main(){int n,s;cout<<"enter n:"<<endl;cin>>n;sum(n,s);cout<<"sum="<<s<<endl;return 0;}void sum(int n,int &s){s=0;while(n){s+=n%10;n=n/10;}}3.编写递归函数求解n阶勒让德多项式的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
void myCount(int *array,int n)
{
int min,max,i,sum=0,avg;
min = array[0];
max = array[0];
for(i = 0;i < n; i++)
{
sum = sum + array[i];
if(min > array[i])
}
void myCount(double *array,int n)
{
int i;
double min,max,avg,sum = 0;
min = array[0];
max = array[0];
for(i = 0;i < n; i++)
{
sum = sum + array[i];
if(min > array[i])
cout << "偶数值是:" << array[i] << endl;
}
cout << "积的值是:" << sum << endl;
}
程序运行结果:
please enter n:5
Please enter n number:3,9,1,8,5
整数部分…
最大值是:9最小值是:1平均值是:5
实数部分…
for(i=0;i < n;i++)
{
cin >> array[i];
}
cout << "\n整数部分.." << endl;
myCount(array,n);
cout << "\n实数部分.." << endl;
myCount(dd,5);
cout << "\n奇偶部分.." << endl;
myShow(array,n);
c.对于函数myCount分别采用整形数和浮点数两种重载方式。
d.函数的定义分别如下:
Void myCount(int *parray,int n)
Void myCount(double *parray,int n)
可以参考如下程序:
#include <iostream.h>
main()
{
int array[5]={4,34,5,6,22};
}
void myShow(int *array,int n)
{
int i,sum=1;
for(i = 0;i < n; i++)
{
sum = sum * array[i];
if( array[i]%2 == 1)
cout << "奇数值是:" << array[i] << endl;
if( array[i]%2 == 0)
int i = 0, min = 0, max = 0, avg = 0, sum = 0;
min = array[0];
max = array[0];
for(i = 0;i < 5; i++)
{
sum = sum + array[i];
if(min > array[i])
min = array[i];
int n;
int i = 0, min = 0, max = 0, avg = 0, sum = 0;
cout << "please enter n:" << endl;
cin >> n;
array = new int[n];
cout << "Please enter n number:" << endl;
最大值是:9.3最小值是:3.5平均值是:6.2
奇偶部分…
奇数值是:3奇数值是:9奇数值是:1偶数值是:8奇数值是:5
min = arra)
max = array[i];
}
avg = sum / n;
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
cout << "平均值是:" << avg << endl;
min = array[i];
if(max < array[i])
max = array[i];
}
avg = sum / n;
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
cout << "平均值是:" << avg << endl;
实验二
[
1.基本要求:求一个数组的最大值,最小值,平均值。
提高要求:输出一个数组的偶数,奇数,所有元素的积。(有能力的同学做)
2.要求:
a.在主函数main中实现数组大小n的输入,并根据数组的大小从键盘接收n个数
b.将数组和数组的大小传入函数myCount进行计算数组的最大值,最小值,平均值并输出。
if(max < array[i])
max = array[i];
}
avg = sum / 5;
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
cout << "平均值是:" << avg << endl;
}
答案:
#include <iostream.h>
void myCount(int *parray,int n);
void myCount(double *parray,int n);
void myShow(int *parray,int n);
main()
{
double dd[5] = {3.5,5.5,4.0,9.3,8.7};
int *array;