




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2008級 lxc一、綜合設計題目:數(shù)組的各項基本操作。二、綜合設計分工說明本實驗由我一個人完成。 三、問題概述 本實驗要求編寫出一個程序,它能反復實現(xiàn)數(shù)組里的幾個基本操作(輸入、輸出、排序、查找、插入、刪除);而且要盡可能的使用模塊化的程序設計方法,盡可能的體現(xiàn)c語言的風格。四、問題分析:本實驗可先分功能模塊完成各個基本操作,再利用函數(shù)的調(diào)用實現(xiàn)程序的全部功能;各功能模塊的編寫可在自己編寫過的數(shù)組的基本操作的程序的基礎(chǔ)之上做些修改來實現(xiàn)。五、功能模塊描述及功能模塊圖:數(shù)組輸入輸出排序查找插入刪除每個功能模塊的功能:輸入:輸入數(shù)組里的各個元素輸出:輸出數(shù)組里的各個元素排序:將數(shù)組里的數(shù)從小到大
2、或從大到小進行排序查找:判斷一個數(shù)是否是該數(shù)組中的一個數(shù)插入:向數(shù)組中插入一個數(shù)刪除:將數(shù)組中的一個數(shù)刪除掉六、每個功能模塊的算法描述及其實現(xiàn) :1. 輸入:函數(shù)的作用:輸入數(shù)組中的每一個元素;參數(shù):int a int n;返回值:無;函數(shù)名,功能及實現(xiàn)方法:input; 運用for語句實現(xiàn)輸入具體函數(shù)如下:void input(int a,int n)int i;for(i=0;i<n;i+)scanf("%d",&ai);2. 輸出:函數(shù)的作用:輸出數(shù)組中的每一個元素;參數(shù):int a int n;返回值:無;函數(shù)名,功能及實現(xiàn)方法:output; 運用f
3、or語句實現(xiàn)輸入具體函數(shù)如下:void output(int a,int n)int i;for(i=0;i<n;i+)printf("%d ",ai);printf("n"); 3. 排序:(1)函數(shù)的作用:將數(shù)組里的數(shù)從大到小排序參數(shù):int a int n;返回值:無;函數(shù)名,功能及實現(xiàn)方法:f; 冒泡排序法具體函數(shù)如下:void f(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai<ai+1) t=ai; ai=ai+1; ai+1=t; p
4、rintf("數(shù)組中各數(shù)從大到小的順序為: ");output(a,n);(2)函數(shù)的作用:將數(shù)組里的數(shù)從小到大排序參數(shù):int a int n;返回值:無;函數(shù)名,功能及實現(xiàn)方法:f1; 冒泡排序法具體函數(shù)如下:void f1(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai>ai+1) t=ai; ai=ai+1; ai+1=t; printf("數(shù)組中各數(shù)從小到大的順序為: ");output(a,n);4. 查找:函數(shù)的作用:判斷一個數(shù)x是否是該數(shù)
5、組中的一個數(shù)參數(shù):int a int n;返回值:無;函數(shù)名,功能及實現(xiàn)方法:f2; 折半查找發(fā)具體函數(shù)如下:void f2(int a,int n)int i,j,k,x,l;f1(a,n);printf("請輸入要查找的一個整數(shù): ");scanf("%d",&x);l=0;i=0; j=n-1; while(i<=j&&l=0) k=(i+j)/2; if(x=ak)l=1;break;if(x>ak)i=k+1;if(x<ak)j=k-1; if(l=1)printf("找到n");
6、else printf("沒找到n");5. 插入:(1)函數(shù)的作用:向數(shù)組中插入一個數(shù)y(要求插入后數(shù)組中的所有數(shù)是按從小到大的順序排列的)參數(shù):int a int n;返回值:無;函數(shù)名:f3; 功能及實現(xiàn)方法:查找y在數(shù)組中的位置,并標記為k將數(shù)組中ak到an-1中的數(shù)整體后移一位將y 插入,使得ak=y具體函數(shù)如下:void f3(int a,int n)int i,k,y;f1(a,n);printf("請輸入要插入的一個整數(shù): ");scanf("%d",&y);if(y>an-1)k=n;for(i=0;i
7、<n;i+)if(y<ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你輸入的整數(shù)之后,數(shù)組中各數(shù)為: ");output(a,n);(2)函數(shù)的作用:向數(shù)組中插入一個數(shù)y(要求插入后數(shù)組中的所有數(shù)是按從大到小的順序排列的)參數(shù):int a int n;返回值:無;函數(shù)名:f4; 功能及實現(xiàn)方法:查找y在數(shù)組中的位置,并標記為k將數(shù)組中ak到an-1中的數(shù)整體后移一位將y 插入,使得ak=y具體函數(shù)如下:void f4(int a,int n)int i,k,y;f(a,n);printf(
8、"請輸入要插入的一個整數(shù): ");scanf("%d",&y);if(y<=an-1)k=n;for(i=0;i<n;i+)if(y>ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你輸入的整數(shù)之后,數(shù)組中各數(shù)為: ");output(a,n);6. 刪除:函數(shù)的作用:將數(shù)組中的一個數(shù)z刪除掉參數(shù):int a int n;返回值:無;函數(shù)名:f5; 功能及實現(xiàn)方法:查找要刪除的數(shù)z的位置k將數(shù)組中ak+1到an-1中的數(shù)整體前移一位具體函
9、數(shù)如下:void f5(int a,int n)int i,k,z;printf("數(shù)組中現(xiàn)有的數(shù)是:");for(i=0;i<n;i+) printf("%d ",ai);printf("n");printf("請輸入要刪除的數(shù): ");scanf("%d",&z);for(i=0;i<n;i+) if(z=ai)k=i;for(i=k;i<n-1;i+) ai=ai+1;n-;printf("刪除了你輸入的整數(shù)之后,數(shù)組中各數(shù)為: ");outp
10、ut(a,n);7. 主函數(shù):調(diào)用各個函數(shù),反復實現(xiàn)數(shù)組的幾個基本操作;運用while()實現(xiàn)多次循環(huán)調(diào)用;運用if()、&&等選擇執(zhí)行的操作類型;運用system(“color 7c”);system(“pause”);system(“cls”)以及printf()對輸出界面進行美化;具體函數(shù)如下:void main()int a500,n,m,r,x,i;system("color 7c");printf("請輸入數(shù)組中整數(shù)的個數(shù):");scanf("%d",&n);printf("請輸入數(shù)組中的
11、各數(shù)的值:");input(a,n);m=1;printf("請選擇數(shù)組中各數(shù)顯現(xiàn)的方式(1 為從小到大;2 為從大到?。?");scanf("%d",&r);while(m>0)system("cls");printf("n");printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"
12、); printf(" ");printf("n"); printf(" 1 排序 ");printf("n"); printf(" ");printf("n"); printf(" 2 查找 ");printf("n"); printf(" ");printf("n"); printf(" 3 插入 ");printf("n"); printf("
13、; ");printf("n"); printf(" 4 刪除 ");printf("n"); printf(" ");printf("n"); printf(" 0 退出 ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf(&qu
14、ot;n"); printf(" ");printf("n"); printf("n"); printf(" 您數(shù)組里數(shù)有:"); if(r=1)f1(a,n);output(a,n);if(r=2)f(a,n);output(a,n);printf("n"); printf(" 請選擇你要執(zhí)行的操作:"); scanf("%d",&m);printf("n");if(r=1&&m=1)f1(a,n);
15、printf("數(shù)組中各數(shù)從小到大的順序為: ");output(a,n);system("pause");system("cls");if(r=1&&m=2)f1(a,n);f2(a,n);system("pause");system("cls");if(r=1&&m=3)f1(a,n);f3(a,n);n+;system("pause");system("cls");if(r=1&&m=4)f1(a,n)
16、;f5(a,n);n-;system("pause");system("cls");if(r=2&&m=1)f(a,n);printf("數(shù)組中各數(shù)從大到小的順序為: ");output(a,n);system("pause");system("cls");if(r=2&&m=2)f(a,n);f2(a,n);system("pause");system("cls");if(r=2&&m=3)f(a,n);f
17、4(a,n);n+;system("pause");system("cls");if(r=2&&m=4)f(a,n);f5(a,n);n-;system("pause");system("cls");七、源程序清單:本實驗由我一個人完成,程序附最后。八、測試數(shù)據(jù)及結(jié)果:本程序經(jīng)我反復測試,均能反復實現(xiàn)任意多個數(shù)的排序、均能實現(xiàn)反復查找、反復插入、反復刪除(包括從大到小和從小到大)。由于測試數(shù)據(jù)太多,下面只附部分測試數(shù)據(jù):執(zhí)行程序后提示:請輸入數(shù)組中整數(shù)的個數(shù):輸入:6(回車)出現(xiàn)提示:請輸入數(shù)組中各
18、數(shù)的值:輸入:12 9 33 78 6 125 (回車)出現(xiàn)提示:請選擇數(shù)組中各數(shù)顯示的方式(1 為從小到大;2 為從大到?。狠斎耄? (回車)出現(xiàn)提示: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12 33 78 125 請選擇你要執(zhí)行的操作:輸入:1(回車)出現(xiàn)提示: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12 33 78 125 請選擇你要執(zhí)行的操作:1數(shù)組中各數(shù)從小到大的順序為:6 9 12 33 78 125請按任意鍵繼續(xù)按任意鍵后出現(xiàn)提示: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12
19、 33 78 125 請選擇你要執(zhí)行的操作:輸入:2(回車)出現(xiàn)提示: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12 33 78 125 請選擇你要執(zhí)行的操作:2請輸入要查找的一個整數(shù):輸入:125(回車)出現(xiàn)提示: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12 33 78 125 請選擇你要執(zhí)行的操作:2請輸入要查找的一個整數(shù): 125找到請按任意鍵繼續(xù)其它的操作也和上面的類似執(zhí)行完其它操作后,按任意鍵會出現(xiàn)如下界面: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12 33 78 125 請選擇你要執(zhí)
20、行的操作:輸入: 0(回車)出現(xiàn)提示: 1 排序 2 查找 3 插入 4 刪除 0 退出 你數(shù)組里數(shù)有:6 9 12 33 78 125 請選擇你要執(zhí)行的操作:0press any key to continue.此時按任意鍵退出!九、總結(jié)和體會:通過綜合實驗的設計,我能更好的運用所學知識進行編程了;在這個過程中,我的綜合分析、解決問題的能力也得到了提高。在做綜合實驗的過程中也遇到了很多問題,起初總覺得很難解決,后來通過問同學和老師把很多問題都解決了。這讓我明白了:什么問題都不是想象的那么難的,只要你愿意去解決它,你就一定能解決.還有一點值得一提的是:最初時,通過我的反復編寫,我編寫的程序已能
21、反復的實現(xiàn)排序、查找、插入、刪除;但我的程序還是不是很完美,而且我根本沒有想到把輸出的界面美化一下,后來是老師給了我指點,我很快就對我的程序進行了美化,美化后的輸出界面比先得程序好看了很多! 做完簡單的美化后,我又進一步的完善了我的程序(實現(xiàn)雙向的各種操作)從這個問題中我深刻的明白了一個道理:只要我們愿意開動我們的腦筋,我們什么都可以實現(xiàn)!在那之后,我也有了很多新的想法來讓我的程序變的更加完美. 但由于時間原因,我還沒能去實現(xiàn)那些想法,我會利用假期的時間去實現(xiàn),我相信那一定又會是我的思維的一次提高十、源程序 #include"stdio.h"#include"st
22、dlib.h"void input(int a,int n)int i;for(i=0;i<n;i+)scanf("%d",&ai);void output(int a,int n)int i;for(i=0;i<n;i+)printf("%d ",ai);printf("n"); void f(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai<ai+1) t=ai; ai=ai+1; ai+1=t; vo
23、id f1(int a,int n)int i,j,t;for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai>ai+1) t=ai; ai=ai+1; ai+1=t; void f2(int a,int n)int i,j,k,x,l;f1(a,n);printf("請輸入要查找的一個整數(shù): ");scanf("%d",&x);l=0;i=0; j=n-1; while(i<=j&&l=0) k=(i+j)/2; if(x=ak)l=1;break;if(x>ak)i
24、=k+1;if(x<ak)j=k-1; if(l=1)printf("找到n"); else printf("沒找到n");void f3(int a,int n)int i,k,y;f1(a,n);printf("請輸入要插入的一個整數(shù): ");scanf("%d",&y);if(y>=an-1)k=n;for(i=0;i<n;i+)if(y<ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你輸入的整
25、數(shù)之后,數(shù)組中各數(shù)為: ");output(a,n);void f4(int a,int n)int i,k,y;f(a,n);printf("請輸入要插入的一個整數(shù): ");scanf("%d",&y);if(y<=an-1)k=n;for(i=0;i<n;i+)if(y>ai)k=i;break;n+; for(i=n;i>k;i-)ai=ai-1; ak=y;printf("插入了你輸入的整數(shù)之后,數(shù)組中各數(shù)為: ");output(a,n);void f5(int a,int n)in
26、t i,k,z;printf("請輸入要刪除的數(shù): ");scanf("%d",&z);for(i=0;i<n;i+) if(z=ai)k=i;for(i=k;i<n-1;i+) ai=ai+1;n-;printf("刪除了你輸入的整數(shù)之后,數(shù)組中各數(shù)為: ");output(a,n);void main()int a500,n,m,r,x,i;system("color 7c");printf("請輸入數(shù)組中整數(shù)的個數(shù):");scanf("%d",&am
27、p;n);printf("請輸入數(shù)組中的各數(shù)的值:");input(a,n);m=1;printf("請選擇數(shù)組中各數(shù)顯現(xiàn)的方式(1 為從小到大;2 為從大到?。?");scanf("%d",&r);while(m>0)system("cls");printf("n");printf(" ");printf("n"); printf(" ");printf("n"); printf(" &qu
28、ot;);printf("n"); printf(" ");printf("n"); printf(" 1 排序 ");printf("n"); printf(" ");printf("n"); printf(" 2 查找 ");printf("n"); printf(" ");printf("n"); printf(" 3 插入 ");printf(&qu
29、ot;n"); printf(" ");printf("n"); printf(" 4 刪除 ");printf("n"); printf(" ");printf("n"); printf(" 0 退出 ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf(" ");printf("n"); printf("n&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村牧場畜群托管及護理協(xié)議
- 配送勞務分包合同協(xié)議
- 退休合同聘用合同協(xié)議
- 配套幼兒園合同協(xié)議
- 車牌照租賃合同協(xié)議
- 車輛指定贈予合同協(xié)議
- 跟組演員簽約合同協(xié)議
- 校園文化協(xié)議書
- 淺談就業(yè)協(xié)議書
- 轉(zhuǎn)讓手表合同協(xié)議書范本
- 2025化學中考解題技巧 專題10 技巧性計算(解析版)
- 部門加班調(diào)休管理制度
- 2025-2030中國工業(yè)物聯(lián)網(wǎng)行業(yè)市場深度調(diào)研及發(fā)展前景與趨勢預測研究報告
- 考勤制度操作指南
- 人力核心指標 行業(yè)報告系列 2025年Q1精細化工行業(yè)薪酬報告
- 垃圾焚燒發(fā)電廠應急預案
- 動柱龍門合格證書
- 超星爾雅學習通《歷史的三峽:近代中國的思潮與政治(華東師范大學)》2025章節(jié)測試答案
- 村莊灣塘承包協(xié)議書8篇
- 打車安全意識教育
- 腎內(nèi)科疾病臨床路徑
評論
0/150
提交評論