版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jì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)在擬對員工進(jì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個完整程序。求出員工的平均工資,并進(jìn)行輸出請插入一個員工的信息請輸出所有員工的信息以上功能用函數(shù)實現(xiàn),盡量使用多文件方式進(jì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(" ********歡送進(jìn)入員工信息管理系統(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;}請將運(yùn)行結(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(" ********歡送進(jìn)入員工信息管理系統(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024鐵路物業(yè)買賣正式協(xié)議文件版B版
- 2025年度海洋資源開發(fā)承包經(jīng)營合同3篇
- 商品房銷售合同范本
- 2025年私募基金代持資產(chǎn)清算與分配合同3篇
- 二零二四年度專業(yè)農(nóng)場滅鼠及作物保護(hù)合同2篇
- 2025年度航空航天裝備采購合同3篇
- 2025年新能源電動車租賃及綠色出行服務(wù)合同范本2篇
- 2025版鋁?;厥绽门c環(huán)保處理服務(wù)合同4篇
- 二零二五年度環(huán)保節(jié)能設(shè)施安全生產(chǎn)合同范本3篇
- 二零二五年高速公路建設(shè)土石方供應(yīng)合同3篇
- 勞動合同續(xù)簽意見單
- 大學(xué)生國家安全教育意義
- 2024年保育員(初級)培訓(xùn)計劃和教學(xué)大綱-(目錄版)
- 河北省石家莊市2023-2024學(xué)年高二上學(xué)期期末考試 語文 Word版含答案
- 企業(yè)正確認(rèn)識和運(yùn)用矩陣式管理
- 分布式光伏高處作業(yè)專項施工方案
- 陳閱增普通生物學(xué)全部課件
- 檢驗科主任就職演講稿范文
- 人防工程主體監(jiān)理質(zhì)量評估報告
- 20225GRedCap通信技術(shù)白皮書
- 燃?xì)庥邢薰究蛻舴?wù)規(guī)范制度
評論
0/150
提交評論