實(shí)驗(yàn)8-9查找和排序應(yīng)用_第1頁
實(shí)驗(yàn)8-9查找和排序應(yīng)用_第2頁
實(shí)驗(yàn)8-9查找和排序應(yīng)用_第3頁
實(shí)驗(yàn)8-9查找和排序應(yīng)用_第4頁
實(shí)驗(yàn)8-9查找和排序應(yīng)用_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)8、9 查找、排序算法的應(yīng)用 姓名 張鑫明 學(xué)號 A208 班級 B14512一、實(shí)驗(yàn)?zāi)康?掌握查找的不同方法,并能用高級語言實(shí)現(xiàn)查找算法。 2熟練掌握順序表和有序表的順序查找和二分查找方法。3掌握排序的不同方法,并能用高級語言實(shí)現(xiàn)排序算法。4熟練掌握順序表的選擇排序、冒泡排序和直接插入排序算法的實(shí)現(xiàn)。二、實(shí)驗(yàn)內(nèi)容1在文件中存儲如下學(xué)生信息: 學(xué)號姓名 數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計1王立76 882 張秋88 773劉麗79 654 王通86 855趙陽71 906李艷68 707錢娜89 958孫勝60 762創(chuàng)建順序查找表,讀取文件中的信息。3使用順序查找方法按姓名查找

2、學(xué)生。如果查找成功,則顯示該生的相關(guān)信息;如果查找不成功,則給出相應(yīng)的提示信息。4使用二分查找方法,查找學(xué)生學(xué)號信息。如果查找成功,則顯示該生的相關(guān)信息;如果查找不成功,則給出相應(yīng)的提示信息。5使用直接插入排序方法,對學(xué)生信息中的姓名進(jìn)行排序。輸出排序前和排序后的學(xué)生信息表,驗(yàn)證排序結(jié)果。6使用直接選擇排序方法,對學(xué)生信息中的數(shù)據(jù)結(jié)構(gòu)成績進(jìn)行排序。輸出排序前和排序后的學(xué)生信息表,驗(yàn)證排序結(jié)果。7使用冒泡排序方法,對學(xué)生信息中的程序設(shè)計成績進(jìn)行排序。輸出排序前和排序后的學(xué)生信息表,驗(yàn)證排序結(jié)果。8編寫一個菜單,來實(shí)現(xiàn)各項(xiàng)功能的選擇。*學(xué)生成績管理系統(tǒng)* 1信息初始化 2順序查找 * 3二分查找

3、4直接插入排序 * 5冒泡排序 6直接選擇排序 * 0退出 *9利用工程完成本次實(shí)驗(yàn)任務(wù),各個功能分別放到一個函數(shù)中。三、實(shí)驗(yàn)結(jié)果專心-專注-專業(yè)Main()#include "sdaf.h"int main(int argc,char *argv)stu a8 =1,"王立",76,88,2,"張秋",88,77,3,"劉麗",79,65,4,"王通",86,85,5,"趙陽",71,90,6,"李艷",68,70,7,"錢娜",89

4、,95,8,"孫勝",60,76; FILE *pf=NULL;pf=fopen("D:/test.txt", "w" );/假設(shè)test.txt文件為空 if(!pf)printf("打開文件失敗,程序退出!");exit(1); for(int i=0;i<8;i+)fprintf(pf,"%d %s %d %dn",ai.num,,ai.s1,ai.s2);if(pf)/關(guān)閉文件 fclose( pf);pf=NULL;printf("數(shù)據(jù)已寫入test.tx

5、t文件!n"); stu b8;pf = fopen("D:/test.txt","r"); / 打開文件,按讀的方式打開for(int j=0;j<8;j+)fscanf(pf,"%d %s %d %d", &bj.num,&,&bj.s1,&bj.s2); / 循環(huán)讀if(b7.num=8)cout<<"讀取成功"<<endl;cout<<"*學(xué)生成績管理系統(tǒng)*"<<endl;cou

6、t<<"* 1信息初始化 2順序查找 *"<<endl;cout<<"* 3二分查找 4直接插入排序 *"<<endl;cout<<"* 5冒泡排序 6直接選擇排序 *"<<endl;cout<<"* 0退出 *"<<endl;cout<<"*"<<endl;int cc;while(cc!=0)cout<<"請輸入您要選擇的數(shù)字"<<

7、;endl;cin>>cc;while(cc>6|cc<0)cout<<"輸入錯誤 請重新輸入"<<endl;cin>>cc;switch(cc)case 1: cout<<"初始化成功"<<endl;break; case 2: cout<<"請輸入查找的姓名"<<endl;char aa5;cin>>aa;S_search(b,aa);break; case 3: cout<<"請輸入要查找

8、的數(shù)字"<<endl; int bb; cin>>bb;binary_search(b,bb);break; case 4: cout<<"按姓名排序"<<endl;straisort(b);break; case 5: cout<<"按程序設(shè)計分?jǐn)?shù)排序"<<endl; bubblesort(b);break; case 6: cout<<"按數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)排序"<<endl;selectsort(b);break; case 0:

9、 break; system("pause");return 0;.cpp#include "sdaf.h"int S_search(stu c,char Name)/順序查找for(int i=0;i<8;i+)if(stricmp( Name, )=0)cout<<ci.num<<" "<<<<" "<<ci.s1<<" "<<ci.s2<<endl;retur

10、n 0;if(i=8)cout<<"查無此人"<<endl;return 0;int binary_search(stu c, int Num)/二分 int low = 0; int high = 8 - 1; while(low <= high) int middle = (low + high)/2; if(cmiddle.num = Num) cout<<cmiddle.num<<" "<<<<" "<<cmidd

11、le.s1<<" "<<cmiddle.s2<<endl;return 0; /在左半邊 else if(cmiddle.num > Num) high = middle - 1; /在右半邊 else low = middle + 1; cout<<"no find"<<endl; return -1;int straisort(stu r)/直接插入排序stu a;int i,j; for(i=1;i<8;i+)if(stricmp(, )<

12、0)a=ri;for(j=i-1;stricmp(, )<0;j-)if(j=-1) break;rj+1=rj;rj+1=a;/插入到正確位置for(int k=0;k<8;k+)/輸出排序的結(jié)果 cout<<rk.num<<" "<<<<" "<<rk.s1<<" "<<rk.s2<<endl; return 0;void selectsort(stu L)/直接選擇排序int k;s

13、tu temp;for(int i=0;i<=7;i+)k=i;for(int j=i+1;j<8;j+)if(Lj.s1<Lk.s1)k=j;if(k!=i)temp=Li ;Li =Lk ;Lk =temp;for(int k1=0;k1<8;k1+)/輸出排序的結(jié)果 cout<<Lk1.num<<" "<<L<<" "<<Lk1.s1<<" "<<Lk1.s2<<endl; void bubble

14、sort(stu L)/冒泡排序int i,j,flag=1;stu w;for(i=0;i<=7&&(flag);i+)flag=0;for(j=7 ;j>=i+1;j-)if(Lj.s2 <Lj-1.s2 )w=Lj;Lj=Lj-1;Lj-1=w;flag=1;for(int k1=0;k1<8;k1+)/輸出排序的結(jié)果cout<<Lk1.num<<" "<<L<<" "<<Lk1.s1<<" "<<Lk1.s2<<endl; .h#include<iostream>using namespace std;#include<stdio.h>typedef struct studen

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論