版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)文檔主要功能介紹請(qǐng)輸入相應(yīng)序號(hào)選擇相關(guān)功能: 1:錄入數(shù)據(jù) 2:顯示包括刪除數(shù)據(jù)在內(nèi)的全部數(shù)據(jù) 3:顯示未刪除數(shù)據(jù) 4:搜索數(shù)據(jù) 5:修改數(shù)據(jù) 6:刪除數(shù)據(jù) 7:顯示各種統(tǒng)計(jì)信息 0:退出7請(qǐng)選擇相應(yīng)功能的序號(hào):1:查詢(xún)各科平均分2:查詢(xún)每個(gè)學(xué)生的總分和平均分(由高到低排列)3:查詢(xún)各科不及格學(xué)生的學(xué)號(hào)和姓名4:各科成績(jī)按從高到低排列實(shí)訓(xùn)任務(wù)涉及知識(shí)點(diǎn)l 鏈表操作² 鏈表節(jié)點(diǎn)定義² 鏈表初始化及顯示² 鏈表基本操作的函數(shù)實(shí)現(xiàn)l 文件操作² 文件操作基本步驟² 添加數(shù)據(jù),讀取數(shù)據(jù)² 查找數(shù)據(jù)² 修改數(shù)據(jù)程
2、序評(píng)分標(biāo)準(zhǔn)程序子項(xiàng)目分?jǐn)?shù)完成日期主界面5周三錄入數(shù)據(jù)10顯示所有數(shù)據(jù)10顯示未刪除數(shù)據(jù)10搜索數(shù)據(jù)10修改數(shù)據(jù)、刪除數(shù)據(jù)10統(tǒng)計(jì)查詢(xún)各科平均分5周四統(tǒng)計(jì)查詢(xún)每個(gè)學(xué)生總分、平均分10統(tǒng)計(jì)查詢(xún)各科不及格學(xué)生學(xué)號(hào)和名稱(chēng)10統(tǒng)計(jì)各科成績(jī)從高到低排列10周四功能擴(kuò)充20教學(xué)計(jì)劃星期節(jié)次主要實(shí)訓(xùn)內(nèi)容二1、2項(xiàng)目總體說(shuō)明5、6鏈表和文件基本操作7、8鏈表和文件基本操作9、10結(jié)構(gòu)體設(shè)計(jì)三1、2總體界面設(shè)計(jì),成績(jī)數(shù)據(jù)錄入3、4成績(jī)顯示,按學(xué)號(hào)查找數(shù)據(jù)5、6按學(xué)號(hào)修改學(xué)生數(shù)據(jù)7、8按學(xué)號(hào)刪除學(xué)生數(shù)據(jù)9、10按學(xué)號(hào)查找未刪除數(shù)據(jù)四1、2按學(xué)號(hào)、科目求平均分和總分5、6按單科分?jǐn)?shù)、學(xué)生總分排名7、8功能擴(kuò)充9、10
3、匯報(bào),成績(jī)?cè)u(píng)定上交文件l 源代碼放在一個(gè)專(zhuān)門(mén)目錄:codel 可執(zhí)行文件文件名稱(chēng)為:scalMgr.exel 實(shí)訓(xùn)報(bào)告文件名稱(chēng)為:C語(yǔ)言實(shí)訓(xùn)報(bào)告_1524_183_練淼鑫.docxl 文件夾名字:C實(shí)訓(xùn)_1524_183_練淼鑫鏈表操作程序示例1:鏈表初始化和打印程序示例#include <stdio.h>#include <stdlib.h>/鏈表節(jié)點(diǎn)定義 typedef struct nodeint n;struct node *next; NODE;/主程序int main(int argc, char *argv)NODE *head, *last,*p; /初
4、始化鏈表 int i; p = (NODE*)malloc(sizeof(NODE); p->n = 1; p->next = NULL; head = p; last = p; for(i = 2;i <= 10;i +) p = (NODE*)malloc(sizeof(NODE);p->n = i;p->next = NULL;last->next = p;last = p;/打印鏈表 p = head; while(p != NULL) printf("%dn",p->n);p = p->next; getchar()
5、;return 0;程序示例2:以函數(shù)實(shí)現(xiàn)鏈表基本操作程序示例/本程序?qū)崿F(xiàn)了添加新節(jié)點(diǎn),修改指定節(jié)點(diǎn)的數(shù)據(jù),刪除指定節(jié)點(diǎn),冒泡法排序#include <stdio.h>#include <stdlib.h>/鏈表節(jié)點(diǎn)結(jié)構(gòu)體定義struct nodeint data;struct node *next;typedef struct node NODE;/添加新節(jié)點(diǎn)至數(shù)據(jù)域的值為m的后面,新節(jié)點(diǎn)的數(shù)據(jù)域?yàn)閚/函數(shù)中的head參數(shù)都是指頭節(jié)點(diǎn)int insert(NODE *head,int m,int n)NODE *p,*newNode,*q;/在子函數(shù)中手工分配的內(nèi)存,
6、不會(huì)在函數(shù)調(diào)用結(jié)束后釋放。newNode=(NODE*)malloc(sizeof(NODE);newNode->data=n;newNode->next=NULL;p=head;while(p!=NULL)if(p->data=m)q=p->next; /臨時(shí)保存p的下一個(gè)節(jié)點(diǎn)地址 p->next=newNode;newNode->next=q;break;p=p->next;/值為m的節(jié)點(diǎn)數(shù)據(jù)域修改為nint update(NODE *head,int m,int n)NODE *p;p=head;while(p!=NULL)if(p->da
7、ta=m)p->data=n;break;p=p->next;return 0;/打印整個(gè)鏈表int prtList(NODE *head)NODE *p;p=head;while(p!=NULL)printf("%d->",p->data);p=p->next;printf("n");return 0;/刪除數(shù)據(jù)域?yàn)閚的節(jié)點(diǎn)int del(NODE *head,int n)NODE *p,*q;p=head;while(p!=NULL)if(p->next->data=n)q=p->next;p->
8、next=p->next->next;free(q);/break;p=p->next;return 0;/交換兩個(gè)節(jié)點(diǎn)的數(shù)據(jù)域,此函數(shù)只在冒泡法排序時(shí)使用int swap(NODE *p,NODE *q)int t;t=p->data;p->data=q->data;q->data=t;return 0;/冒泡法排序int bubble(NODE *head)NODE *p,*q;q=head;while(q->next!=NULL) q=q->next;/遍歷至末尾,使得q為尾節(jié)點(diǎn) while(q!=head)p=head;/下面循環(huán)循
9、環(huán)至倒數(shù)第3個(gè)節(jié)點(diǎn)時(shí), /p再賦值為倒數(shù)第2個(gè)節(jié)點(diǎn),這時(shí),不能再進(jìn)入循環(huán) /目的是下面的q可以取到此p值while(p->next!=q)if(p->data>p->next->data) swap(p,p->next); p=p->next;if(p->data>p->next->data) swap(p,p->next);/執(zhí)行余下的最后一次比較 q=p; /q指向的節(jié)點(diǎn)前移一個(gè)位置。int main(int argc, char *argv)int i;int t;NODE *first,*last,*p,*q;p=
10、(NODE*)malloc(sizeof(NODE);p->data=10;p->next=NULL;first=p;last=p;for(i=5;i>=2;i-)p=(NODE*)malloc(sizeof(NODE);p->data=i;p->next=NULL;last->next=p;last=p;prtList(first);insert(first,10,1000);prtList(first);bubble(first);prtList(first);getchar(); return 0;文件操作文件操作基本步驟l 定義FILE指針變量l f
11、openl fread/fwritel fclose讀寫(xiě)函數(shù)語(yǔ)法int fwrite(char * buf, unsigned size, unsigned n, FILE *fp);int fread(char *buf, unsigned size, unsigned n, FILE *fp);buf:要寫(xiě)入數(shù)據(jù)所在的地址/讀出數(shù)據(jù)要保存的位置size:每次讀寫(xiě)的字節(jié)數(shù)n: 讀寫(xiě)總次數(shù)fp:操作的文件FILE指針程序示例3:簡(jiǎn)單數(shù)據(jù)讀寫(xiě)#include<stdio.h>int main()FILE *fp;int a5=0,1,2,3,4;int b5;int i;fp=fop
12、en("c:law.dat","w");for(i=0;i<=4;i+)fwrite(&ai,4,1,fp);fclose(fp);fp=fopen("c:law.dat","rb");i=0;while(!feof(fp)fread(&bi,4,1,fp);i+;fclose(fp);for(i=0;i<=4;i+)printf("%dn",bi);getchar();return 0;程序示例4:結(jié)構(gòu)體數(shù)據(jù)讀寫(xiě)#include<stdio.h>int
13、main()FILE *fp;struct stuint sno;char sname10;int age;int wgt;struct stu *s1, *s2, *s3, *s4;s1=(struct stu*)malloc(sizeof(struct stu);s2=(struct stu*)malloc(sizeof(struct stu);s3=(struct stu*)malloc(sizeof(struct stu);s4=(struct stu*)malloc(sizeof(struct stu);s1->sno=1;strcpy(s1->sname,"l
14、aw");s1->age=30;s1->wgt=80;s2->sno=2;strcpy(s2->sname,"tian");s2->age=15;s2->wgt=50;fp=fopen("c:law.dat","w");fwrite(s1,sizeof(struct stu),1,fp);fwrite(s2,sizeof(struct stu),1,fp);fclose(fp);fp=fopen("c:law.dat","rb");fread(s3,
15、sizeof(struct stu),1,fp);fread(s4,sizeof(struct stu),1,fp);fclose(fp);printf("%d,%s,%d,%dn",s3->sno,s3->sname,s3->age,s3->wgt);printf("%d,%s,%d,%dn",s4->sno,s4->sname,s4->age,s4->wgt);getchar();return 0;程序示例5:文件拷貝代碼/說(shuō)明:此段代碼與本實(shí)訓(xùn)無(wú)關(guān)。#include<stdio.h>int
16、 main(int argc, char *args) FILE *fp1; FILE *fp2; int a; fp1=fopen(args1,"rb"); fp2=fopen(args2,"wb"); while(!feof(fp1) fread(&a,2,1,fp1); fwrite(&a,2,1,fp2); fclose(fp1); fclose(fp2); return 0;程序示例6:對(duì)文件添加新數(shù)據(jù)#include<stdio.h>int main()FILE *fp;struct stuint sno;char
17、 sname10;int age;int wgt;struct stu *s1, *s2, *s;s1=(struct stu*)malloc(sizeof(struct stu);s2=(struct stu*)malloc(sizeof(struct stu);s=(struct stu*)malloc(sizeof(struct stu);s1->sno=3;strcpy(s1->sname,"胡小濤");s1->age=60;s1->wgt=70;s2->sno=4;strcpy(s2->sname,"溫小寶"
18、);s2->age=63;s2->wgt=65;fp=fopen("e:law.dat","ab");fwrite(s1,sizeof(struct stu),1,fp);fwrite(s2,sizeof(struct stu),1,fp);fclose(fp);/與程序4相比,以下改為使用循環(huán)顯示數(shù)據(jù)fp=fopen("e:law.dat","rb");fread(s,sizeof(struct stu),1,fp);while(!feof(fp)printf("%d,%s,%d,%dn&q
19、uot;,s->sno,s->sname,s->age,s->wgt);fread(s,sizeof(struct stu),1,fp);fclose(fp);getchar();return 0;程序示例7:查找/以下新加行是與程序6對(duì)比 #include<stdio.h>int main()int sn; /新加行 FILE *fp;struct stuint sno;char sname10;int age;int wgt;/struct stu *s1, *s2, *s;struct stu *s; /新加行 /s1=(struct stu*)mal
20、loc(sizeof(struct stu);/s2=(struct stu*)malloc(sizeof(struct stu);s=(struct stu*)malloc(sizeof(struct stu);/*注釋掉*/s1->sno=3;strcpy(s1->sname,"胡小濤");s1->age=60;s1->wgt=70;s2->sno=4;strcpy(s2->sname,"溫小寶");s2->age=63;s2->wgt=65;fp=fopen("e:law.dat"
21、,"ab");fwrite(s1,sizeof(struct stu),1,fp);fwrite(s2,sizeof(struct stu),1,fp);fclose(fp);/*注釋掉*/fp=fopen("e:law.dat","rb");fread(s,sizeof(struct stu),1,fp); printf("輸入要查詢(xún)的號(hào)碼:n"); /新加行 fflush(stdin); /新加行 scanf("%d",&sn); /新加行 while(!feof(fp)if(sn=
22、s->sno) /新加行 printf("%d,%s,%d,%dn",s->sno,s->sname,s->age,s->wgt);/如果查找的sno不重復(fù),此處可以加上break,跳出循環(huán)fread(s,sizeof(struct stu),1,fp);fclose(fp);getchar();return 0;程序示例8:修改文件指定數(shù)據(jù)注意事項(xiàng):l 打開(kāi)文件時(shí),用rb+選項(xiàng)l 使用程序7的方法查找指定數(shù)據(jù)。l 找到數(shù)據(jù)后,使用fseek()函數(shù),回退讀寫(xiě)指針至需要修改的數(shù)據(jù)位置之前fseek語(yǔ)法:fseek(fp,-sizeof(int)
23、*2,SEEK_CUR);² SEEK_SET 或0: 文件開(kāi)頭² SEEK_CUR 或1 :文件當(dāng)前位置² SEEK_END 或2: 文件結(jié)尾² 第二個(gè)參數(shù)為正數(shù)則正向移動(dòng),負(fù)數(shù)則反向移動(dòng)l 使用fwrite()函數(shù)修改數(shù)據(jù)#include<stdio.h>int main()int sn,sa; FILE *fp;struct stuint sno;char sname10;int age;int wgt;/struct stu *s1, *s2, *s;struct stu *s; /s1=(struct stu*)malloc(siz
24、eof(struct stu);/s2=(struct stu*)malloc(sizeof(struct stu);s=(struct stu*)malloc(sizeof(struct stu);/*s1->sno=3;strcpy(s1->sname,"胡小濤");s1->age=60;s1->wgt=70;s2->sno=4;strcpy(s2->sname,"溫小寶");s2->age=63;s2->wgt=65;fp=fopen("e:law.dat","ab");fwrite(s1,sizeof(struct stu),1,fp);fwrite(s2,sizeof(struct stu),1,fp);fclose(fp);*/修改之前的數(shù)據(jù) fp=fopen("e:law.dat",
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《網(wǎng)店色彩設(shè)計(jì)》課件
- 《神經(jīng)癥年制》課件
- 《證券上市》課件
- 2024年農(nóng)業(yè)部門(mén)抗旱工作總結(jié)范文
- 2025年高考數(shù)學(xué)一輪復(fù)習(xí)之冪函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)
- 單位管理制度匯編大全人力資源管理
- 單位管理制度合并匯編【人事管理】
- 單位管理制度分享合集人員管理十篇
- 單位管理制度范例匯編人事管理
- 單位管理制度呈現(xiàn)大全人事管理十篇
- 期末模擬卷 2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)上冊(cè)(含答案)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 《比特幣完整介紹》課件
- 江蘇省2023年生物小高考試題含答案解析
- 2019年同等學(xué)力(教育學(xué))真題精選
- [轉(zhuǎn)載]鄭桂華《安塞腰鼓》教學(xué)實(shí)錄
- 泵管清洗專(zhuān)項(xiàng)方案
- 門(mén)診手術(shù)室上墻職責(zé)、制度(共6頁(yè))
- 邊坡土壓力計(jì)算(主動(dòng)土壓力法)
- 鉆孔壓水試驗(yàn)計(jì)算EXCEL表格
- 機(jī)電安裝項(xiàng)目施工組織計(jì)劃方案
評(píng)論
0/150
提交評(píng)論