




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
自動化學(xué)院朱勝利2010年編程實(shí)現(xiàn)理論部分1一.編程環(huán)境VisualC++6.0使用語言:C語言創(chuàng)建控制臺程序:File/New/Win32consoleApplication,location:選擇工程地址,ProjectName:填寫工程名,OK!選AnEmptyProject,Finish!OK!File/New/C++SourceFile,File處填寫源文件名,OK!2二.我們的任務(wù)編寫控制臺程序,將班級學(xué)生信息通過創(chuàng)建鏈表保存,可以添加、刪除、查找某一學(xué)生的信息,顯示所有學(xué)生的信息,信息保存到文件中,從文件中讀出信息。3三.理論部分?jǐn)?shù)據(jù)的輸入輸出
一個(gè)字符:getchar():從終端(鍵盤)輸入一個(gè)字符;putchar():在屏幕顯示字符的值;多個(gè)字符:scanf():輸入多個(gè)數(shù)據(jù);printf()
:在屏幕顯示多個(gè)數(shù)據(jù);41.主函數(shù)的實(shí)現(xiàn)文件頭部添加:#include<stdio.h>#include<stdlib.h>#include<string.h>三個(gè)技巧
printf、scanf、switch語句、while語句。工程One;5變量與地址程序中:inti;
floatk;
內(nèi)存中每個(gè)字節(jié)有一個(gè)編號-----地址…...…..2000200120022004內(nèi)存02003ik6…...…...2000200420062005整型變量i10變量pf2001200220032000指針變量變量的內(nèi)容程序:inti=10;intk=900;int*pf;pf=&i;printf("%d\n",*pf);pf=&k;printf("%d\n",pf);
900指針:一個(gè)變量的地址。指針變量:專門存放變量地址的變量。
指針7
指針是分?jǐn)?shù)據(jù)類型的;
指針即地址,前加*是地址所存放的值;
給指針賦地址:int*p;p=&a;
指針是先賦值,后使用;指針使用注意事項(xiàng)8main(){inti=10;int*p;*p=i;printf(“%d”,*p);}危險(xiǎn)!main(){inti=10;int*p;p=&i;printf("%d\n",*p);}指針變量必須先賦值,再使用9結(jié)構(gòu)體結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型用途:把不同類型的數(shù)據(jù)組合成一個(gè)整體(自定義數(shù)據(jù)類型)struct[結(jié)構(gòu)體名]{
類型標(biāo)識符成員名;類型標(biāo)識符成員名;
…………….};成員類型可以是基本型或構(gòu)造型struct是關(guān)鍵字,不能省略合法標(biāo)識符可省:無名結(jié)構(gòu)體10例struct
student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};namenumsexagescoreaddr2字節(jié)2字節(jié)20字節(jié)1字節(jié)4字節(jié)30字節(jié)……..結(jié)構(gòu)體類型定義描述結(jié)構(gòu)的組織形式,不分配內(nèi)存結(jié)構(gòu)體類型的定義11結(jié)構(gòu)體變量的定義例struct
student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};studentst1,st2;12structstudent{intnum;charname[20];charsex;intage;charaddr[30];};structstudentstu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};結(jié)構(gòu)體變量的初始化13 structstudent { intnum; charname[20]; }; structstudentstu; stu.num=109; strcpy(,"LinNing"); printf("num=%d\tname=%s\n",stu.num,);結(jié)構(gòu)體變量的賦值14structnode{intno;charname[8];floateng,phy,math,ave;node*next;};由若干同類型結(jié)點(diǎn)用指針鏈接而成的數(shù)據(jù)結(jié)構(gòu)。鏈表由表頭、結(jié)點(diǎn)與鏈尾三部組成。鏈表的概念15建立鏈表:能夠指定鏈表的節(jié)點(diǎn)的個(gè)數(shù),用malloc開辟一塊內(nèi)存,scanf輸入節(jié)點(diǎn)內(nèi)容,將鏈表連接起來,返回head指針。a138**Next2000b133**Next20102000headb133**NULL2020鏈表的基本操作16a138**Next2000P2->next=20102000b133**NextP120102000headheada138**NextP2P12000a138**NextP2=P12000b133**NextP120102000headP21718
顯示鏈表a138**NextP=head2000b133**Next20102000headb135**Next2020a138**NextP=P->next2000b133**Next20102000headb135**Next2020a138**NextP=P->next2000b133**Next20102000headb135**Next202019voidprint(student*head){ student*p; p=head; printf("輸出所有學(xué)生信息:\n");
? { printf("姓名:%s電話:%d\n",p->name,p->age); p=p->next; }}20刪除一個(gè)節(jié)點(diǎn)a138**Next2000b133**Next20102000headb135**Next2020
輸入一個(gè)學(xué)生姓名(?),根據(jù)姓名在鏈表中找,找到刪除之。
inta=strcmp(p1->name,name)
刪除頭節(jié)點(diǎn)、尾節(jié)點(diǎn)、中間節(jié)點(diǎn)。
定義兩個(gè)輔助工具,student指針:P1,P2.21a138**Next2000b133**Next20102000headb135**Next2020a138**Next2000b133**Next20102000headb135**Next2020P1=headHead=P1->next
刪除頭節(jié)點(diǎn)a138**Next2000b133**Next20102000headb135**Next2020P1=head
刪除尾節(jié)點(diǎn)P1=P1->nextP2=P1P2->next=NULLFree(P1)22a138**Next2000b133**Next20102000headb135**Next2020P1=head
刪除中間節(jié)點(diǎn)P1=P1->nextP2=P1P2->next=P1->nextFree(P1)a138**Next2000b133**Next20102000headb135**Next2020P1=head23structstudent*del(structstudent*head){ structstudent*p1,*p2; charname[30]; p1=head; while((strcmp(p1->name,name)!=0)&&(p1->next!=NULL)) {p2=p1; p1=p1->next;} if(strcmp(p1->name,name)==0)//找到了! { if(p1==head)//是頭節(jié)點(diǎn) {?;free(p1);} elseif(p1->next==NULL)//是尾節(jié)點(diǎn) {?; free(p1);} else {p2->next=p1->next;free(p1);} } returnhead;}24文件的操作文件概述件的打開和關(guān)閉文件的讀寫文件的定位25文件(File)C語言中的文件C語言把文件看作一個(gè)字節(jié)的序列C語言對文件的存取是以字節(jié)為單位的文本文件(ASCII文件)按數(shù)據(jù)的ASCII形式存儲二進(jìn)制文件按數(shù)據(jù)在內(nèi)存中的二進(jìn)制形式存儲26文件類型指針FILE類型保存被使用的文件的有關(guān)信息所有的文件操作都需要FILE類型的指針舉例FILE*fp;27文件的打開(fopen函數(shù))函數(shù)原型FILE*fopen(char*filename, char*mode);參數(shù)說明filename:要打開的文件路徑mode:打開模式返回值若成功,返回指向被打開文件的指針若出錯,返回空指針NULL(0)28文件的打開模式打開模式描述r只讀,打開已有文件,不能寫w只寫,創(chuàng)建或打開,覆蓋已有文件a追加,創(chuàng)建或打開,在已有文件末尾追加r+讀寫,打開已有文件w+讀寫,創(chuàng)建或打開,覆蓋已有文件a+讀寫,創(chuàng)建或打開,在已有文件末尾追加t按文本方式打開(缺省)b按二進(jìn)制方式打開29文件的打開舉例 FILE*fp;
if((fp=fopen("11.txt","wb"))==NULL) { printf("cannotopenfile\n"); }
30文件的關(guān)閉(fclose函數(shù))函數(shù)原型intfclose(FILE*fp);參數(shù)說明fp:要關(guān)閉的文件指針返回值若成功,返回0若出錯,返回EOF(-1)不用的文件應(yīng)關(guān)閉,防止數(shù)據(jù)破壞丟失31文件的關(guān)閉舉例FILE*fp;charfile[]="D:\\USER\\STUDENTS.DAT";if(!(fp=fopen(file,"rb+"))){printf("Openfile%serror!\n",file);exit(0);}......fclose(fp);32feof函數(shù)函數(shù)原型intfeof(FILE*fp);參數(shù)fp:文件指針返回值若文件結(jié)束,返回非零值若文件尚未結(jié)束,返回033文件的讀寫輸出數(shù)據(jù)塊
fwrite(void*buffer,size,count,FILE*fp);輸入數(shù)據(jù)塊
Fread(void*buffer,size,count,FILE*fp);
34fwrite和fread函數(shù)舉例FILE*fp;inti;structstuds[NUM];fp=fopen("students.dat","rb+");for(i=0;i<NUM;i++)fwrite(s+i,sizeof(structstud),1,fp);for(i=0;i<NUM;i++)fread(s+i,sizeof(structstud),1,fp);fclose(fp);35voidsave(structstu*head){ FILE*fp; structstudent*p; if((fp=fopen("11.txt","w"))==NULL) { printf("cannotopenfile\n"); exit(1); } p=head; while(p!=NULL) { fwrite(p,sizeof(structstudent),1,fp); p=p->next; } fclose(fp);}36文件的定位文件位置指針位置指針指向當(dāng)前讀寫的位
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力外包招聘合同范本
- 2025年德州年貨運(yùn)從業(yè)資格證考試題庫
- 勞動合同范本 股權(quán)
- 企業(yè)借貸合同質(zhì)押合同范本
- 代理分紅合同范本
- 買門頭房合同范本
- 動遷協(xié)議合同范本
- 東莞擺攤餐飲轉(zhuǎn)讓合同范本
- 任意拆解合同范本
- 制作車輛抵押合同范本
- 遼寧省大連市2023-2024學(xué)年八年級下學(xué)期第一次月考語文試題(含答案解析)
- DataOps 實(shí)踐指南 2.0白皮書
- 供電所班組建設(shè)方案
- 委托處置不良資產(chǎn)協(xié)議(三篇)
- 胎膜早破的診斷與處理指南
- 新時(shí)代勞動教育教程(中職版勞動教育)全套教學(xué)課件
- 2024年02月國家鐵路局事業(yè)單位招考聘用27人筆試歷年(2016-2023年)真題薈萃帶答案解析
- 廚房用電安全知識
- 承德承德縣2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)綜合檢測卷(含答案)
- 人教鄂教版小學(xué)科學(xué)三年級下冊全冊教案教學(xué)設(shè)計(jì)
- 2024年湖南鐵道職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
評論
0/150
提交評論