版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告姓名學(xué)號(hào)班級(jí)合作者學(xué)號(hào)班級(jí)任課教師時(shí)間教師指定題目復(fù)數(shù)計(jì)算器評(píng)定難易級(jí)別A級(jí)實(shí)驗(yàn)報(bào)告成績(jī)復(fù)數(shù)計(jì)算器程序功能設(shè)計(jì)12 程序功能的總體結(jié)構(gòu)復(fù)數(shù)計(jì)算器的程序總體功能可設(shè)計(jì)成如圖1所示, 可以看出,復(fù)數(shù)計(jì)算 器的各種功能都用菜單選項(xiàng)列出,用戶可以根據(jù)需要選擇相應(yīng)的菜單 項(xiàng),從而執(zhí)行不同的子程序以完成相應(yīng)的功能。2課程設(shè)計(jì)要求(1)(2)一開(kāi)始運(yùn)行程序,要有詳細(xì)的菜單選項(xiàng)界面,用戶不選擇退出就可以 反復(fù)運(yùn)算。(3)( 4)可以進(jìn)行多個(gè)操作數(shù)的復(fù)數(shù)運(yùn)算,輸入 00i 時(shí)為止。(5)(6)編寫(xiě)可以對(duì)輸入的復(fù)數(shù)求模的成員函數(shù)。(7)(8)編寫(xiě)具有測(cè)試功能的函數(shù), 即計(jì)算機(jī)能夠自動(dòng)出題, 并
2、要求用戶計(jì)算, 同時(shí)計(jì)算機(jī)判斷用戶計(jì)算的對(duì)錯(cuò)并打分,要求十題為一個(gè)單元,每題 一個(gè)運(yùn)算符,運(yùn)算符包括,三種,參與加減運(yùn)算實(shí)部虛部為一位數(shù)。(9) (10)重載輸入輸出運(yùn)算符,對(duì)復(fù)數(shù)的輸入既可米用實(shí)部虛部分開(kāi)提示輸入,也可直接輸入諸如a+或a+ib這種形式,對(duì)復(fù)數(shù)的輸出要考慮實(shí)部虛部的正負(fù)號(hào),通過(guò)判斷給出的輸出結(jié)果。4 程序設(shè)計(jì)思想1)類的封裝程序中將復(fù)數(shù)形式的數(shù)據(jù)定義成一個(gè)復(fù)數(shù)類CComplex, 重載了加法及減法等運(yùn)算符 ,使函數(shù)的加減等運(yùn)算像一般數(shù)據(jù)一樣方便 .每個(gè)運(yùn)算符重載都用 一個(gè)函數(shù)去實(shí)現(xiàn)。參考類的定義如下:class CComplexprivate:double Real,Imag
3、e;public:CComplex(double real=0,double image=O) -. I 等形式。重載輸入 運(yùn)算符應(yīng)該能識(shí)別這樣形式多樣的復(fù)數(shù)。 所以在重載輸入函數(shù)時(shí)要綜合考慮 上述各種輸入形式??尚械奶幚矸绞绞牵涸谥剌d輸入函數(shù)中,設(shè)計(jì)用(3)設(shè)計(jì)的任務(wù)要求 23.在程序中設(shè)計(jì)一個(gè)復(fù)數(shù)運(yùn)算的測(cè)試函數(shù)Test (),其功能是讓計(jì)算機(jī)隨機(jī)出10道運(yùn)算題,用戶給出答案,同時(shí)計(jì)算機(jī)實(shí)時(shí)判斷對(duì)錯(cuò)并可 以打分。這個(gè)函數(shù)的關(guān)鍵是讓計(jì)算機(jī)隨機(jī)產(chǎn)生復(fù)數(shù)對(duì)象和運(yùn)算符,計(jì)算機(jī)內(nèi)部有一個(gè)隨機(jī)數(shù)發(fā)生器,可以產(chǎn)生一個(gè)固定順序的整型隨機(jī)數(shù) 序列,調(diào)用語(yǔ)句為“ int a = rand ();”這時(shí),a就是該
4、隨機(jī)數(shù)發(fā)生器 產(chǎn)生的隨機(jī)數(shù)。由于產(chǎn)生的隨機(jī)書(shū)數(shù)在整數(shù)范圍內(nèi),為測(cè)試方便,按程序設(shè)計(jì)要求,產(chǎn)生的隨機(jī)復(fù)數(shù)對(duì)象實(shí)部和虛部在 100以內(nèi),運(yùn)算符只有加減兩 種。因此,需要對(duì)產(chǎn)生的隨機(jī)數(shù)進(jìn)行進(jìn)一步的處理,用隨機(jī)數(shù)模除以除以100,產(chǎn)生出100以內(nèi)的隨機(jī)整數(shù);同樣,用隨機(jī)數(shù)模除以 3, 可以產(chǎn)生出0、 1、3三個(gè)隨機(jī)數(shù)據(jù),定義0為加法,1為減法,2 為乘法,這樣就可以產(chǎn)生出隨機(jī)的復(fù)數(shù)對(duì)象的加減乘運(yùn)算了??梢詤⒁?jiàn)圖2測(cè)試子程序Test ()結(jié)構(gòu)框圖。產(chǎn)生8個(gè)100前兩個(gè)隨機(jī)數(shù)后兩個(gè)隨機(jī)數(shù)產(chǎn)生$以內(nèi)的用兩個(gè)隨機(jī)數(shù)最后兩個(gè)隨機(jī)數(shù)NYYoYY是否判別完字符N當(dāng)前字符為字符串是否存在非法字符最后一個(gè)字符不(4)設(shè)
5、計(jì)的任務(wù)要求3在程序中重載了 運(yùn)算符,其功能是讓用戶能夠直接輸入a+bi,a+b*i兩種形式的復(fù)數(shù),其結(jié)構(gòu)框圖如圖3所示以字符串的形式N復(fù)數(shù)對(duì)象只有實(shí)部,前面輸出錯(cuò)誤信 息,函數(shù)返回當(dāng)前字符是5.6. 程序界面開(kāi)始界面運(yùn)行結(jié)果界面4.程序源代碼及詳細(xì)注解:# in clude# in clude# in clude# in clude#defi ne Z 1e-6class CComplexprivate:double Real,lmage;public:CComplex(double real=0,double image=0) / 構(gòu)造函數(shù)Real=real;Image=image;fri
6、end istream&operator(istream&is,CComplex&com); /重載輸入friend ostream&operator(CComplex&com);int operator(CComplex&com)/ 重載“”運(yùn)算符,比較復(fù)數(shù)的模if(Module()()return 1;/ 大于,則返回 1elsereturn 0;int CComplex: operator(CComplex&com)/重載“”運(yùn)算符,比較復(fù)數(shù)的模if(Module()a1;float t;t=sqrt(Real*Real+Image*Image);return t;/ ();/ ();i
7、nt CComplex:operator=(CComplex&com)/重載“ =”運(yùn)算符,分別判斷兩個(gè)復(fù)數(shù)對(duì)象的實(shí)部與虛部if(Real=&Image=return 1;/實(shí)部與虛部分別相等返回 1else return 0;void Add()CComplex a1,a2,sum,f(0,0);coutvv加法計(jì)算endlvv最少輸入兩個(gè)復(fù)數(shù),并以零結(jié)束endl;cout第一個(gè)復(fù)數(shù)a1;cout第二個(gè)復(fù)數(shù)a2;sum=a1+a2;int i=4;while(!(a1=f)sum=sum+a1;cout第i個(gè)復(fù)數(shù)a1;i+;cout結(jié)果vvsumvve ndl;cout按任意鍵繼續(xù)endl;
8、/();();void Sub()CComplex a1,a2,sub,f(0,0);endl;coutvv減法計(jì)算endlvv最少輸入兩個(gè)復(fù)數(shù),并以零結(jié)束cout第一個(gè)復(fù)數(shù)a1;cout第二個(gè)復(fù)數(shù)a2;sub=a1-a2;int i=4;while(!(a1=f)sub=sub-a1;cout第i個(gè)復(fù)數(shù)a1;i+;cout結(jié)果:vvsubvvendl;cout按任意鍵繼續(xù)endl;/();();void Mul()CComplex a1,a2,mul,f(0,0);endl;coutvv乘法計(jì)算endlvv最少輸入兩個(gè)復(fù)數(shù),并以零結(jié)束cout第一個(gè)復(fù)數(shù)a1;cout第二個(gè)復(fù)數(shù)a2;mul=a
9、1*a2;int i=4;while(!(a1=f)mul=mul*a1;cout第i個(gè)復(fù)數(shù)a1;i+;cout結(jié)果:vvmulvvendl;cout按任意鍵繼續(xù)endl;/();();void Div()CComplex a1,a2,div,f(0,0);endl;coutvv除法計(jì)算endlvv最少輸入兩個(gè)復(fù)數(shù),并以零結(jié)束cout第一個(gè)復(fù)數(shù)a1;cout第二個(gè)復(fù)數(shù)a2;div=a1/a2;cout第三個(gè)復(fù)數(shù)a1;int i=4;while(!(a1=f)div=div/a1;cout第i個(gè)復(fù)數(shù)a1;i+;cout結(jié)果:vvdivvvendl;cout按任意鍵繼續(xù)endl;/();();vo
10、id Compare(void)復(fù)數(shù)模比較coutendl;CComplex a1,a2;cout輸入兩個(gè)復(fù)數(shù):a1;cout第二個(gè)復(fù)數(shù);cina2;if(a1=a2)coutvv這兩個(gè)復(fù)數(shù)相等a2)couta1的模大于a2的模endl;else if(a1a2)coutvvalvv的模小于a2的模endl;cout按任意鍵繼續(xù)(istream&is,CComplex&com)/重載輸入,可以輸入a+bi,也可以輸入a+b*ichar s100;iss;/字符串 s 用于接收復(fù)數(shù)int len=strlen(s);int n=0,sign=1;/n 為當(dāng)前從字符串中提取出來(lái)的數(shù)字,初始化為0;
11、sign為n的符號(hào),初始化為正=0;if(len=4)for(int k=0;klen;k+)/判斷字符串是否合法if(sk9)&(sk!=+&sk!=-&sk!=i)coutErrorendl;/若字符串不是 19 的數(shù)字或“ +”、“-”、“ =”則錯(cuò)誤,輸出 Errorreturn is;for(k=0;klen;)/依次識(shí)別字符串中和字符if(n!=0&(sk=-|sk=+)/判斷是否為符號(hào)位=sign*n;/是符號(hào),且 n!=0,n 已被賦值,當(dāng)前讀取的是虛部的符號(hào)n=0; /將 sign*n 的值賦給實(shí)部,然后 n 清零,準(zhǔn)備接受虛部的值if(sk=-)sign=-1;k+; /給
12、符號(hào)標(biāo)志賦值if(sk=+)sign=1;k+;/ 給符號(hào)標(biāo)志賦值if(k!=len-1)/判斷 i 是否為最后一個(gè)字符cout=0&sk=9) /當(dāng)字符在 09 之間是,將數(shù)字字符轉(zhuǎn)化 為數(shù)字?jǐn)?shù)值n=n*10+sk-0;k+;if(sle n-1!=i&n !=0)如果最后一個(gè)字符不是i,表示復(fù)數(shù)只有實(shí)部,沒(méi)有虛部=n*sign;return is;elsefor(int k=0;klen;k+)/依次識(shí)別字符串中和字符if(sk9)&(sk!=+&sk!=-&sk!=i&sk!=*)/若字符串不是 19 的數(shù)字或“ +”、“-”、“=”、“* ”則錯(cuò)誤,輸出 ErrorcoutErrore
13、ndl;return is;for(k=0;klen;) /依次識(shí)別字符串中和字符if(n!=0&(sk=-|sk=+) / 判斷是否為符號(hào)位=sign*n;n=0;if(sk=-)sign=-1;k+; /給符號(hào)標(biāo)志賦值if(sk=+)sign=1;k+; /給符號(hào)標(biāo)志賦值if(sk=*)/若當(dāng)前字符為 *k+;=sign*n;if(sk=i) /若當(dāng)前字符為 iif(k!=len-1)/判斷 i 是否為最后一個(gè)字符cout=0&sk=9)/當(dāng)字符在 09 之間是,將數(shù)字字符轉(zhuǎn)化為數(shù)字?jǐn)?shù)值n=n*10+sk-0;k+;if(slen-1!=i&n!=0)/如果最后一個(gè)字符不是 i ,表示復(fù)數(shù)
14、只有實(shí)部,沒(méi)有虛部=n*sign;return is;ostream&operator(ostream&os,CComplex&com) /重載輸出if(fabsZ)/如果虛部為零os; / 只輸出實(shí)部;else if(fabsZ) / 如果實(shí)部為零os0)os+i;/虛部為正,用“ +”連接實(shí)部與虛部elseosi; /虛部為負(fù),虛部的符號(hào)連接實(shí)部與虛部 return os;void Test(void)double real1,real2,real3,real4,image1,image2,image3,image4;CComplex answer,f5;int score=0;char
15、op;for(int i=1;i=10;i+)real1=rand()%200-100;/ 產(chǎn)生隨機(jī)的兩位數(shù),可正可負(fù)image1=rand()%200-100;real2=rand()%200-100;image2=rand()%200-100;CComplex f1(real1,image1),f2(real2,image2);/用隨機(jī)產(chǎn)生的兩位數(shù)初始化類對(duì)象real3=rand()%20-10;/產(chǎn)生隨機(jī)的一位數(shù)image3=rand()%20-10;real4=rand()%20-10;image4=rand()%20-10;CComplex f3(real3,image3),f4(r
16、eal4,image4);/用隨機(jī)產(chǎn)生的一位數(shù)初始化類對(duì)象op=rand()%3; / 隨即產(chǎn)生 3 種運(yùn)算符coutvv第vvivv題:;switch(op)case 0:answer=f1+f2;coutvvflvv加上vvf2vv等于;break;case 1:answer=f1-f2;coutvvflvv減去vvf2vv等于;break;case 2:/乘法用實(shí)部、虛部都是一位的對(duì)象answer=f1*f2;coutvvflvv乘以f2f5;if(answer=f5)/ 判斷結(jié)果是否正確coutvv此題做對(duì)了 n;coutvv加十分:n;score+=10;/正確,加十分elsecou
17、tvv此題做錯(cuò)了 vn;coutvv不得分:vvn;/錯(cuò)誤,不得分coutvv你的最后得分為:vvscorevve ndl;char input;CComplex a,b,c,d,e,f,g;system(cls);coutt 這是一個(gè)復(fù)數(shù)計(jì)算器程序,擁有以下功能,請(qǐng)按照菜單選擇進(jìn)入功 能。 endlendlendl;cout=MENU= =endl;cout1: 復(fù)數(shù)求模 endl;cout2:多復(fù)數(shù)連加運(yùn)算endl;cout3:多復(fù)數(shù)連減運(yùn)算endl;cout4:多復(fù)數(shù)連乘運(yùn)算endl;cout5: 多復(fù)數(shù)連除運(yùn)算 endl;cout6:進(jìn)入復(fù)數(shù)計(jì)算測(cè)試(一次十題)e ndl;cout7:復(fù)數(shù)比較:endl;cout8:退出endl;cout請(qǐng)選擇input;/接受用戶選擇cout;cout=endl;switch(input)用switc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年空調(diào)銷(xiāo)售渠道拓展與品牌建設(shè)服務(wù)合同3篇
- 二零二五版合租房屋租賃合同-含裝修保證金條款3篇
- 二零二五版建筑設(shè)備租賃合同書(shū)范例2篇
- 二零二五版法院判決指導(dǎo)下的債務(wù)償還與再融資合同3篇
- 二零二五版第5章第5節(jié)合同擔(dān)保及供應(yīng)鏈金融合作協(xié)議3篇
- 二零二五版合同部合同合規(guī)性審查與風(fēng)險(xiǎn)預(yù)警合同3篇
- 二零二五年度酒店物業(yè)服務(wù)質(zhì)量持續(xù)改進(jìn)合同3篇
- 二零二五年青少年體育賽事服裝贊助合同3篇
- 二零二五版安防監(jiān)控設(shè)備研發(fā)與生產(chǎn)合同3篇
- 二零二五年度物流行業(yè)集體合同協(xié)議范本3篇
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 防詐騙安全知識(shí)培訓(xùn)課件
- 心肺復(fù)蘇課件2024
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2024-2025學(xué)年江蘇省南京市高二上冊(cè)期末數(shù)學(xué)檢測(cè)試卷(含解析)
- 四川省名校2025屆高三第二次模擬考試英語(yǔ)試卷含解析
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院專升本管理學(xué)真題
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí)
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- Proud-of-you中英文歌詞
- 基因的表達(dá)與調(diào)控.ppt
評(píng)論
0/150
提交評(píng)論