結構體程序設計PPT學習教案_第1頁
結構體程序設計PPT學習教案_第2頁
結構體程序設計PPT學習教案_第3頁
結構體程序設計PPT學習教案_第4頁
結構體程序設計PPT學習教案_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、會計學1結構體程序設計結構體程序設計學號姓名性別成績9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfengM88第1頁/共52頁第2頁/共52頁第3頁/共52頁#includeint main()printf(Name: %sn,);printf(Score: %dn,stu.score);return 0;第4頁/共52頁第5頁/共52頁學號學號姓名姓名性別性別成績成績9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfe

2、ngM88第6頁/共52頁第7頁/共52頁第8頁/共52頁第9頁/共52頁出第1個學生的信息。#includeint main()printf(Data1: ); scanf(%d %s %c %d,&stu1.num,,&stu1.sex,&stu1.score); printf(Data2: );scanf(%d %s %c %d,&stu2.num,,&stu2.sex,&stu2.score);if(stu1.score=stu2.score)printf(%s,%dn,,stu1.score);elseprintf(%s,%dn,

3、,stu2.score); return 0;第10頁/共52頁stu.num9901intstu .nameliujiacharstu.sexMcharstu.score87int第11頁/共52頁第12頁/共52頁:student第13頁/共52頁第14頁/共52頁第15頁/共52頁/* program e8-3.c */#include#define N 5 struct studentint num;char name20;char sex;int score;int main() struct student stuN; int i,count_m=0,count_

4、f=0; printf(Input Data:n); for(i=0;iN;i+) scanf(%d %s %c %d,&stui.num,,&stui.sex,&stui.score); printf(Result:n); for(i=0;i85) printf( %s,%dn,,stui.score); if(stui.sex=M|stui.sex=m) count_m+; else count_f+; printf(Boys=%d,Girls=%dn,count_m,count_f); return 0; 第16頁/共52頁第17頁/共52頁第18頁/

5、共52頁q infoq infon成員引用std1.num與p-num等價info1.num與q1-num等價第19頁/共52頁int main()struct student stu,*p;p=&stu; p-num=9911;strcpy(p-name,changjiang); p-sex=F;p-score=91;printf(Num: %dnName: %sn,p-num,p-name);printf(Sex: %cnScore:%dn,p-sex,p-score); return 0; 結構體指針用法示例。結構體指針用法示例。/* program e8-4.c */#include#

6、includestruct studentint num;char name20;char sex;int score;第20頁/共52頁#include#includestruct studentint num;char name20;char sex;int score;stu3=9913,xiaoli,F,81,9914,zhanghua,M,82,9915,wangjun,F,88;int main()struct student *p;printf(%d%20s%3c%4dn, 第21頁/共52頁int main() void output(struct sudent *,int);

7、 output(stu,N); return 0;void output(struct student *p,int n) int i; for(i=0;inum,p-name,p-sex,p-score); return; /* program e8-6.c */#include#include#define N 3struct student int num; char name20; char sex; int score;stuN=9913,xiaoli,F,81,9914,zhanghua,M,82,9915,wangjun,F,88;第22頁/共52頁第23頁/共52頁學號姓名性別

8、成績9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfengM88用calloc()申請一段內存M,并把它分成兩部分:一部分存儲數(shù)據(jù);另一部分存儲下一個內存段的地址。將一個學生數(shù)據(jù)存儲在M的數(shù)據(jù)區(qū)中。若當前是第一個數(shù)據(jù),則將M的首地址保存在指針變量head中;否則將M的首地保存在上一個內存段中。重復、的過程,直到所有數(shù)據(jù)存儲完畢,在最后一段內存的地址區(qū)存儲結束標志。 第24頁/共52頁第25頁/共52頁第26頁/共52頁第27頁/共52頁 第28頁/共52頁存儲具體存儲具體數(shù)據(jù)數(shù)據(jù)存儲下一個節(jié)存儲下一個節(jié)點的地址點的

9、地址ustruct node類型的結點形成的鏈表類型的結點形成的鏈表 頭指針頭指針空指針空指針第29頁/共52頁學號學號姓名姓名性別性別成績成績9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfengM88struct studentint num; char name20; char sex; int score; struct student *next; ;必須的成員,必須的成員,否則構不成鏈否則構不成鏈表表第30頁/共52頁第31頁/共52頁第32頁/共52頁 為p結點填充數(shù)據(jù)。將要存儲的數(shù)據(jù)對應賦值給p結點

