版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、本文格式為word版,下載可任意編輯一元數(shù)組運(yùn)算器實驗報告 數(shù)組運(yùn)算器試驗報告 試驗?zāi)康?實現(xiàn)一個數(shù)組運(yùn)算器 試驗要求 一維數(shù)組的定義和使用 循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu) 函數(shù)的定義和調(diào)用 數(shù)據(jù)處理技術(shù)(排序、插入、刪除、查找、統(tǒng)計、逆置、左旋、右旋) 數(shù)組作為實現(xiàn)算法的幫助工具(篩選法求素數(shù)、約瑟夫環(huán)) 試驗思路 1. 定義一維數(shù)組 首先配置數(shù)組大小,再填充數(shù)據(jù)。 時間簡單度:o(n) 2. 顯示一維數(shù)組 輸出數(shù)組每一個元素。 時間簡單度:o(n) 3. 數(shù)據(jù)處理 調(diào)用排序函數(shù)、插入函數(shù)、刪除函數(shù)、查找函數(shù)、統(tǒng)計函數(shù)、逆置函數(shù)、 左旋函數(shù)、右旋函數(shù)對數(shù)據(jù)進(jìn)行操作。 時間簡單度:o(n) 4. 數(shù)組幫助
2、工具 調(diào)用篩選法求素數(shù)函數(shù)、約瑟夫環(huán)函數(shù)實現(xiàn)算法。 時間簡單度:o(n) 函數(shù)清單 void p() /主菜單 void p1() /配置數(shù)組大小 void p2() /生成樣本數(shù)據(jù)菜單 void p21() /隨機(jī)數(shù)填充數(shù)據(jù) void p22() /鍵入填充數(shù)據(jù) void p23() /填充同一數(shù)據(jù) void p24() /填充等差序列數(shù)據(jù) void p3() /顯示數(shù)組 void p4() /刪除菜單 void p41(int k) /刪除指定下標(biāo)的元素 void p42(int k) /刪除指定值的元素 調(diào)用 p41 void p43() /刪除按指定下標(biāo)區(qū)間的一組元素 void p5(
3、) /插入菜單 void p51() /按指定下標(biāo)位置插入新元素 void p52sx() /在升序數(shù)組中插入新元素 void p52jx() /在降序數(shù)組中插入新元素 void p6() /統(tǒng)計菜單 void p61() /求最大值 void p62() /求最小值 void p63() /求平均值 void p64() /求方差和均方差 void p7() /查找菜單 void p71(int k) /一般查找 void p72(int k) /二分查找(首先保證有序) void p8() /推斷菜單 void p81() /是否升序排列 void p82() /是否降序排列 void p
4、83() /是否全部相等 void p9() /排列菜單 void p91() /排序菜單 void p911() /冒泡法(降序) void p912() /選擇法(升序) void p913() /交換法(降序) void p92(int a,int a,int b) /逆置數(shù)組 void p93(int a,int top,int k) /左旋數(shù)組 調(diào)用 p92 void p94(int a,int top,int k) /右旋數(shù)組 調(diào)用 p93 void p10() /其他菜單 void p101() /約瑟夫環(huán) void p102() /篩選法求素數(shù) 測試數(shù)據(jù) 詳細(xì)效果由測試者體驗,
5、例如下圖: 調(diào)試分析 調(diào)試時編寫一個函數(shù)對其 debug,減輕了后期調(diào)試壓力。 試驗心得 對一維數(shù)組的應(yīng)用更加嫻熟;能加快編程速度和效率;能編寫和調(diào)試更長的程序。 源程序清單 #includestdlib.h #includestdio.h #includemath.h #includetime.h int a10000,top,i; #define for for(i=0;itop;i+) void p() printf(-*主菜單*-n); printf(0、退出n); printf(1、配置系統(tǒng)參數(shù)n); printf(2、生成樣本數(shù)據(jù)n); printf(3、顯示數(shù)組n); print
6、f(4、刪除n); printf(5、插入n); printf(6、統(tǒng)計n); printf(7、查找n); printf(8、推斷n); printf(9、排列數(shù)組元素n); printf(10、數(shù)組的其他應(yīng)用n); printf(請選擇 0-10:); void p1() /配置系統(tǒng)參數(shù) printf(請輸入數(shù)組大?。?; scanf(%d,top); void p2() /生成樣本數(shù)據(jù) printf(n1)用指定范圍的隨機(jī)數(shù)填充數(shù)組n); printf(2)鍵盤輸入n); printf(3)整個數(shù)組填同一個值n); printf(4)用等差序列填充數(shù)組(輸入首項和公差)n); print
7、f(請選擇 1-4:); void p21() int a,b; printf(請輸入隨機(jī)數(shù)的下限和上限:); scanf(%d%d,a,b); srand(unsigned int)time(null); for ai=rand()%(b-a)+a; void p22() printf(請輸入%d 個數(shù)填充數(shù)組:,top); for scanf(%d,ai); void p23() int k; printf(請輸入想填充的數(shù)據(jù):); scanf(%d,k); for ai=k; void p24() int a,d; printf(請輸入首項和公差:); scanf(%d%d,a,d);
8、a0=a; for(i=1;itop;i+) ai=ai-1+d; void p3() / 顯示數(shù)組 for printf(%-6d,ai); printf(n); void p4() / 刪除 printf(n1)刪除指定下標(biāo)的元素n); printf(2)刪除指定值的元素n); printf(3)刪除按指定下標(biāo)區(qū)間的一組元素n); printf(請選擇 1-3:); void p41(int k) for(i=k;itop;i+) ai=ai+1; void p42(int k) for if(ai=k) p41(i); void p43(int a,int b) for(i=a;ib+1
9、;i+) ai=ai+b-a+1; void p5() / 插入 printf(n1)按指定下標(biāo)位置插入新元素n); printf(2)在有序數(shù)組中插入新元素n); printf(請選擇 1-2:); void p51() int j,k; printf(請輸入插入位置下標(biāo)和插入值:); scanf(%d%d,j,k); top+; for(i=top-1;ij;i-) ai=ai-1; aj=k; void p52sx() int k,j; printf(請輸入插入值:); scanf(%d,k); if(ka0) top+; for(i=top-1;i0;i-) ai=ai-1; a0=k
10、; else if(katop-1) top+; atop-1=k; else for if(ai=k)(ai+1k) top+; for(j=top-1;ji+1;j-) aj=aj-1; ai+1=k; void p52jx() int k,j; printf(請輸入一個數(shù),代表要插入的數(shù):); scanf(%d,k); if(ka0) top+; for(i=top-1;i0;i-) ai=ai-1; a0=k; else if(katop-1) top+; atop-1=k; else for if(ai=k)(ai+1k) top+; for(j=top-1;ji+1;j-) aj=
11、aj-1; ai+1=k; void p6() /統(tǒng)計 printf(n1)求最大值n); printf(2)求最小值n); printf(3)求平均值n); printf(4)求方差和均方差n); printf(請選擇 1-4:); void p61() int k=0; for if(aiak) k=i; printf(最大值=%dn,ak); void p62() int k=0; for if(aiak) k=i; printf(最小值=%dn,ak); void p63() double s=0; for s+=ai; printf(平均值=%lfn,s/top); void p64
12、() double v,f,t,s1=0,s2=0; for s1+=ai;s2+=ai*ai; v=s1/top; f=s2/top-v*v; t=sqrt(f); printf(方差=%lfn 均方差=%lfn,f,t); void p7() /查找 printf(n1)一般查找n); printf(2)二分查找(首先保證有序)n); printf(請選擇 1-2:); void p71(int k) int flag=0; for if(ai=k) flag=1; if(flag=1) for if(ai=k) printf(找到元素%d,下標(biāo)為%d ,即a%d=%dn ,k,i,i,k
13、); else printf(未找到元素%dn,k); void p72(int k) int l=0,h=top-1,m; while(l=h) m=(l+h)/2; if(kam) l=m+1; else if(kam) h=m-1; else break; if(l=h) printf(找到此元素,下標(biāo)為 %d,即 a%d=%d n,m,m,k); else printf(未找到此元素n); void p8() /推斷 printf(n1)是否升序排列n); printf(2)是否降序排列n); printf(3)是否全部相等n); printf(請選擇 1-3:); void p81(
14、) int flag=0; for(i=1;itop;i+) if(aiai-1) flag=1; if(flag=0) printf(是n); else printf(否n); void p82() int flag=0; for(i=1;itop;i+) if(aiai-1) flag=1; if(flag=0) printf(是n); else printf(否n); void p83() int flag=0; for(i=1;itop;i+) if(ai!=ai-1) flag=1; if(flag=0) printf(是n); else printf(否n); void p9()
15、/排列數(shù)組元素 printf(n1)排序n); printf(2)逆置數(shù)組n); printf(3)左旋數(shù)組n); printf(4)右旋數(shù)組n); printf(請選擇 1-4:); void p91() printf(n1. 冒泡法(降序) 2. 選擇法(升序) 3. 交 換 法 ( 降序)n); printf(請選擇 1-3:); void p911() int j,t; for(i=0;itop-1;i+) for(j=0;jtop-i-1;j+) if(ajaj+1) t=aj; aj=aj+1; aj+1=t; void p912() int j,k,t; for(i=0;itop
16、-1;i+) k=i; for(j=i+1;jtop;j+) if(akaj) k=j; if(k!=i) t=ak; ak=ai; ai=t; void p913() int t,j; for(i=0;itop-1;i+) for(j=i+1;jtop;j+) if(aiaj) t=ai; ai=aj; aj=t; void p92(int a,int a,int b) int t,j; for(i=a,j=b;ij;i+,j-) t=ai; ai=aj; aj=t; void p93(int a,int top,int k) p92(a,0,k-1); p92(a,k,top-1); p9
17、2(a,0,top-1); void p94(int a,int top,int k) p93(a,top,top-k); void p10() printf(n1)約瑟夫環(huán)n); printf(2)篩選法求素數(shù)n); printf(請選擇 1-2:); void p101() int n,m,k,pos,man10000; for(i=0;in+1;i+) mani=0; i=k=0; printf(總?cè)藬?shù)和報數(shù)間隔:n); scanf(%d%d,n,m); for(pos=0;kn;pos=(pos+1)%n) if(manpos=0) i+; if(i=m) i=0; k+; manpo
18、s=k; printf(約瑟夫環(huán):n); for(pos=0;posn;pos+) printf(%-6d%c,manpos,(pos+1)%10=0)?"n":" "); printf(n); void p102() int j,n;char line10000; printf(求 1-指定數(shù)之間的素數(shù)n); printf(輸入一個數(shù):); scanf(%d,n); for(i=0;i=n;i+) linei=1; for(i=2;i=n;i+) if(linei) printf(%-6d,i); for(j=i+1;j=n;j+) if(j%i=0)
19、 linej=0; printf(n); main() int zhu,fu,k,a,b; while(1) p(); scanf(%d,zhu); if(zhu=0) return 0; if(zhu=1) p1(); if(zhu=2) p2(); scanf(%d,fu); switch(fu) case 1: p21();break; case 2: p22();break; case 3: p23();break; case 4: p24();break; if(zhu=3) p3(); if(zhu=4) p4(); scanf(%d,fu); switch(fu) case 1:
20、 printf(請輸入想刪除的元素對應(yīng)下標(biāo):); scanf(%d,k); p41(k);top-; break; case 2: printf(請輸入想刪除的元素:); scanf(%d,k); p42(k);top-; break; case 3: printf(請輸入刪除的區(qū)間:); scanf(%d%d,a,b); p43(a,b);top=top-(b-a)-1; break; if(zhu=5) p5(); scanf(%d,fu); switch(fu) case 1: p51();break; case 2: if(a0=atop-1) p52sx(); else p52jx(); break; if(zhu=6) p6(); scanf(%d,fu); switch(fu) case 1: p61();break; case 2: p62();break; case 3: p63
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育教師招聘協(xié)議模板
- 基礎(chǔ)教育建設(shè)合同范本
- 家電制造保溫板安裝協(xié)議
- 玻璃制造租賃合同
- 滑雪場木地板安裝合同
- 城市屋頂花園廊架施工合同
- 地鐵建設(shè)物探施工合同
- 幕墻制作合同模板
- 生日宴席合同范例
- 脫貧戶信息保密協(xié)議書
- 2024-2030年中國水泵市場深度調(diào)研分析及投資前景研究預(yù)測報告
- 永州市冷水灘區(qū)京華中學(xué)2022-2023學(xué)年4月七年級下學(xué)期第二次月考數(shù)學(xué)試題
- 網(wǎng)課智慧樹知道《古典時期鋼琴演奏傳統(tǒng)(星海音樂學(xué)院)》章節(jié)測試答案
- 乙炔氧氣安全供貨協(xié)議
- 歡喜就好-大漆文創(chuàng)產(chǎn)品設(shè)計智慧樹知到期末考試答案章節(jié)答案2024年泉州華光職業(yè)學(xué)院
- 2024華為員工股權(quán)激勵協(xié)議
- 模擬電子技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年齊魯工業(yè)大學(xué)
- 沈陽市鐵西區(qū)2024年九年級上冊《道德》期末試題與參考答案
- 新生兒呼吸窘迫綜合征搶救流程圖
- 傷寒論選讀智慧樹知到期末考試答案章節(jié)答案2024年云南中醫(yī)藥大學(xué)
- 深基坑鋼板樁支護(hù)技術(shù)規(guī)程DBJ-T 15-214-2021
評論
0/150
提交評論