C面向对象实验报告1.doc_第1页
C面向对象实验报告1.doc_第2页
C面向对象实验报告1.doc_第3页
C面向对象实验报告1.doc_第4页
C面向对象实验报告1.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子与信息工程系实验报告 C+面向对象程序设计实验报告专 业: 计算机科学与技术 班 级: 2012级软件方向 学 号: 2012020244 姓 名: 孙 浩 C+面向对象程序设计实验卡片实验编号:3280121301实验名称及学时:代码组织案例1姓 名:孙浩班 级:2班计本二班学 号:2012020244实 验 室:实验情况评价(教师填写):建议实验成绩(教师填写):1.实验内容(1) 熟悉VC+6.0开发环境,能进行项目和相关文件的建立,程序的编译和调试.(2) 复数是个很有用的概念,在数字信号处理等方面发挥了重要作用.在C+的标准程序库中对它进行了实现.本次任务: (A)以C的程序结构来实现进行复数的基本运算,两个复数加,减,乘,除. (B)根据面向对象的程序设计方法,创建相关复数类实现复数的相关运算. (C)分析自己的复数类,有那些方面有待改进.2.预习内容VC开发环境的使用,回顾C语言解决问题的基本流程,面向对象分析,使用抽象,封装实现类的编写测试.3.实验类型验证型4.实验目的(1) 掌握VC+ 6.0开发环境的使用,程序的调试方法.(2) 回顾复习C的结构体及函数的使用,来解决数学问题.(3) 掌握面向对象的分析方法,会从问题域中抽象出相关的类,及在VC6.0中使用C+规则描述类的属性和行为.(4) 使用面向对象的分析方法,对程序进行分析5.实验要求(1) 打开VC环境直接创建源文件进行编码测试,请使用C和C+两种方式解决问题.(2) 完成实验内容要求并进行测试,分析结果,对比两种方式优缺点。6.实验过程(源文件、步骤及结果分析)#include #include typedef struct fushu/抽象数据类型定义 float real;/数据对象 float image; fushu; fushu ComplexNumberInput(float a,float b)/构造二元组 fushu c; c.real=a;/实部 c.image=b;/虚部 return(c); fushu ComplexNumberAdd(fushu c1,fushu c2)/求和运算 fushu sum; sum.real=c1.real+c2.real; sum.image=c1.image+c2.image; return (sum); fushu ComplexNumberSub(fushu c1,fushu c2)/求差运算 fushu sub; sub.real=c1.real-c2.real; sub.image=c1.image-c2.image; return (sub); fushu ComplexNumberMul(fushu c1,fushu c2)/求积运算 fushu Mul; Mul.real=c1.real*c2.real-c1.image*c2.image; Mul.image=c1.real*c2.image+c1.image*c2.real; return (Mul); fushu ComplexNumberDiv(fushu c1,fushu c2)/求商运算 fushu div; float d1,d2,d3,d4; d1=c1.real*c2.real+c1.image*c2.image; d2=c2.real*c2.real+c2.image*c2.image; d3=c1.image*c2.real-c1.real*c2.image; d4=c2.real*c2.real+c2.image*c2.image; if(d2!=0&d4!=0) div.real=d1/d2; div.image=d3/d4; return(div); else div.real=0; div.image=0; return(div); void ComplexNumberOutput(fushu c)/输出运算结果 if(c.real=0.0&c.image=0.0) printf(0n); if(c.real=0.0&c.image!=0.0) printf(%fin,c.image); if(c.real!=0.0&c.image=0.0) printf(%fn,c.real); if(c.real!=0.0&c.image!=0.0) printf(%f+(%fi)n,c.real,c.image); void main()/主函数 int choice; int k; float a1,a2,b1,b2; struct fushu c1,c2,sum,sub,mult,div; printf(欢迎进行复数的基本代数运算n); printf(1: 复数加法运算n); printf(2: 复数减法运算n); printf(3: 复数乘法运算n); printf(4: 复数除法运算n); printf(0: 推出系统n); printf(请分别输入第一个复数的实部和虚部: ); scanf(%f%f,&a1,&b1); c1 = ComplexNumberInput(a1,b1); printf(第一个复数为: ); ComplexNumberOutput(c1); printf(请分别输入第二个复数的实部和虚部: ); scanf(%f%f,&a2,&b2); c2 = ComplexNumberInput(a2,b2); printf(第二个复数为: ); ComplexNumberOutput(c2); for(;) printf(请输入你选择的功能: ); scanf(%d,&choice); switch(choice) case 0:exit(0); break; case 1:sum = ComplexNumberAdd(c1,c2); printf(求和后结果为: ); ComplexNumberOutput(sum); break; case 2:sub = ComplexNumberSub(c1,c2); printf(求差后结果为: ); ComplexNumberOutput(sub); break; case 3:mult = ComplexNumberMul(c1,c2); printf(求积后结果为: ); ComplexNumberOutput(mult ); break; case 4:div=ComplexNumberDiv(c1,c2); if(div.real!=0&div.image!=0) printf(求商后结果: ); ComplexNumberOutput(div); break; else printf(除零错误,请重新输入第二个复数;n); k=0; exit(k); #include #include #include using namespace std;class Complexpublic:double real,imag; Complex()real=0.0;imag=0.0; Complex(double r,double i) /构造函数 real=r; imag=i; Complex() Complex operator+(Complex &c) /加法重载 Complex sum; sum.real=real+c.real; /实部相加 sum.imag=imag+c.imag; /虚部相加 return sum; Complex operator-(Complex &c) /减法重载 Complex sub; sub.real=real-c.real; /实部相减 sub.imag=imag-c.imag; /虚部相减 return sub; Complex operator*(Complex &c) /乘法重载 Complex multi; multi.real=real*c.real-imag*c.imag; /实部乘积 multi.imag=real*c.imag+imag*c.real; /虚部乘积 return multi; Complex operator/(Complex &c) /除法重载 Complex div; div.real=(real*c.real+imag*c.imag)/(c.real*c.real+c.imag*c.imag); /实部除积 div.imag=(imag*c.real-real*c.imag)/(c.real*c.real+c.imag*c.imag); /虚部除积 return div; int Complex: operator=(Complex &c)if(real=c.real&imag=c.imag)return 1;elsereturn 0; int Complex: operator!=(Complex &c)if(real=c.real&imag=c.imag)return 0;elsereturn 1; void Add() /复数加法运算函数 double a,b,c,d; cout加法计算n最少输入两个复数,并且以0结束n; coutab; coutcd; Complex num1(a,b),num2(c,d),sum,zero(0,0); sum=num1+num2; double x,y; coutxy;Complex num(x,y); int i=4; while(!(num=zero) sum=sum+num; cout第iab; num.real =a; num.imag =b; i+; if(sum.imag 0) cout加法结果是:sum.real+sum.imagjendl; else cout加法结果是:sum.realsum.imagjendl; cout请按任意键继续n; void Sub() /复数减法运算函数 double a,b,c,d; cout减法计算n最少输入两个复数,并且以0结束n; coutab; coutcd; Complex num1(a,b),num2(c,d),sub,zero(0,0); sub=num1-num2; double x,y; coutxy;Complex num(x,y); int i=4; while(!(num=zero) sub=sub-num; cout第iab; num.real =a; num.imag =b; i+; if(sub.imag0) cout减法结果是:sub.real+sub.imagjendl; else cout减法结果是:sub.realsub.imagjendl; cout请按任意键继续n; void Mul() /复数乘法运算函数 double a,b,c,d; cout乘法计算n最少输入两个复数,并且以0结束n; coutab; coutcd; Complex num1(a,b),num2(c,d),mul,zero(0,0); mul=num1*num2; double x,y; coutxy;Complex num(x,y); int i=4; while(!(num=zero) mul=mul*num; cout第iab; num.real =a; num.imag =b; i+; if(mul.imag 0) cout乘法结果是:mul.real+mul.imagjendl; else cout乘法结果是:mul.realmul.imagjendl; cout请按任意键继续n; void Div() /复数除法运算函数 double a,b,c,d; cout除法计算n最少输入两个复数,并且以0结束n; coutab; coutcd; Complex num1(a,b),num2(c,d),div,zero(0,0); div=num1/num2; double x,y; coutxy;Complex num(x,y); int i=4; while(num!=zero) div=div/num; cout第iab; num.real =a; num.imag =b; i+; if(div.imag0) cout除法结果是:div.real+div.imagjendl; else cout除法结果是:div.realdiv.imagjendl; cout请按任意键继续n; void main() /主函数开始 char strChoise20; /定义字符串名 system(cls); coutt这是一个复数计算器,可以实现以下功能,请按对应的按键(0-4)nnn; coutt*菜单*n; coutt1:多复数加法,以0结束n; coutt2:多复数减法,以0结束n; coutt3:多复数乘法,以0结束n; coutt4:多复数除法,以0结束n; coutt0:退出程序nn:; coutstrChoise; if(strcmp(strChoise,1)=0) /用户选1则调用Add()函数 Add(); else if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论