




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+课程设计实验报告姓名 学号 班级 合作者 学号 班级 任课教师 时间 教师指定题目 复数计算器 评定难易级别 A级 实验报告成绩 复数计算器程序功能设计1 程序功能的总体结构复数计算器的程序总体功能可设计成如图所示,可以看出,复数计算器的各种功能都用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能。2课程设计要求(1) 一开始运行程序,要有详细的菜单选项界面,用户不选择退出就可以反复运算。(2) 可以进行多个操作数的复数运算,输入00i时为止。(3) 编写可以对输入的复数求模的成员函数。(4) 编写具有测试功能的函数,即计算机能够自动出题,并要求用户计算,同时计算机判断用户计算的对错并打分,要求十题为一个单元,每题一个运算符,运算符包括,三种,参与加减运算实部虚部为一位数。(5) 重载输入输出运算符,对复数的输入既可采用实部虚部分开提示输入,也可直接输入诸如或这种形式,对复数的输出要考虑实部虚部的正负号,通过判断给出的输出结果。开始输出菜单及提示信息输入选择是否做加法 N是否做减法 N Y是否进行测试 N加法子程序Add() Y . . . . . . 减法子程序 Y测试子程序是否退出 N Y结束 2 程序设计思想1)类的封装程序中将复数形式的数据定义成一个复数类CComplex,重载了加法及减法等运算符,使函数的加减等运算像一般数据一样方便.每个运算符重载都用一个函数去实现。参考类的定义如下:class CComplexprivate:double Real,Image;public:CComplex(double real=0,double image=0) /构造函数Real=real;Image=image;friend istream&operator(istream&is,CComplex&com); /重载输入friend ostream&operator(CComplex&com);int operator运算符,其功能是让用户能够直接输入a+bi,a+b*i两种形式的复数,其结构框图如图3所示。 以字符串的形式接受复数对象求字符串长度初试化当前数值n=0,字符变量 sign=1字符串是否存在非法字符 Y输出错误信息,函数返回是否判别完字符串中所有字符 N Y最后一个字符不是i且n!=0当前字符为+、号,同时n!=0 N复数对象只有实部,前面取出的数值赋给实部 N前面取出的数值赋给实部,n=0 N结束当前字符是否是+ NSign=1,k+当前字符是否是 NSign=1,k+当前字符是否是为i i是否是最后一个字符 N YYN输出错误信息,函数返回 当前字符是否是数字字符NN将字符转变为数值NY3 程序界面开始界面运行结果界面4程序源代码及详细注解:# include# include# include# include#define Z 1e-6class CComplexprivate:double Real,Image;public:CComplex(double real=0,double image=0) /构造函数Real=real;Image=image;friend istream&operator(istream&is,CComplex&com); /重载输入friend ostream&operator(CComplex&com);int operator(CComplex&com) /重载“”运算符,比较复数的模if(Module()com.Module()return 1; /大于,则返回1else return 0;int CComplex: operator(CComplex&com) /重载“”运算符,比较复数的模if(Module()com.Module()return 1; /小于,则返回1else return 0;float CComplex:Module()float t;t=sqrt(Real*Real+Image*Image);return t;/cin.get();/cin.get();int CComplex:operator=(CComplex&com) /重载“=”运算符,分别判断两个复数对象的实部与虚部if(Real=com.Real&Image=com.Image)return 1; /实部与虚部分别相等返回1else return 0;void Add()CComplex a1,a2,sum,f(0,0);cout加法计算endl最少输入两个复数,并以零结束endl;cout第一个复数a1;cout第二个复数a2;sum=a1+a2;cout第三个复数a1;int i=4;while(!(a1=f) sum=sum+a1; cout第i个复数a1;i+;cout结果sumendl;cout按任意键继续endl;/cout.flush();cin.get();void Sub()CComplex a1,a2,sub,f(0,0);cout减法计算endl最少输入两个复数,并以零结束endl;cout第一个复数a1;cout第二个复数a2;sub=a1-a2;cout第三个复数a1;int i=4;while(!(a1=f) sub=sub-a1; cout第i个复数a1;i+;cout结果:subendl;cout按任意键继续endl;/cout.flush();cin.get();void Mul()CComplex a1,a2,mul,f(0,0);cout乘法计算endl最少输入两个复数,并以零结束endl;cout第一个复数a1;cout第二个复数a2;mul=a1*a2;cout第三个复数a1;int i=4;while(!(a1=f) mul=mul*a1; cout第i个复数a1;i+;cout结果:mulendl;cout按任意键继续endl;/cout.flush();cin.get();void Div()CComplex a1,a2,div,f(0,0);cout除法计算endl最少输入两个复数,并以零结束endl;cout第一个复数a1;cout第二个复数a2;div=a1/a2;cout第三个复数a1;int i=4;while(!(a1=f) div=div/a1; cout第i个复数a1;i+;cout结果:divendl;cout按任意键继续endl;/cout.flush();cin.get();void Compare(void)cout 复数模比较 endl; CComplex a1,a2;cout输入两个复数:endl;couta1;couta2;if(a1=a2)cout这两个复数相等a2)couta1的模大于a2的模endl;else if(a1a2)couta1的模小于a2的模endl; cout按任意键继续(istream&is,CComplex&com) /重载输入,可以输入a+bi,也可以输入a+b*ichar s100;iss; /字符串s用于接收复数int len=strlen(s);int n=0,sign=1; /n为当前从字符串中提取出来的数字,初始化为0;sign为n的符号,初始化为正com.Image=com.Real=0; if(len=4)for(int k=0;klen;k+) /判断字符串是否合法if(sk9)&(sk!=+&sk!=-&sk!=i)coutErrorendl; /若字符串不是19的数字或“+”、“-”、“=”则错误,输出Errorreturn is;for(k=0;klen;) /依次识别字符串中和字符if(n!=0&(sk=-|sk=+) /判断是否为符号位com.Real=sign*n; /是符号,且n!=0,n已被赋值,当前读取的是虚部的符号 n=0; /将sign*n的值赋给实部,然后n清零,准备接受虚部的值 if(sk=-)sign=-1;k+; /给符号标志赋值 if(sk=+)sign=1;k+; /给符号标志赋值 if(sk=i) /若当前字符为i if(k!=len-1) /判断i是否为最后一个字符cout=0&sk=9) /当字符在09之间是,将数字字符转化为数字数值n=n*10+sk-0;k+;if(slen-1!=i&n!=0) /如果最后一个字符不是i,表示复数只有实部,没有虚部com.Real=n*sign;return is;elsefor(int k=0;klen;k+) /依次识别字符串中和字符if(sk9)&(sk!=+&sk!=-&sk!=i&sk!=*) /若字符串不是19的数字或“+”、“-”、“=”、“*”则错误,输出ErrorcoutErrorendl;return is;for(k=0;klen;) /依次识别字符串中和字符if(n!=0&(sk=-|sk=+) /判断是否为符号位com.Real=sign*n;n=0; if(sk=-)sign=-1;k+; /给符号标志赋值 if(sk=+)sign=1;k+; /给符号标志赋值 if(sk=*) /若当前字符为*k+;com.Image=sign*n; if(sk=i) /若当前字符为i if(k!=len-1) /判断i是否为最后一个字符cout=0&sk=9) /当字符在09之间是,将数字字符转化为数字数值n=n*10+sk-0;k+;if(slen-1!=i&n!=0) /如果最后一个字符不是i,表示复数只有实部,没有虚部com.Real=n*sign;return is;ostream&operator(ostream&os,CComplex&com) /重载输出if(fabs(com.Image)Z) /如果虚部为零 oscom.Real; /只输出实部; else if(fabs(com.Real)Z) /如果实部为零 oscom.Image0) oscom.Real+com.Imagei; /虚部为正,用“+”连接实部与虚部else oscom.Realcom.Imagei; /虚部为负,虚部的符号连接实部与虚部 return os;void Test(void)double real1,real2,real3,real4,image1,image2,image3,image4;CComplex answer,f5;int score=0;char op;for(int i=1;i=10;i+)real1=rand()%200-100; /产生随机的两位数,可正可负 image1=rand()%200-100; real2=rand()%200-100; image2=rand()%200-100;CComplex f1(real1,image1),f2(real2,image2); /用随机产生的两位数初始化类对象real3=rand()%20-10; /产生随机的一位数image3=rand()%20-10; real4=rand()%20-10;image4=rand()%20-10;CComplex f3(real3,image3),f4(real4,image4); /用随机产生的一位数初始化类对象op=rand()%3; /随即产生3种运算符cout第i题:;switch(op)case 0:answer=f1+f2;coutf1加上f2等于;break; case 1:answer=f1-f2;coutf1减去f2等于;break;case 2: /乘法用实部、虚部都是一位的对象 answer=f1*f2;coutf1乘以f2f5;if(answer=f5) /判断结果是否正确cout此题做对了n; cout加十分:n;score+=10; /正确,加十分elsecout此题做错了n; cout不得分:n; /错误,不得分cout你的最后得分为:scoreendl;void main(void) /输出程序主菜单,并接收用户选择char input;CComplex a,b,c,d,e,f,g;system(cls);coutt这是一个复数计算器程序,拥有以下功能,请按照菜单选择进入功能。endlendlendl;cout=MENU=endl;cout1:复数求模endl; cout2:多复数连加运算endl; cout3:多复数连减运算endl; cout4:多复数连乘运算endl;cout5:多复数连除运算endl; cout6:进入复数计算测试(一次十题)endl; cout7:复数比较:endl; cout8:退出endl;cout请选择input; /接受用户选择cout;cout=endl;switch(input) /用switch-case实现功能的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湖北省赤壁市中考物理考试黑钻押题及完整答案详解【必刷】
- 2025年医学遗传学遗传病筛查知识试题答案及解析
- 2025年眼科医生视力检查技术考核模拟试题答案及解析
- 2025年中医药理论基础知识综合检测题答案及解析
- 2025年高校教师资格证之《高等教育法规》经典例题及1套参考答案详解
- 2025年医师定期考核通关题库附答案详解【轻巧夺冠】
- 2025年湖南省冷水江市中考物理模拟题库附答案详解(综合卷)
- 天津市2025天津市职业技能公共实训中心招聘2人笔试历年参考题库附带答案详解
- 小区居民自治的组织与管理方式
- 企业管理中的培训发展方案
- 政府人员网络安全培训课件
- 湿地巡护员培训课件
- 2025年地质实验室技术员综合素质考核试卷及答案解析
- 小班海浪滚滚课件
- 老年痴呆科普课件
- 2025年泉州大队委笔试题目及答案
- 义乌市国有资本运营有限公司2025年度员工公开招聘笔试参考题库附带答案详解
- CRT2000 消防控制室图形显示装置-使用说明书-V1.0
- 文旅演艺活动
- 口腔科无菌操作课件
- 房地产中介服务操作流程手册
评论
0/150
提交评论