ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:18.66KB ,
资源ID:4611915      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4611915.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C小型复数计算器.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C小型复数计算器.docx

1、C小型复数计算器#include#include#include#include#include#include#define EPS 1e-5 /定义精度常数using namespace std; /使用标准空间命名stdnamespace NameCComplex /定义命名空间NameCComplexclass CComplex /定义一个CComplex类private:double Real,Image;public:CComplex(double real=0,double image=0) /构造函数Real=real;Image=image;friend istream &

2、operator(istream &is,CComplex &com); /重载输入friend ostream & operator(CComplex &com);int operator(CComplex &com) /重载运算符,比较模的大小if(mod()com.mod()return 1;elsereturn 0;int CComplex:operator(CComplex &com)if(mod()(istream &is,CComplex &com) /重载输入,可以输入a+bi的形式couts; /用字符串的形式接受复数int len=strlen(s); /求出字符串的长度i

3、nt n=0,sign=1;/n为当前从字符串中提取出来的数字,初始化为0;sign是难道符号,初始化为正com.Image=com.Real=0;for(int k=0;klen;k+) /判断接受的字符串是否合法if(sk 9) & (sk!=+ & sk!=- & sk!=i)couterrorendl;return is; /错误,输出出错信息并返回for(k=0;klen;) /顺序识别字符串中各字符if(n!=0 &(sk=-|sk=+) /当前字符是否是符号位com.Real=sign*n;/是符号位,且n!=0,即n已被赋值,表明当前读取的是虚部的符号n=0; /将原n*sig

4、n值赋给实部,将n清零,准备接受虚部的值if(sk=-) /当前字符为负号sign=-1;k+; /给符号标志赋值if(sk=+) /当前字符为正号sign=1;k+; /给符号标志赋值if(sk=i) /当前字符为Iif(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,C

5、Complex &com) /重载输入if(fabs(com.Image)EPS) / 如果虚部为0oscom.Real; /只输出实部else if(fabs(com.Real)EPS) /如果实部为0oscom.Image0)oscom.Real+com.Imagei;elseoscom.Realcom.Imagei; /虚部为正return os;CComplex CComplex:operator+(CComplex &com) /加法重载CComplex sum;sum.Real=Real+com.Real; /实部相加sum.Image=Image+com.Image; /虚部相加

6、return sum;CComplex CComplex:operator*(CComplex &com) /乘法重载CComplex multi;multi.Real=Real*com.Real-Image*com.Image; /乘积实部multi.Image=Real*com.Image+Image*com.Real; /乘积虚部return multi;CComplex CComplex:operator-(CComplex &com) /减法重载CComplex sub;sub.Real=Real-com.Real;sub.Image=Image-com.Image;return s

7、ub;CComplex CComplex:operator+=(CComplex &com) /重载加法赋值Real=Real+com.Real;Image=Image+com.Image;return *this;CComplex CComplex:operator-=(CComplex &com) /重载减法赋值Real=Real-com.Real;Image=Image-com.Image;return *this;CComplex CComplex:operator*=(CComplex &com) /重载乘法赋值double nReal=Real*com.Real-Image*com

8、.Image;double nImage=Real*com.Image+Image*com.Real;Real=nReal;Image=nImage;return *this;int CComplex:operator=(CComplex &com) /重载等于if(Real=com.Real & Image=com.Image)return 1;elsereturn 0;void Test(void) /测试函数user.nTest+;cout共10道题,做100以内的加减运算,满分100分:n;double real1,real2,image1,image2,real3,real4,ima

9、ge3,image4;CComplex answer,temp;int score=0;char op;for(int i=0;i=9;i+)/为复数产生随机值real1=rand()%200-100;image1=rand()%200-100;real2=rand()%200-100;image2=rand()%200-100;CComplex a(real1,image1),b(real2,image2);real3=rand()%20-10;image3=rand()%20-10;real4=rand()%20-10;image4=rand()%20-10;CComplex c(real

10、3,image3),d(real4,image4);op=rand()%3; /产生随机加减乘法运算的三个值switch(op)case 0:answer=a+b;couta加上b等于;break;case 1:answer=a-b;couta减去b等于;break;case 2:answer=c*d;coutc乘以dtemp; /输入用户计算值if(answer=temp) /比较用户计算值score+=10;elsecout此题做错了n;cout正确答案为:answerendl;cout你的最后得分是:scoreendl;if(user.nTest=3)user.alAve=0;user.

11、dlScoreuser.nTest-1=score;for(int i=0;iuser.nTest;i+)user.alAve+=user.dlScorei;user.alAve=user.alAve/user.nTest;elseuser.dlScore0=user.dlScore1;user.dlScore1=user.dlScore2;user.dlScore2=score;for(i=0,user.alAve=0;i3;i+)user.alAve+=user.dlScorei;user.alAve=user.alAve/3;cout请按任意键继续n;cout.flush();cin.g

12、et();cin.get();void Add() /复数加法运算函数user.nAdd+;CComplex num1,num2,sum,Zero(0,0);cout加法计算n最少输入两个复数,并且以0结束n;coutnum1;coutnum2;sum=num1+num2;coutnum1;int i=4;while(!(num1=Zero)sum=sum+num1;cout第inum1;i+;cout加法结果是:sumendl;cout请按任意键继续n;cout.flush();cin.get();cin.get();void Sub() /复数减法预算函数user.nSub+;CCompl

13、ex num1,num2,sub,Zero(0,0);cout最少输入两个复数,并且以0结束n;coutnum1;coutnum2;sub=num1-num2;coutnum1;int i=4;while(!(num1=Zero)sub=sub-num1;cout第inum1;i+;cout减法结果是:subendl;cout请按任意键继续n;cout.flush();cin.get();cin.get();void Mul() /复数乘积函数user.nMul+;CComplex num1,num2,mul,Zero(0,0);cout乘法计算n最少输入两个复数,并且以零结束n;coutnu

14、m1;coutnum2;mul=num1*num2;coutnum1;int i=4;while(!(num1=Zero)mul*=num1;cout第inum1;i+;cout乘法结果是:mulendl;coutnum1;+num1;cout自加的结果为num1endl;coutnum1;-num1;cout自减的结果为num1endl;cout按任意键结束n;cout.flush();cin.get();cin.get();void compare() /两复数比较函数CComplex num1,num2;cout输入两个复数n;coutnum1;coutnum2;if(num1=num2

15、)coutnum2)coutnum1的模大于num2的模n;else if(num1num2)coutnum2的模大于num1的模n;elsecout这两个复数的模相等n;cout按任意键继续n;cin.get();cin.get();void userprint() /输出用户信息函数coutuser.szName使用的次数为:user.nTimeendl;cout其中:t加法的次数:user.nAddt减法的次数:user.nSubt乘法的次数:user.nMulendl;coutt测试次数:user.nTestt平均成绩:user.alAveendl;void Login() /当前用户

16、信息函数char szName20;cout请输入您的姓名:;cin.getline(szName,20);ifstream infile;User user1;infile.open(user.dat,ios:binary|ios:in);if(!infile)cout没有原始记录文件,您是第一个用户!n;strcpy(user.szName,szName);user.nTest+;return;infile.read(char *)&user1,sizeof(User);while(!infile.eof()if(strcmp(user1.szName,szName)=0)user=use

17、r1;user.nTime+;cout欢迎您再次使用复数计算器!;userprint();cin.get();infile.close();return;infile.read(char *) &user1,sizeof(User);cout欢迎您再次使用复数计算器!;strcpy(user.szName,szName);user.nTime+;infile.close();return;void SaveFile() /用户资料保存函数userprint();fstream file;User user1;file.open(user.dat,ios:binary|ios:in|ios:ou

18、t);if(!file)cout文件打开错误,不能进行更新!n;return;file.seekp(0,ios:beg);while(!file.eof()file.read(char *)&user1,sizeof(User);if(strcmp(user1.szName,user.szName)=0)file.seekp(-(sizeof(User),ios:cur);file.write(char *)&user,sizeof(User);file.close();return;file.close();fstream outfile;outfile.open(user.dat,ios:

19、binary|ios:app);outfile.write(char *)&user,sizeof(User);outfile.close();return;using namespace NameCComplex;int main(void) /主函数开始srand(time(NULL); /初始化随机数“种子”语句Login(); /当前用户信息函数char strChoise20; /定义字符串名dosystem(cls);coutt这是一个简单的复数计算器程序,可以实现以下功能,请按对应的按键(1-7)nnn;coutt=MENU=n;coutt1:多复数加法,以0结束n;coutt2

20、:多复数减法,以0结束n;coutt3:测试100以内的复数加减乘法运算,1次测试10道题n;coutt4:多复数乘法,以0结束n;coutt5:复数自加n:;coutt6:复数自减n:;coutt7:复数比较n:;coutt0:退出程序nn:;coutstrChoise;if(strcmp(strChoise,1)=0) /用户选1则调用Add()函数Add();else if(strcmp(strChoise,2)=0) /用户选2则调用Sub()函数Sub();else if(strcmp(strChoise,3)=0) /用户选3则调用Test()函数Test();else if(st

21、rcmp(strChoise,4)=0) /用户选4则调用Add()函数Mul();else if(strcmp(strChoise,5)=0) /用户选5调用Add1()函数Add1();else if(strcmp(strChoise,6)=0) /用户选6则调用Sub1()函数Sub1();else if(strcmp(strChoise,7)=0) /用户选7则调用Compare()函数compare();else if(strcmp(strChoise,0)=0) /用户选0则结束调用函数coutnnt欢迎下次继续使用复数计算器!nn;break;elsecoutnt输入错误,请按任意键继续!n;cin.get();cin.get();while(strcmp(strChoise,0);SaveFile(); /调用用户资料保存函

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

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