freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

中南大學(xué)程序設(shè)計(jì)基礎(chǔ)實(shí)踐報(bào)告-文庫吧

2025-10-21 17:05 本頁面


【正文】 ain()函數(shù)中,用scanf()獲取想要排列的數(shù)字的個(gè)數(shù); 用printf()輸入排序后的元素。兩個(gè)程序中排序是由自定義的maopao()函數(shù)實(shí)現(xiàn)的,其中數(shù)組b[]沒有說明長度,而是通過另一形參k來決定實(shí)參與形參數(shù)組元素結(jié)合的個(gè)數(shù)(簡單來說就是排序的元素是幾個(gè)由自己決定,通過scanf()來獲取),由于數(shù)組名作為函數(shù)參數(shù)時(shí),傳遞的是數(shù)組的起始地址,形參與實(shí)參共用相同的存儲區(qū)域,maopao()函數(shù)中將b數(shù)組排好序,也就是將a排好序。改良的程序通過增加變量biaozhi來實(shí)現(xiàn)改良效果,具體如下:(1)如果有交換,biaozhi=1,繼續(xù)循環(huán);(2)如果沒有交換,biaozhi=0不變,用break提前結(jié)束循環(huán)。如此一來,減少了循環(huán)次數(shù),提高程序執(zhí)行效率。選擇法排序:敘述選擇法排序和改進(jìn)選擇法排序的基本思想,用程序?qū)崿F(xiàn)這兩種排序算法,輸入多組數(shù)據(jù)進(jìn)行測試,統(tǒng)計(jì)對比這兩種排序算法的排序耗時(shí),并說明這種結(jié)果出現(xiàn)的原因。本程序主要使用數(shù)據(jù)類型為數(shù)組類型和整型類型,具體如下: 存放一系列隨機(jī)數(shù)字 整型數(shù)組 長度為200 int x[200] 要排列的數(shù)字個(gè)數(shù) 整型 int n; 循環(huán)所用的變量 整型 int a,b。始終存放本趟最小元素的下標(biāo) 整型 int k。交換兩個(gè)數(shù)字的中間量 整型 Int t, 5 選擇法的基本思想是:先將第一個(gè)元素作為最小者,與后面元素比較,如第一個(gè)元素大,則與其交換(保證第一個(gè)元素總是最小的),直到與最后一個(gè)元素比較晚,第一趟就找出了最小元素,且保存在第一個(gè)元素位置。再以第二個(gè)元素作為最小者(次小)與后面元素比較,若后面元素下,則交換,直到最后一個(gè)元素,第二小的元素已找到。依此類推。經(jīng)過n1趟后排定。事實(shí)上,只要記住比較時(shí)小元素的位置,即下標(biāo),在內(nèi)循環(huán)結(jié)束后做一次交換即可,從而提高程序執(zhí)行的效率。本程序僅使用了主函數(shù)main()(1)用第一個(gè)循環(huán)for(a=0。a外層循環(huán)for(a=0。a(3)內(nèi)層循環(huán) for(b=a+1。b(4)用for(a=0。a經(jīng)過對測試結(jié)果(詳情見下章運(yùn)行結(jié)果)分析,第二個(gè)改良的程序效率明顯比原來的程序高效得多,第二個(gè)程序中與第一個(gè)程序的不同點(diǎn)如下: for(a=0。aif(x[k]x[b])k=b。/*記住新的小元素的序號,在內(nèi)循環(huán)結(jié)束后才和最后一個(gè)數(shù)實(shí)現(xiàn)交換*/ if(k!=a){ t=x[a]。/*若k不等于i,說明a[i]不是最小的數(shù),需要交換*/ x[a]=x[k]。x[k]=t。} 變量K記住比較時(shí)小元素的位置,即下標(biāo),在內(nèi)循環(huán)結(jié)束后做一次交換即可,從而提高程序執(zhí)行的效率。 統(tǒng)計(jì)各字母出現(xiàn)的頻率統(tǒng)計(jì)字符出現(xiàn)的頻率:二維字符數(shù)組中保存了很多字母,運(yùn)行程序,計(jì)算各個(gè)字母出現(xiàn)的頻率(頻率=出現(xiàn)的次數(shù)/總字母數(shù)),并將頻率顯示出來。本程序主要使用數(shù)據(jù)類型為數(shù)組類型和整型類型,具體如下: 存放一系列隨機(jī)字母的字符型二維數(shù)組 int s[10][10]。存放的所有字母的總個(gè)數(shù) 浮點(diǎn)型 float n; 循環(huán)所用的變量 整型 int i,j。表示26個(gè)大寫字母的各個(gè)次數(shù)的數(shù)組 整型 int da[26]。表示26個(gè)小寫字母的各個(gè)次數(shù)的數(shù)組 整型 int xiao[26]。(1)gets(s[0])。調(diào)用gets()函數(shù)計(jì)算獲取字母;(2)n=strlen(s[0])。調(diào)用strlen函數(shù),計(jì)算整個(gè)二維數(shù)組的字母總個(gè)數(shù);(3)用外循環(huán)for(i=0。i內(nèi)循環(huán) for(j=0。j如果 if(s[i][j]=39。A39。amp。amp。s[i][j]如果else if(s[i][j]=39。a39。amp。amp。s[i][j]對應(yīng)的小寫字母的次數(shù)自加一次 xiao[s[i][j]39。a39。]++。(4)最后再用一個(gè)for循環(huán)輸出運(yùn)行結(jié)果 for(k=0。k//k+39。A39。為大寫字母,da[k]為此字母的個(gè)數(shù);n為總字母數(shù) if(xiao[k]!=0)printf(“%c的個(gè)數(shù)為:%dn 出現(xiàn)頻率為:%f n”,k+39。a39。,xiao[k],xiao[k]/n)。//k+39。a39。為小寫字母,xiao[k]為此字母的個(gè)數(shù);n為總字母數(shù)}最簡單的算法說明:在主函數(shù)中增加如下一部分,可實(shí)現(xiàn)這樣的功能:運(yùn)行程序時(shí),若輸入任意鍵,則程序開始正式進(jìn)行;并且可以輸入多組數(shù)據(jù)進(jìn)行調(diào)試,最后按Ctrl+Z(記得加回車)可以結(jié)束程序。char x。8 printf(“請輸入任意鍵開始程序,若輸入Ctrl+Z則結(jié)束程序n”)。while(scanf(“%c”,amp。x)!=EOF){ /*所要運(yùn)行的步驟的內(nèi)容*/};第三章 運(yùn)行結(jié)果 漢諾塔程序運(yùn)行情況 9注:以上圖片分別實(shí)現(xiàn)了盤子數(shù)為2,3,5時(shí)的漢諾塔程序的執(zhí)行過程;“在主函數(shù)中增加如下一部分,可實(shí)現(xiàn)這樣的功能:運(yùn)行程序時(shí),若輸入任意鍵,則程序開始正式進(jìn)行;并且可以輸入多組數(shù)據(jù)進(jìn)行調(diào)試,最后按Ctrl+Z(記得加回車)可以結(jié)束程序。” 10 兩種冒泡法的結(jié)果及耗時(shí)對比1112注:此為第一種冒泡法方法的某次截圖。輸入200個(gè)隨機(jī)數(shù)字,經(jīng)過5次試驗(yàn)取平均值,;輸入相同的隨機(jī)數(shù)據(jù):。提高了不少的效率。13 兩種選擇法的結(jié)果及耗時(shí)對比 14注:以上截圖為第一種選擇排序法方法的某次截圖。輸入150個(gè)隨機(jī)數(shù)字,經(jīng)過5次試驗(yàn)取平均值,;輸入相同的隨機(jī)數(shù)據(jù):。提高了不少的效率。 15注:以上截圖為分別兩次輸入一系列無序列大小寫字母后,計(jì)算出來的字母總個(gè)數(shù),每個(gè)字母的個(gè)數(shù)和頻率。第四章 總結(jié) 本次程序設(shè)計(jì)所遇到的問題 ?剛開始我只了解遞歸出口是當(dāng)盤子數(shù)目為1時(shí),盤子由第一個(gè)塔移動到第三個(gè)塔,但是不知道當(dāng)為n時(shí)應(yīng)該怎么遞歸,因?yàn)檫@么普通的簡單遞歸函數(shù)如: 16f(n)=5*f(n1)還是有一定的區(qū)別的;經(jīng)過對課本的重新翻閱,我加深了對漢諾塔的理解,知道了遞歸的實(shí)現(xiàn)是要通過三步,首先是n1個(gè)盤子借助第三個(gè)塔移到第二個(gè)塔,再把第一個(gè)塔剩下的最大的盤子移到第三個(gè)塔,然后,我們還要借助第一個(gè)塔,把n1個(gè)盤子移到第三個(gè)塔;如此一來,重復(fù)下去,就能實(shí)現(xiàn)遞歸的思想了。?起初,我對這兩個(gè)方法以及兩個(gè)方法的改良版有點(diǎn)混淆,只知道它們都是實(shí)現(xiàn)一系列隨機(jī)數(shù)字的有序排列。然而,經(jīng)過對這四個(gè)不同程序的認(rèn)真分析和設(shè)計(jì),我逐漸明白了:冒泡法是在相鄰連個(gè)數(shù)之間進(jìn)行比較,每趟把最大的數(shù)字放到最后面,如此循環(huán)下去(第二趟是第二大的數(shù)放到倒數(shù)第二個(gè),依此類推)。而改良后的冒泡法是把這些數(shù)字進(jìn)行比較的同時(shí),用一個(gè)biaozhi=0或1判斷數(shù)字是否發(fā)生了交換(也就是是否已經(jīng)排好了),若沒有發(fā)生交換,則跳出循環(huán),這樣就減少了循環(huán)的次數(shù),提高了效率。選擇法則是從第一個(gè)數(shù)開始,與后面的每一個(gè)數(shù)做比較,每比較一次,把小的數(shù)交換到第一個(gè)數(shù)的位置;(第二趟是把第二小的數(shù)放到第二個(gè)數(shù)的位置,依此類推);而改良后的選擇法則是在第一個(gè)數(shù)字與后面的數(shù)字都比較后,最后再交換一次。,使用?第一次寫 int s[10][10]。gets(s)。strlen(s)。發(fā)現(xiàn)都有錯(cuò)誤,程序無法通過;經(jīng)過反復(fù)測試,依然無法解決。后來我突然想起二維數(shù)組的地址問題,才知道s代表的是二維數(shù)組名,數(shù)組的首地址,無法直接賦值;于是我嘗試了用s[0],也就是第0行第0列的元素地址替換s;程序成功運(yùn)行。17 從課程設(shè)計(jì)得到的感悟經(jīng)過一個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對c語言有了更進(jìn)一步的認(rèn)識和了解,達(dá)到了課程設(shè)計(jì)起初的設(shè)計(jì)目的掌握以“漢諾塔程序”為典例的遞歸思想的運(yùn)用。學(xué)會靈活使用“冒泡法”和“選擇排序法”等排序方法,并且通過探索,將各種方法進(jìn)一步改良,提高程序運(yùn)行的效率。通過對以“統(tǒng)計(jì)字母出現(xiàn)的頻率”的程序設(shè)計(jì),掌握二維數(shù)組的賦值,各字符個(gè)數(shù),所有字符的總個(gè)數(shù)等算法。提高自己的綜合編程能力,為今后開發(fā)高難度的程序打下良好的基礎(chǔ)。當(dāng)然,我也體會到,要想學(xué)好C語言等編程語言,重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,通過實(shí)踐,我也發(fā)現(xiàn)我的一些不足之處,比如基本的二維數(shù)組的使用還不夠熟練,不僅僅是學(xué)習(xí)c語言,還是其它的語言,以及其它的計(jì)算機(jī)方面的知識都要重在實(shí)踐,所以后在學(xué)習(xí)過程中,我會更加注視實(shí)踐操作,使自己便好地學(xué)好計(jì)算機(jī)。[致謝] 首先,感謝廖勝輝老師對C語言的基本知識的教導(dǎo),讓我對C語言的程序算法的制定,基本程序語句,選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),函數(shù)與編譯預(yù)處理,數(shù)組,指針,構(gòu)造數(shù)據(jù)類型等知識有了基本的掌握;此外,我還要感謝王建新教授,在他的新生課上,我們學(xué)到了冒泡法,選擇法,貪心法,窮舉法等一系列編程思想,這對我們有很大的啟蒙指導(dǎo)作用;最后,我要感謝課程設(shè)計(jì)指導(dǎo)老師穆帥的悉心指導(dǎo),在他的幫助下,我能學(xué)會獨(dú)立地思考一些算法,學(xué)會如何改進(jìn)程序。在回答他的提問中,我也進(jìn)一步提升自己的專業(yè)知識的口頭表達(dá)能力。此外,在寫課程設(shè)計(jì)的報(bào)告過程中,我也學(xué)到了寫報(bào)告的嚴(yán)謹(jǐn)性和規(guī)范性,這對我以后寫其他報(bào)告會有很大的幫助,十分感激。[附錄] /**/ include void f(int num,int t1,int t2, int t3,int amp。cishu)/*num為盤子個(gè)數(shù),t1代表第一個(gè)塔,t2代表第二個(gè)塔,t3代表第三個(gè)塔,cishu代表盤子移動的次數(shù)*/ { if(num==1){ 18printf(“%d %dn”,t1,t3)。/*遞歸出口*/ cishu++。} else {f(num1,t1,t3,t2,cishu)。/*借助第三個(gè)塔,將n1盤子從第一個(gè)塔移到第二個(gè)塔*/printf(“%d %dn”,t1,t3)。/*將剩余的最大的盤子由第一個(gè)塔直接移到第三個(gè)塔*/cishu++。/*每移動一次盤子,cishu 的值加1*/f(num1,t2,t1,t3,cishu)。/*借助第一個(gè)塔,將第二個(gè)塔上的n1盤子移到第三個(gè)塔*/ } } main(){ int num。char x。printf(“請輸入任意鍵開始程序,若輸入Ctrl+Z則結(jié)束程序n”)。while(scanf(“%c”,amp。x)!=EOF){printf(“請輸入盤子個(gè)數(shù):n”)。scanf(“%d”,amp。num)。int cishu=0。printf(“執(zhí)行過程如下:n”)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1