編程實(shí)習(xí)理論部分課件_第1頁
編程實(shí)習(xí)理論部分課件_第2頁
編程實(shí)習(xí)理論部分課件_第3頁
編程實(shí)習(xí)理論部分課件_第4頁
編程實(shí)習(xí)理論部分課件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論