浙江大学C颜晖原版课件C9.ppt
《浙江大学C颜晖原版课件C9.ppt》由会员分享,可在线阅读,更多相关《浙江大学C颜晖原版课件C9.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学号姓名性别出生地出生年出生月出生日数学物理 程序设计学号姓名性别出生地年 月 日 数学 物理 程序设计出生日期国家 省 市/县学习成绩结构:同一个数据项的若干成分构成的一个整体。例如:学生档案,每个学生有学号、姓名、性别、出生地、出生年月、学业成绩等。9.1 结构9.1.1 结构的定义struct student long int num;char name20;float score;定义一个结构类型:struct student9.1.2 结构变量的定义1、先定义结构类型,再定义变量struct student long int num;char name20;float score;s
2、truct student stu1,stu2;num namescorestu1200011Zhang85stu2200012Li942、定义结构类型的同时定义变量struct student long int num;char name20;float score;stu1,stu2;3、不指定类型名,只定义变量struct long int num;char name20;float score;stu1,stu2;9.1.3 结构变量的初始化只有全局变量或静态变量才能初始化。static struct student stu2=200012,“Li”,94;num namescores
3、tu2200012Li94 num namescorestu1200011Zhang85struct student long num;char name20;float score;stu1=200011,Zhang,85;9.1.4 结构变量的使用1、结构类型变量的整体引用(1)不能整体输入输出,但相同类型的变量可以互相赋值 printf(%ld%s%f,stu1);非法 stu2=stu1;合法(2)可以引用结构体变量的地址 printf(%x,&stu1);输出stu1的首地址2、结构变量中分量的引用struct student long int num;char name20;flo
4、at score;stu1,stu2;(1)结构变量.分量 stu1.num=9901;printf(%s,stu2.name);num namescorestu1200011Zhang85stu2200012Li94(2)结构变量中的分量可以依据它的类型进行各种运算x=stu1.score;strcpy(stu1.name,“Wang”);(3)可以引用结构变量中的分量的地址 scanf(%ld,&stu1.num);9.2 结构数组一个结构变量只能存放一个学生的资料。若班上有20个学生,需要用结构数组。即,数组中的每个元素都是结构类型。9.2.1 定义 struct student lon
5、g int num;char name20;float score;stu20;stu0200011Zhang 85stu19200012Li90200029Zhao70stu19.2.2 初始化 struct student long int num;char name20;float score;stu20=200011,”Zhang”,85,200012,”Li”,90;stu0200011Zhang 85stu19200012Li90200029Zhao70stu19.2.3 引用 struct student long int num;char name20;float score;
6、stu20;stu0.numstu0.namestu0.scorestu0200011Zhang 85stu19200012Li90200029Zhao70stu1程序举例例1、输入某班30位学生的姓名及数学、英语成绩,计算并输出每位学生的平均分。struct student char name10;int math,eng;float aver;void main()struct student s30;int i;for(i=0;i30;i+)scanf(%s%d%d,si.name,&si.math,&si.eng);si.aver=(si.math+si.eng)/2.0 printf
7、(%s%f,si.name,si.aver);s0s29s1Zhang8085Li7790wang6078输入某班30位学生的姓名及数学、英语成绩,计算并输出每门课程的平均分。void main()struct student s30;int i;float aver_m=0,aver_e=0;例2 for(i=0;i30;i+)scanf(%s%d%d,si.name,&si.math,&si.eng);aver_m+=si.math;aver_e+=si.eng;printf(%f%f,aver_m/30,aver_e/30);输入30位学生的姓名及数学、英语成绩,输出平均分最高的学生的姓
8、名及其数学和英语成绩。struct student char name10;int math,eng;float aver;例3void main()struct student s30;int i,sub;for(i=0;i30;i+)scanf(%s%d%d,si.name,&si.math,&si.eng);si.aver=(si.math+si.eng)/2.0 sub=0;for(i=1;i ssub.aver)sub=k;printf(%s%d%dn,ssub.name,ssub.math,ssub.eng);9.3 结构指针9.3.1 定义struct student long
9、int num;char name20;float score;struct student stu1,*ptr;ptr=&stu1;num namescorestu1200011Zhang85ptr9.3.2 结构指针的使用struct student stu1,*ptr=&stu1;stu1.num=200011;stu1.score=85;strcpy(stu1.name,”Zhang”);通过指针 ptr 访问结构分量(1)*ptr (*ptr).num=200011;(*ptr).score=85;strcpy(*ptr).name,”Zhang”);num namescorestu
10、1200011Zhang85ptr(2)-(*ptr).num=200011;ptr-num=200011;ptr-score=85;strcpy(ptr-name,”Zhang”);当ptr=&stu1时stu1.num(*ptr).numptr-num 三者等价 num namescorestu1200011Zhang85ptrptr-num+等价于(ptr-num)+ptr-num 等价于+(ptr-num)(+ptr)-num num namescorestu1200011Zhang85ptr9.4 链表9.4.1结构的嵌套定义struct day int y;int m;int d;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江大学 原版 课件 C9
限制150内