版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、中 南 大 學(xué)實 驗 報 告課程名稱 c+程序設(shè)計 實驗項目名稱 實驗4 實驗5 實驗6 指導(dǎo)老師 向瑤 實驗學(xué)生班級 電子信息工程1503 實驗學(xué)生姓名 陶韜 學(xué)號 實驗時間 2016.4.1至4.10 實驗地點 校本部科技樓4樓實驗成績評定 實驗4 函數(shù)與預(yù)處理實驗4.14.1.1題目: 寫一個判別素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否為素數(shù)的信息。4.1.2自己寫的代碼:#includeusing namespace std;bool isprime(int x);/函數(shù)聲明int main()int x;/定義一個變量來儲存等下要輸入的數(shù)cout請輸入一個整數(shù)x;if(isprim
2、e(x)/用if條件語句根據(jù)isprime函數(shù)的返回值來輸出不同的結(jié)果cout輸入的是一個素數(shù)endl;else cout輸入的不是一個素數(shù)endl;return 0;bool isprime(int x)int i=2;if(x=2)/特例 如果輸入的是2 直接返回truereturn true;if(x=1)return false;for(;ix;i+)if(x%i=0)return false;return true;4.1.3根據(jù)教材優(yōu)化修改后的代碼 主要是對素數(shù)的算法進(jìn)行優(yōu)化-i只需要遍歷到x的1/2即可,這樣的算法對于輸入的數(shù)是2也是可以正確執(zhí)行的,為了便于測試可以加上一個循環(huán)結(jié)
3、構(gòu)#includeusing namespace std;bool isprime(int x);/函數(shù)聲明int main()int x;/定義一個變量來儲存等下要輸入的數(shù)cout當(dāng)輸入的數(shù)不為負(fù)數(shù)時一直進(jìn)行循環(huán)endl;cout請輸入一個整數(shù)x;while(x=0)if(isprime(x)/用if條件語句根據(jù)isprime函數(shù)的返回值來輸出不同的結(jié)果cout輸入的是一個素數(shù)endl;else cout輸入的不是一個素數(shù)endl;cout請繼續(xù)輸入一個整數(shù):x;return 0;bool isprime(int x)int i=2;if(x=1|x=0)return false;for(;
4、ix/2;i+)if(x%i=0)return false;return true; 4.1.4測試結(jié)果當(dāng)輸入的數(shù)不為負(fù)數(shù)時一直進(jìn)行循環(huán)請輸入一個整數(shù)17輸入的是一個素數(shù)請繼續(xù)輸入一個整數(shù):34輸入的不是一個素數(shù)請繼續(xù)輸入一個整數(shù):2輸入的是一個素數(shù)請繼續(xù)輸入一個整數(shù):1輸入的不是一個素數(shù)請繼續(xù)輸入一個整數(shù):0輸入的不是一個素數(shù)請繼續(xù)輸入一個整數(shù):實驗4.2 4.2.1題目:寫一個函數(shù)驗證哥德巴赫猜想,一個不小于6的偶數(shù)可以表示為兩個素數(shù)之和,如6=3+3,8=3+5,10=3+7,。在主函數(shù)中輸入一個不小于6的偶數(shù)n,然后調(diào)用函數(shù)gotbaha,在gotbaha函數(shù)中再調(diào)用prime函數(shù),p
5、rime函數(shù)的作用是判別一個數(shù)是否為素數(shù)。在gotbaha函數(shù)中輸出以下形式的結(jié)果34=3+31;運(yùn)行時輸入該偶數(shù)的值為6,12,20,458,分析運(yùn)行結(jié)果。如果輸入2,4,會出現(xiàn)什么情況?修改程序 ,使之能輸出相應(yīng)的信息4.2.2代碼部分#includeusing namespace std;bool isprime(int x);/判斷一個數(shù)是否是素數(shù)的函數(shù)聲明void gotbaha(int y);/驗證哥德巴赫猜想的函數(shù)int main()cout請輸入一個不小于6的偶數(shù)endl;cout當(dāng)輸入的數(shù)不為負(fù)數(shù)時一直循環(huán)x;while(x=0)/循環(huán)直到輸入的數(shù)為負(fù)數(shù)gotbaha(x);
6、coutx;bool isprime(int x)int i=2;if(x=1|x=0)return false;for(;i=x/2;i+)if(x%i=0)return false;return true;void gotbaha(int y)int x1,x2;for(x1=2,x2=y-x1;x1=y/2;x1+,x2=y-x1)/*這里的算法是設(shè)出x1 那么x2自然也就等于y-x1分別驗證這兩個數(shù)都滿足素數(shù)即可*/if(isprime(x1)&isprime(x2)couty=x1+x2endl;elsecontinue; 4.2.3運(yùn)行結(jié)果1 請輸入一個不小于6的偶數(shù)當(dāng)輸入的數(shù)不為
7、負(fù)數(shù)時一直循環(huán)66=3+3請輸入一個新的數(shù)據(jù)進(jìn)行驗證1212=5+7請輸入一個新的數(shù)據(jù)進(jìn)行驗證2020=3+1720=7+13請輸入一個新的數(shù)據(jù)進(jìn)行驗證458458=19+439458=37+421458=61+397458=79+379458=109+349458=127+331458=151+307458=181+277458=229+229請輸入一個新的數(shù)據(jù)進(jìn)行驗證4.2.4本題第二問:如果輸入2,和4 會輸出什么情況 ?修改程序使之能輸出相應(yīng)的信息4.2.5運(yùn)行結(jié)果2 請輸入一個不小于6的偶數(shù)當(dāng)輸入的數(shù)不為負(fù)數(shù)時一直循環(huán)2請輸入一個新的數(shù)據(jù)進(jìn)行驗證44=2+2請輸入一個新的數(shù)據(jù)進(jìn)行驗證
8、4.2.6修改代碼 使之能輸出相應(yīng)的信息分析 :因為哥德巴赫猜想是針對大于或者等于6的偶數(shù)而言 所以如果用戶輸入一個小于6的偶數(shù)時只要提示其輸入錯誤 需要重新輸入即可。4.2.7代碼2#includeusing namespace std;bool isprime(int x);/判斷一個數(shù)是否是素數(shù)的函數(shù)聲明void gotbaha(int y);/驗證哥德巴赫猜想的函數(shù)int main()cout請輸入一個不小于6的偶數(shù)endl;cout當(dāng)輸入的數(shù)大于或者等于6時一直循環(huán)x;if(x6)cout請根據(jù)哥德巴赫猜想的前提條件輸入一個大于或者等于6的偶數(shù)=6)/循環(huán)直到輸入的數(shù)為負(fù)數(shù)gotba
9、ha(x);coutx;if(x6)cout請根據(jù)哥德巴赫猜想的前提條件輸入一個大于或者等于6的偶數(shù)endl;return 0;bool isprime(int x)int i=2;if(x=1|x=0)return false;for(;i=x/2;i+)if(x%i=0)return false;return true;void gotbaha(int y)int x1,x2;for(x1=2,x2=y-x1;x1=y/2;x1+,x2=y-x1)/*這里的算法是設(shè)出x1 那么x2自然也就等于y-x1分別驗證這兩個數(shù)都滿足素數(shù)即可*/if(isprime(x1)&isprime(x2)co
10、uty=x1+x2endl;elsecontinue;4.2.8 運(yùn)行結(jié)果請輸入一個不小于6的偶數(shù)當(dāng)輸入的數(shù)大于或者等于6時一直循環(huán)66=3+3請輸入一個新的數(shù)據(jù)進(jìn)行驗證4請根據(jù)哥德巴赫猜想的前提條件輸入一個大于或者等于6的偶數(shù)Press any key to continue實驗4.34.3.1題目: 解決漢諾塔問題。古代有一個梵塔,塔內(nèi)有3個座,A,B,C,開始時A座上有64個盤子,盤子大小不等,大的在下,小的在上。有一個老和尚想把這64個盤子從A座移到C座,但每次只允許移動一個盤,且在移動過程中在3個座上都始終保持大盤在下 小盤在上。在移動過程中可以利用B座,要求編程序打印出移動的步驟。
11、在運(yùn)行時分別指定盤子數(shù)為3.,5,7,。并統(tǒng)計在不同盤子數(shù)的情況下,移動盤子多少次。請試一下如果盤子數(shù)為16,在你所用的計算機(jī)上要運(yùn)行多少時間。設(shè)想一下,如果盤子數(shù)為63,會出現(xiàn)什么情況?4.3.2代碼#includeusing namespace std;void hannuota(int x,char one,char two,char three);/漢諾塔函數(shù)表示one座借助two座把x個盤子移動到three座void move(char a,char b);/移動函數(shù) 輸出從a移動到bint times=0;/全局變量用來統(tǒng)計一共搬運(yùn)了多少次int main()cout請輸入一共有多
12、少個盤子在A座x;cout具體的操作步驟:endl;hannuota(x,A,B,C);cout一共執(zhí)行了times次endl;return 0;void hannuota(int x,char one, char two,char three)if(x=1)move(one,three);/當(dāng)盤子數(shù)只為1的時候顯然只需要從one搬到threeelsehannuota(x-1,one,three,two);/遞歸把x-1個盤子從one借助tree移動到twomove(one,three);/把剩下的一個盤子從one搬到threehannuota(x-1,two,one,three);/把x-1
13、個盤子從two借助one移動到threevoid move(char a,char b)coutabCA-BC-BA-CB-AB-CA-C一共執(zhí)行了7次Press any key to continue4.3.3.2當(dāng)輸入5請輸入一共有多少個盤子在A座5具體的操作步驟:A-CA-BC-BA-CB-AB-CA-CA-BC-BC-AB-AC-BA-CA-BC-BA-CB-AB-CA-CB-AC-BC-AB-AB-CA-CA-BC-BA-CB-AB-CA-C一共執(zhí)行了31次Press any key to continue4.3.3.3考慮篇幅原因就不復(fù)制過來 當(dāng)x=7 一共搬運(yùn) 127次如果盤子數(shù)
14、為16在我的pc上需要運(yùn)行大約5s4.3.4 如果盤子數(shù)為16 要運(yùn)行多久?如果盤子數(shù)為64 會出現(xiàn)什么情況如果盤子數(shù)為64 需要執(zhí)行(264-1=x1019),將會運(yùn)行幾十分鐘左右。實驗4.44.4.1題目:輸入一個字母字符,設(shè)置條件編譯,使之能根據(jù)需要將小寫字母改寫為大寫字母輸出,或?qū)⒋髮懽帜父膶憺樾懽帜篙敵觥?.4.2代碼:#includeusing namespace std;/#define UPPER/ 如果需要將大寫改為小寫把這一行注釋即可int main()char c;cout請輸入一個字符字母c;#ifdef UPPERif(c=a&c=A&c=Z)c+=32;#endi
15、fcoutcendl;4.4.3 運(yùn)行結(jié)果請輸入一個字符字母AaPress any key to continue請輸入一個字符字母aAPress any key to continue實驗4.54.5.1題目:求ab和am的值,其中b的值在程序中給出,a和m值由鍵盤輸入,卸一個power函數(shù)求am的值,在主函數(shù)中求ab,并調(diào)用power函數(shù)得到am的值。要求將主函數(shù)和power函數(shù)分別寫成兩個文件file1.cpp和file2.cpp,用extern將外部變量作用域擴(kuò)展到其他文件。建立一個項目文件,包含file1.cpp和file2.cpp,按照本書第2部分中介紹的對包含多文件的程序的處理辦法,對包含多文件的程序進(jìn)行編譯、連接和運(yùn)行。通過這個簡單的程序,初步掌握處理包含多文件程序的方法。4.5.2 file1.cpp的代碼#includeusing namespace std;int a;extern int power(int);int main()int b=2;cout請輸入a和m的值am;cout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030消費電子產(chǎn)業(yè)創(chuàng)新趨勢及用戶需求與品牌競爭策略研究
- 2025-2030消費品行業(yè)品牌升級與投資機(jī)會深度研究
- 2025-2030消費分級趨勢下辣椒調(diào)味品價格帶布局戰(zhàn)略分析
- 2025-2030浙江現(xiàn)代農(nóng)業(yè)示范園區(qū)產(chǎn)業(yè)市場前景投資現(xiàn)狀調(diào)研規(guī)劃分析研究報告
- 2025-2030沼氣綜合利用行業(yè)技術(shù)成熟度評價與產(chǎn)業(yè)化路徑規(guī)劃
- 企業(yè)信用管理風(fēng)險防控方案
- 生產(chǎn)制造企業(yè)安全培訓(xùn)教材
- 職業(yè)病防護(hù)知識培訓(xùn)課程開發(fā)模板
- 住宅防水工程施工技術(shù)方案
- 2024年度市場營銷策劃方案模板
- 2026年孝昌縣供水有限公司公開招聘正式員工備考題庫參考答案詳解
- 托管學(xué)校合作合同協(xié)議
- 產(chǎn)品銷售團(tuán)隊外包協(xié)議書
- 2025年醫(yī)保局支部書記述職報告
- 汽車充電站安全知識培訓(xùn)課件
- 世說新語課件
- 全體教師大會上副校長講話:點醒了全校200多名教師!毀掉教學(xué)質(zhì)量的不是學(xué)生是這7個環(huán)節(jié)
- 民航招飛pat測試題目及答案
- T-CDLDSA 09-2025 健身龍舞彩帶龍 龍舞華夏推廣套路技術(shù)規(guī)范
- DB35-T 2278-2025 醫(yī)療保障監(jiān)測統(tǒng)計指標(biāo)規(guī)范
- GB/T 46561-2025能源管理體系能源管理體系審核及認(rèn)證機(jī)構(gòu)要求
評論
0/150
提交評論