




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
實驗2根底訓(xùn)練結(jié)構(gòu)體、指針一、實驗?zāi)康睦斫夂驼莆战Y(jié)構(gòu)體的定義、引用。掌握數(shù)據(jù)結(jié)構(gòu)中邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換方法二、實驗要求【工程1–結(jié)構(gòu)體的理解】什么是結(jié)構(gòu)體?在C語言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語言中聚合數(shù)據(jù)類型(aggregatedatatype)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。結(jié)構(gòu)體的定義:C語言結(jié)構(gòu)體類型的定義模板大概為:struct類型名{成員表列}變量;?在成員表列中可以是幾種根本數(shù)據(jù)類型,也可以是結(jié)構(gòu)體類型。?struct類型名{}變量;后的分號不能漏下面給出定義結(jié)構(gòu)體類型的幾種方法1先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。structStudent{charno[20];//學(xué)號charname[20];//姓名charsex[5];//性別intage;//年齡};structstudentstu1,stu2;//此時stu1,stu2為student結(jié)構(gòu)體變量2定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量。structstudent{charno[20];//學(xué)號charname[20];//姓名charsex[5];//性別intage;//年齡}stu1,stu2;此時還可以繼續(xù)定義student結(jié)構(gòu)體變量如:structstudentstu3;3直接定義結(jié)構(gòu)體變量。struct{charno[20];//學(xué)號charname[20];//姓名charsex[5];//性別intage;//年齡}stu1,stu2;一般不會使用第三種定義方法,因為直接定義結(jié)構(gòu)體變量stu1,stu2后就不能再繼續(xù)定義該類型的變量。在C中定義結(jié)構(gòu)體類型后每次定義變量時都要使用struct,如果嫌麻煩,我們可以這樣:typedefstructstudent{charno[20];//學(xué)號charname[20];//姓名charsex[5];//性別intage;//年齡}STUDENT;STUDENTstu1;使用typedef給structstudent取一個〞別名〞STUDENT【工程2–結(jié)構(gòu)體的定義、引用練習(xí)】如實驗資料包中“員工信息表.xlsx〞所示,現(xiàn)在擬對員工進行信息管理,請完成如下操作:實現(xiàn)該表的物理存儲。根據(jù)以下應(yīng)用場景,用C語言實現(xiàn)該表的存儲,定義出它的結(jié)構(gòu)體如果該信息管理主要功能是查找員工信息,你該如何定義?實現(xiàn)它如果該公司人員變更比擬頻繁,你考慮又該如何定義?實現(xiàn)它請將第一問結(jié)構(gòu)體定義附錄于此typedefstruct{ charzhiwu[22]; charid[10]; charname[22]; chargrade[20]; intsalary;}staff;typedefstruct{ staff*ding; intMaxsize;}List;請將第二問結(jié)構(gòu)體定義附錄于此typedefstructLnode{ charzhiwu[22]; charid[10]; charname[22]; chargrade[20]; intsalary; structLnode*next;}Lnode,*Linklist;請輸入至少5條記錄信息,然后求解如下問題:分別用順序表和鏈?zhǔn)浇Y(jié)構(gòu)實現(xiàn)以下功能,寫成2個完整程序。求出員工的平均工資,并進行輸出請插入一個員工的信息請輸出所有員工的信息以上功能用函數(shù)實現(xiàn),盡量使用多文件方式進行組織和管理請將順序結(jié)構(gòu)的程序代碼附錄于此頭文件shuntou.h#defineSHUNTOU_H_INCLUDED#include"stdio.h"#include"stdlib.h"#include"malloc.h"typedefstruct{ charzhiwu[22]; charid[10]; charname[22]; chargrade[20]; intsalary;}staff;typedefstruct{ staff*ding; intMaxsize;}List;voidwelcome();voidjianli(intn,List&L);voidjisuan(intn,List&L);voidListInsert(intn,intpos,List&L);voidxianshi(intn,List&L);#endif//SHUNTOU_H_INCLUDED函數(shù)文件hanshu.cpp#include"shuntou.h"voidwelcome(){ puts(" ********歡送進入員工信息管理系統(tǒng)********\n designedby丁家雄"); puts("1:輸入員工數(shù)目及信息"); puts("2:計算所有員工的平均工資"); puts("3:插入員工信息"); puts("4:顯示所有員工信息"); puts("5:訪問結(jié)束"); puts("\n");}voidjianli(intn,List&L){inti; for(i=1;i<=n;i++) { printf("請輸入員工職務(wù):"); scanf("%s",L.ding[i].zhiwu); printf("請輸入員工編號:");scanf("%s",L.ding[i].id); printf("請輸入員工姓名:"); scanf("%s",L.ding[i].name); printf("請輸入員工工資等級:"); scanf("%s",L.ding[i].grade); printf("請輸入員工崗位工資:"); scanf("%d",&L.ding[i].salary); printf("請繼續(xù)輸入下一個\n"); } printf("輸入結(jié)束\n");}voidjisuan(intn,List&L){inti;intsumqian=0;intaverage=0;for(i=1;i<=n;i++){sumqian=sumqian+L.ding[i].salary;}average=sumqian/n;printf("%d",average);printf("\n請選擇操作:");}voidListInsert(intn,intpos,List&L){inti; for(i=n;i>pos+1;i--) L.ding[i]=L.ding[i-1]; printf("員工職務(wù):"); scanf("%s",L.ding[pos+1].zhiwu); printf("員工編號:"); scanf("%s",L.ding[pos+1].id); printf("員工姓名:"); scanf("%s",L.ding[pos+1].name); printf("員工工資等級:"); scanf("%s",L.ding[pos+1].grade); printf("員工崗位工資:"); scanf("%d",&L.ding[pos+1].salary);}voidxianshi(intn,List&L){inti;printf("顯示所有員工信息\n");for(i=1;i<=n;i++){printf("%10s\t%10s\t%10s\t%10s\t%10d\n",L.ding[i].zhiwu,L.ding[i].id,L.ding[i].name,L.ding[i].grade,L.ding[i].salary);}printf("請選擇操作:");}主函數(shù)文件zhenmain.cpp#include"shuntou.h"intmain(){ welcome(); ListL; L.Maxsize=60; L.ding=(staff*)malloc(sizeof(staff)*L.Maxsize); intop,pos; intn=0; printf("請選擇操作:\n"); while(1) { scanf("%d",&op); if(op==5){break;} if(op<1||op>5) { printf("沒有該操作,請重新輸入\n\n"); continue; } if((op>1&&op<5)&&n==0) { printf("沒有員工信息,請先輸入\n\n"); continue; } if(op==1) { printf("輸入員工數(shù)目及信息\n"); printf("請輸入員工人數(shù)(0~60):"); scanf("%d",&n); while(n>60||n<0) { printf("您輸入的人數(shù)有誤,請重新輸入人數(shù)\n\n"); scanf("%d",&n); } puts(""); jianli(n,L); printf("\n請選擇操作:"); continue; } if(op==2) { printf("計算所有員工的平均工資\n"); jisuan(n,L); continue; } if(op==3) { printf("插入新的員工信息\n"); n++; printf("您要插入的位置:\n"); scanf("%d",&pos); ListInsert(n,pos,L); printf("操作成功\n請選擇操作:"); continue; } if(op==4) { printf("顯示所有員工的信息\n"); xianshi(n,L); printf("請選擇操作:"); continue; } } return0;}請將運行結(jié)果圖附錄于此請將鏈?zhǔn)浇Y(jié)構(gòu)的程序代碼附錄于此頭文件liantou.h#defineLIANTOU_H_INCLUDED#include<stdio.h>#include<stdlib.h>#include<malloc.h>#definefalse0#definetrue1#defineboolinttypedefstructLnode{ charzhiwu[22]; charid[10]; charname[22]; chargrade[20]; intsalary; structLnode*next;}Lnode,*Linklist;voidwelcome();voidjisuan(intn,Lnode&L,Linklist&p);voidchushihua(Linklist&p);voidjianli(intn,Lnode&L,Linklist&p);boolcharu(intpos,Lnode&L,Linklist&p);voidxianshi(intn,Lnode&L,Linklist&p);#endif//LIANTOU_H_INCLUDED函數(shù)文件hanshu.cpp#include"liantou.h"voidwelcome(){ puts(" ********歡送進入員工信息管理系統(tǒng)********\n designedby丁家雄"); puts("1:輸入員工數(shù)目及信息"); puts("2:計算所有員工的平均工資"); puts("3:插入員工信息"); puts("4:顯示所有員工信息"); puts("5:訪問結(jié)束"); puts("\n");}voidjisuan(intn,Lnode&L,Linklist&p){intsum=0;intave=0;Linklistt;t=L.next;while(t!=NULL){sum=sum+t->salary;t=t->next;}ave=sum/n;printf("%d",ave);}voidchushihua(Linklist&p){p=(Lnode*)malloc(sizeof(Lnode));p->next=NULL;}voidjianli(intn,Lnode&L,Linklist&p){inti; for(i=1;i<=n;i++) { chushihua(p); printf("請輸入職務(wù):");scanf("%s",p->zhiwu);printf("請輸入員工編號:");scanf("%s",p->id);printf("請輸入員工姓名:");scanf("%s",p->name);printf("請輸入員工工資等級:");scanf("%s",p->grade);printf("請輸入員工工資:");scanf("%d",&p->salary); Linklistt; t=&L; while(t->next!=NULL) t=t->next; t->next=p; printf("請繼續(xù)\n"); }}boolcharu(intpos,Lnode&L,Linklist&p){ intj=0; Linklistt; t=(Lnode*)malloc(sizeof(Lnode));printf("請輸入職務(wù):");scanf("%s",t->zhiwu);printf("請輸入員工編號:");scanf("%s",t->id);printf("請輸入員工姓名:");scanf("%s",t->name);printf("請輸入員工工資等級:");scanf("%s",t->grade);printf("請輸入員工工資:");scanf("%d",&t->salary); p=L.next; while(p!=NULL&&(j<pos-1)) { p=p->next; j++; } if(p==NULL||(j>pos-1)) returnfalse; t->next=p->next; p->next=t; returntrue;}voidxianshi(intn,Lnode&L,Linklist&p){Linklistt;t=L.next;while(t!=NULL){printf("%10s\t%10s\t%10s\t%10s\t%10d\n",t->zhiwu,t->id,t->name,t->grade,t->salary);t=t->next;}printf("請選擇操作:");}主文件main.cpp#include"liantou.hintmain(){ welcome(); LnodeL; L.next=NULL; Linklistp; intpos,op,n=0; boolflag=false; printf("請選擇操作:"); while(1) { scanf("%d",&op); if(op==5) break; if(op<1||op>8) { printf("沒有該操作,請重新輸入\n\n"); continue; } if((op>1&&op<5)&&n==0) { printf("尚未輸入
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項10 文學(xué)常識(試卷版)
- 2025屆江蘇省鹽城市射陽中學(xué)高三上學(xué)期一模物理試題(解析版)
- 2025屆四川省資陽市安岳中學(xué)高三二模語文試題(原卷版+解析版)
- 人教版九年級下冊化學(xué)教學(xué)工作計劃(含進度表)
- 《跨境電子商務(wù)法律法規(guī) 》全套教學(xué)課件
- 廣東省廣州市華南師范附屬中學(xué)2024-2025學(xué)年高二下學(xué)期3月月考物理試卷(原卷版+解析版)
- 教育咨詢居間協(xié)議樣本
- 汽車車身電子控制技術(shù)指南
- 中醫(yī)護理學(xué)(第5版)課件 第三節(jié) 中藥煎服法與護理
- 雨水收集再利用系統(tǒng)
- 2023年 新版評審準(zhǔn)則質(zhì)量記錄手冊表格匯編
- 2024年全國版圖知識競賽(小學(xué)組)考試題庫大全(含答案)
- 博物館保安服務(wù)投標(biāo)方案(技術(shù)方案)
- (高清版)TDT 1047-2016 土地整治重大項目實施方案編制規(guī)程
- 2024年新疆維吾爾自治區(qū)中考一模綜合道德與法治試題
- 醫(yī)藥代表專業(yè)化拜訪技巧培訓(xùn)
- 今年夏天二部合唱譜
- 現(xiàn)代制造技術(shù)課件
- 小米公司招聘測試題目
- 2024年北京控股集團有限公司招聘筆試參考題庫含答案解析
- 人教版二年級數(shù)學(xué)下冊 3 圖形的運動(一)1.軸對稱圖形(教學(xué)課件)
評論
0/150
提交評論