结构体程序设计PPT学习教案_第1页
结构体程序设计PPT学习教案_第2页
结构体程序设计PPT学习教案_第3页
结构体程序设计PPT学习教案_第4页
结构体程序设计PPT学习教案_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,并把它分成两部分:一部分存储数据;另一部分存储下一个内存段的地址。将一个学生数据存储在M的数据区中。若当前是第一个数据,则将M的首地址保存在指针变量head中;否则将M的首地保存在上一个内存段中。重复、的过程,直到所有数据存储完毕,在最后一段内存的地址区存储结束标志。 第24页/共52页第25页/共52页第26页/共52页第27页/共52页 第28页/共52页存储具体存储具体数据数据存储下一个节存储下一个节点的地址点的

9、地址ustruct node类型的结点形成的链表类型的结点形成的链表 头指针头指针空指针空指针第29页/共52页学号学号姓名姓名性别性别成绩成绩9901liujiaM879902wangkaiM899903xiaohuaF819904zhangliF829905wangfengM88struct studentint num; char name20; char sex; int score; struct student *next; ;必须的成员,必须的成员,否则构不成链否则构不成链表表第30页/共52页第31页/共52页第32页/共52页 为p结点填充数据。将要存储的数据对应赋值给p结点

10、数据域的各个成员。 修改有关指针的指向。 将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所需函数的功能creat_node()函数:生成一个链表结点。creat_list()函数:生成有n个struct s_node型结点的链表,函数的返回值是链表的头指针。out_list()函数:用于输出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页/* 生成一个链表结点的函数*/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个结点的链表的函数第39页/共52页/* 输出head链表中所有结点的函数 */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()函数函数 */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查找函数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问题分析与算法设计问题分析与算法设计 设计数据结构存储字母加设计数据结构存储字母加密对照表。密对照表。 struct table char input; char output; ; 定义定义struct table型数组用于存储密码表。型数组用于存储密码表。 输入一个字符串,在密码表的输入一个字符串,在密码表的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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论