




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗一順序表操作實現實驗日期:2017年3月6日實驗目的及要求1.熟練掌握線性表的基本操作在順序存儲上的實現;2.以線性表的各種操作(建立、插入、刪除、遍歷等)的實現為重點;3.掌握線性表的順序存儲結構的定義和基本操作的實現;4.通過本實驗加深對C語言的使用(特別是函數調用的參數傳遞、指針類型的應用)。實驗內容已知程序文件seqlist.cpp已給出學生身高信息順序表的類型定義和基本運算函數定義。(1)順序表類型定義typedefstruct{intxh;/*學號*/floatsg;/*身高*/intsex;/*性別,0為男生,1為女生*/}datatype;typedefstruct{datatypedata[MAX];/*存放順序表元素的數組*/intlast;/*表示data中實際存放元素個數*/}Seqlist;(2)基本運算函數原型voidinitList(Seqlist*lp);/*置一個空表*/voidcreateList(Seqlist*lp);/*建一個學生順序表*/voidsort_xh(Seqlist*lp);/*按學號排序*/voidError(char*s);/*自定義錯誤處理函數*/voidpntList(Seqlist*lp);/*輸出學生表*/voidsave(Seqlist*lp,charstrname[]);/*保存學生順序表到指定文件*/
任務一創建程序文件seqlist.cpp,其代碼如下所示,理解順序表類型Seqlist和基本運算函數后回答下列問題。/*seqlist.cpp程序文件代碼*/#include<stdio.h>#include<stdlib.h>#defineMAX50typedefstruct{intxh;/*學號*/floatsg;/*身高*/intsex;/*性別,0為男生,1為女生*/}datatype;typedefstruct{datatypedata[MAX];/*存放順序表元素的數組*/intlast;/*表示data中實際存放元素個數*/}Seqlist;voidinitList(Seqlist*lp);/*置一個空表*/voidcreateList(Seqlist*lp);/*建一個學生順序表*/voidsort_xh(Seqlist*lp);/*按學號排序*/voidError(char*s);/*自定義錯誤處理函數*/voidpntList(Seqlist*lp);/*輸出學生表*/voidsave(Seqlist*lp,charstrname[]);/*保存學生順序表到指定文件*//*置一個空表*/voidinitList(Seqlist*lp){lp->last=0;}/*建一個學生順序表*/voidcreateList(Seqlist*lp){ FILE*fp; intxh,sex; floatsg; if((fp=fopen("records.txt","r"))==NULL) { Error("cannotopenfile!"); } while(!feof(fp)) { fscanf(fp,"%d%f%d",&xh,&sg,&sex); lp->data[lp->last].xh=xh; lp->data[lp->last].sg=sg; lp->data[lp->last].sex=sex; lp->last++; } fclose(fp);任務二1.題目要求創建一個新的程序文件sy11.cpp,請調用seqlist.cpp提供的功能函數(以#include“seqlist.cpp”方式導入函數庫)及自定義的函數完成以下操作:創建一個包含學生學號、身高、性別的學生身高信息表并輸出到屏幕,學生信息從records.txt文件讀??;對已建立的學生身高信息表按學號從小到大排序,并把結果寫入到數據文件中(result.txt);從鍵盤輸入一位學生的相關信息插入到已排序的學生身高信息表中后仍然保持學號的有序性;對插入后的學生身高信息表進行倒置,結果輸出在屏幕;從鍵盤輸入一個身高值,統計與該身高相同的學生個數并輸出在屏幕;在程序文件sy1.cpp需再定義以下三個功能函數:(1)voidinsertX(Seqlist*lp,datatypex)功能:在學號從小到大排序的學生表中插入值為x的學生仍保持學號的有序性(2)voidreverse(Seqlist*lp)功能:對lp指向的順序表進行倒置操作(3)intcount(Seqlist*lp,floaty)功能:統計學生表中身高值為y的學生數并返回2.請根據題目功能要求及程序中的注釋填空完整sy1.cpp代碼/*sy11.cpp程序文件代碼*/#include"seqlist.cpp"http://導入自定義類型及函數所在的文件seqlist.cpp,該文件與sy11.cpp存于同一目錄中voidinsertX(Seqlist*lp,datatypex);voidreverse(Seqlist*lp);intcount(Seqlist*lp,floaty);voidmain(){Seqliststu;//定義stu為學生順序表變量datatypex;//x為存儲一個學生信息的變量intc;charstrname[20];//strname為存儲文件名的數組/*創建一個包含學生學號、身高、性別的學生身高信息表stu并輸出到屏幕,學生信息從records.txt文件讀取*/initList(&stu)//調用函數initList初始化順序表stucreateList(&stu)//調用函數createList創建學生表stuprintf("\nsourcelist:\n");pntList(&stu)//調用函數pntList打印學生表stugetchar();//在執行程序能起到暫定的作用,按任意鍵繼續/*對已建立的學生身高信息表按學號從小到大排序,并把結果寫入到數據文件中(result.txt)*/sort_xh(stu)//調用函數sort_xh對學生表stu按學號從小到大排序printf("\nInputnewfilenametosave:");scanf(“”)//鍵盤輸入文件名字符串存于strname字符數組中save(&stu,strname)//調用函數save把排序后的順序表stu存于文件中,文件名在strname數組中/*從鍵盤輸入一位學生的相關信息插入到已排序的學生身高信息表中后仍然保持學號的有序性;*/printf("\nInputastudentinformation:\n");scanf("%d%f%d",&x.xh,&x.sg,&x.sex);insertX(&stu,x)//插入printf("\nlistafterinsert:\n");pntList(&stu); getchar();/*對插入后的學生身高信息表進行倒置,結果輸出在屏幕;*/reserve(&stu)//倒置順序表printf("\nlistafterreverse:\n");pntList(&stu); getchar();/*從鍵盤輸入一個身高值,統計與該身高相同的學生個數并輸出在屏幕*/printf("\nInputastudentheight:\n");scanf("%f",&x.sg);c=count(&stu,y)//統計相同身高的學生數存于c中printf("\nThesameheight:%d\n",c);getchar();}/*在學號從小到大排序的學生表中插入值為x的學生仍保持學號的有序性*/voidinsertX(Seqlist*lp,datatypex){inti,j;if(lp->last>=MAX)Error("listisfull");//在學號升序的順序表中找插入位置后,插入x并使表長增1elsefor(i=0;i<lp->last;i++)if(lp->last>x)break;for(j=lp->last-1;j>=i;j--)/*從后往前元素后移*/lp->strname[j+1]=lp->strname[j];lp->strname[i]=x;lp->last++;/*插入并表長增1*/}/*對lp指向的順序表進行倒置操作*/voidreverse(Seqlist*lp){inti,j;datatypetemp;//通過前后數據元素交換的方式實現倒置for(i=0;j=lp->last–1,j-i>=0;i++,j--){ temp=lp->data[i].sg; lp->data[i].sg=lp->data[j].sg; lp->data[j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省郴州市2024-2025學年八年級下學期5月期中英語試題(含筆試答案無聽力答案、原文及音頻)
- 建筑施工特種作業-建筑起重機械安裝拆卸工(施工升降機)真題庫-3
- 日食月食地理題目及答案
- 國家標準關于《機械制圖》的基本規定(二)
- 2023-2024學年山東省濱州市高二下學期7月期末數學試題(解析版)
- 2023-2024學年湖南省株洲市炎陵縣高二下學期6月期末考試數學試題(解析版)
- 2023-2024學年河南省安陽市林州市高二下學期期末考試數學試卷(解析版)
- 2025屆河南省新鄉市高三二模語文試題(解析版)
- 2024-2025學年浙江省杭州市聯誼學校高二3月月考語文試題(解析版)
- 江蘇阿爾法生物制藥有限公司新建制劑、生物發酵及機械加工建設項目環評資料環境影響
- GB/T 44189-2024政務服務便民熱線運行指南
- 浙江省杭州市學軍中學2025屆數學高一下期末統考試題含解析
- 2025年中考數學專題09 逆等線最值專題(原卷版)
- 中醫醫療技術手冊2013普及版
- 【全球6G技術大會】:2023通感一體化系統架構與關鍵技術白皮書
- 2024年投資入股協議電子版(4篇)
- T-XLXH 012-2023 梨火疫病防治技術規程
- 2024年甘肅省初中《體育》學業水平考試參考題庫(含答案)
- 煤礦井下無軌膠輪車安全管理
- 茅臺銷售公司筆試題目答案
- 脈動真空滅菌器的工作原理及維修保養
評論
0/150
提交評論