10、數(shù)據(jù)域的各個成員。 修改有關指針的指向。 將new的next成員置空,使new結點成為鏈表的最后一個結點。 將head指向new結點。第33頁/共52頁new-next=p-next;。p-next=new;第34頁/共52頁struct student *insert(struct node *head,struct node *p,int x)struct node *new; new=(struct node *)calloc(1,sizeof(struct node); new-data=x; if(head=NULL)head=new;head-next=NULL;else new-

11、next=p-next;p-next=new;return(head);第35頁/共52頁程序程序: e8-7.cl所需函數(shù)的功能creat_node()函數(shù):生成一個鏈表結點。creat_list()函數(shù):生成有n個struct s_node型結點的鏈表,函數(shù)的返回值是鏈表的頭指針。out_list()函數(shù):用于輸出head鏈表的各結點值。第36頁/共52頁#include#define N 10struct s_node /* 定義結點類型 */char num4; int score; struct s_node *next;int main()struct s_node *create

12、_node(void);struct s_node *create_list(int n); void out_list(struct s_node *head);struct s_node *head=NULL; head=create_list(N); out_list(head); return 0;第37頁/共52頁/* 生成一個鏈表結點的函數(shù)*/struct s_node *create_node(void)struct s_node *p;p=(struct s_node *)calloc(1,sizeof(struct s_node); scanf(%s%d,p-num,&(p-

13、score);p-next=NULL; return(p); 第38頁/共52頁struct s_node *create_list(int n)struct s_node *new,*p;struct s_node *head; int i;if(n=1)new=create_node(); head=new; p=new; for(i=2;inext=new;p=new;if(n=1)return(head);elsereturn(NULL);建立含有n個結點的鏈表的函數(shù)第39頁/共52頁/* 輸出head鏈表中所有結點的函數(shù) */void out_list(struct s_node *

14、head)struct s_node *p;if(head!=NULL)p=head;while(p!=NULL)printf(%s %dn,p-num,p-score);p=p-next; 第40頁/共52頁n 刪除刪除p結點時指針變化情況結點時指針變化情況 n 刪除刪除p結點后的結點后的head鏈表鏈表 第41頁/共52頁l刪除結點步驟刪除結點步驟 /* delete()函數(shù)函數(shù) */struct node *delete(struct node *head,struct node *p)struct node *q;if(p=NULL) return(head);if(p=head)he

15、ad= head-next; else q=head;while(q-next!=p)q=q-next;q-next=p-next; free(p); return(head);第42頁/共52頁第43頁/共52頁l查找函數(shù)find()struct node *find(struct node *head,int m) struct node *p=head; while(p!=NULL&p-data!=m) p=p-next; if(p=NULL) return(NULL) else return(p);第44頁/共52頁程序程序e8-8.c u分析該問題的關鍵點有兩點:查找data等于x的

16、結點p;刪除p結點。第45頁/共52頁第46頁/共52頁u1問題分析與算法設計問題分析與算法設計 設計數(shù)據(jù)結構存儲字母加設計數(shù)據(jù)結構存儲字母加密對照表。密對照表。 struct table char input; char output; ; 定義定義struct table型數(shù)組用于存儲密碼表。型數(shù)組用于存儲密碼表。 輸入一個字符串,在密碼表的輸入一個字符串,在密碼表的input成員中查找每一個輸入的字符,查找成成員中查找每一個輸入的字符,查找成功后使用對應的功后使用對應的output成員加密輸出,否則,原樣輸出源字符。成員加密輸出,否則,原樣輸出源字符。#include#includest

17、ruct tablestruct table char input; /char input; /* * 存儲輸入的源字符存儲輸入的源字符 * */ /char output; /char output; /* * 存儲加密后的字符存儲加密后的字符 * */ /; ;int main( )int main( ) char ch;char ch;int length,i;int length,i;struct table encrypt10= struct table encrypt10= a a,f f,b b, , g g,ww,d d,f f,9 9,v v,* *,x x,s s,mm,3 3, , h h,k k,p p,t t,u u,? ? ; ; while(ch=getchar()!=n)while(ch=getchar()!=n) for(i=0;encrypt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論