欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《高级语言程序设计教学课件》第9章.ppt

    • 资源ID:5904932       资源大小:343KB        全文页数:44页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《高级语言程序设计教学课件》第9章.ppt

    1,第九章 结构体,2,学习目标,结构体的概念结构体类型和结构体变量的差别运算符“.”和“-”结构体数组、结构体指针,3,9.1 结构体,问题:我们要处理一个学生的信息,包括:学号、姓名、性别、年龄、成绩、地址按照以往定义变量的方式,我们可以这样定义:,struct student int num;char name20;char sex;int age;float score;char addr50;,结构体,4,结构类型,【例】平面上点(x,y)的表示,struct point float x;float y;,关键字,结构体名,结构体成员,5,定义一个结构体的一般形式为:注意:1.结构体类型不分配空间,是一种数据类型;2.结构体成员的类型可以不同,struct 结构名 数据类型 成员1;数据类型 成员n;,6,struct student int num;char name20;char sex;int age;float score;char addr50;,结构体类型定义描述结构的组织形式,不分配内存,7,【例】定义点结构变量并保存平面点(4,3),struct point float x;float y;struct point point1;point1.x=4;point1.y=3;,8,定义结构体变量的三种形式,形式1:先定义类型,再定义变量,struct 结构名 数据类型 成员1;数据类型 成员n;struct 结构名 结构变量1,结构变量2;,struct point float x;float y;struct point point1,point2;,9,形式2:在定义类型时,定义变量,struct 结构名 数据类型 成员1;数据类型 成员 n;结构变量1,结构变量2;,struct point float x;float y;point1,point2;,10,形式3:无类型名的变量定义,注意第三种定义形式省略了结构名,在此定义语句后面无法再定义这个类型的其它结构变量,struct 数据类型 成员1;数据类型 成员 n;结构变量1,结构变量2;,struct float x;float y;point1,point2;,结构名,11,说明结构体类型与结构体变量概念不同类型:不分配内存 变量:分配内存类型:不能赋值、存取、运算 变量:可以结构体可嵌套结构体成员名与程序中变量名可同,不会混淆,例 struct date int month;int day;int year;struct student int num;char name20;struct date birthday;stu;,例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu;,例 main()struct student int num;char name20;stu;int num;num=0;stu.num=1;,12,【例9-1】结构变量初始化,#include main()struct student long int num;char name20;char addr20;a=89031,Li Lin,123 Beijing Road;printf(No.:%ldnname:%snaddress:%sn,a.num,a.name,a.addr);,初值表,13,初始化的一般形式,在定义结构变量的时候对其进行初始化;初始化表由 括起;逗号隔开的数据对应赋值给结构变量的每个成员,14,结构体变量的引用,引用规则结构体变量不能整体进行输入、输出、赋值、运算引用方式:结构体变量名.成员名可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用,struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;stu1.birthday.month=12;,15,【例】成员变量引用,struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;,stu1=101,“Wan Lin”,M,19,87.5,“DaLian”;printf(“%d,%s,%c,%d,%f,%sn”,stu1);if(stu1=stu2)stu1.name=“WangLin”;,stu1.num=101;strcpy(stu1.name,“Wang Lin”);stu1.sex=M;Stu1.age=19;stu1.score=87.5;strcpy(stu1.addr,“DaLian”;stu2=stu1;,16,【例】分别定义表示直线和矩形的结构体,struct point float x;float y;struct line struct point startp;struct point endp;,struct rect struct point pt1;struct point pt2;struct point pt3;struct point pt4;,17,常见编程错误,错例1,struct stu int no;char name10;float score;=1,“wangbin”,98;,错误分析:struct stu是结构类型,不占内存空间,不能对其赋值。,18,错例2,struct stu int no;char name10;float score;stu s;,错误分析:1)结构体类型定义之后“”后必须加“;”2)结构体类型名为struct stu,不是stu;申明变量应为:struct stu s;,19,错例3,struct stuint no;char name10;float score;struct stu s;scanf(“%d%s%f”,s);,错误分析:不能整体读入结构体变量值,应为 scanf(“%d%s%f”,20,错例4,struct stuint no;char name10;float score;struct stu s,*p;scanf(“%d%s%f”,错误分析:1)p是结构指针变量,使用之前应赋初值;2)p访问成员的方式应为p-no,p-name,p-score;3)p-name为数组名,读入一个字符串时,前面不能加“&”。,21,9.2 结构变量作为函数参数,【例9-2】平面上两点之间的距离,(x1,y1),(x2,y2),22,#include#include struct point float x;float y;float GetDis(struct point,struct point);,23,main()struct point pt1,pt2;printf(Please input pt1:);scanf(%f%f,24,定义计算两点之间距离的函数,float GetDis(struct point p1,struct point p2)return sqrt(p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y);,25,【例9-3】判断点是否在矩形内应包含以下功能:构造一个点;构造一个矩形;判断一个点是否在矩形内。每一个功能都用函数来实现,26,#include#include struct point float x;float y;struct rect struct point pt1;struct point pt2;struct point pt3;struct point pt4;struct point makepoint(float x,float y);void MakeRect(struct point pt1,struct point pt2,struct point pt3,struct point pt4,struct rect*screen);int PtInRect(struct point p,struct rect r);,27,main()struct point pt1=MakePoint(0,0);struct point pt2=MakePoint(50,0);struct point pt3=MakePoint(50,10);struct point pt4=MakePoint(0,10);struct rect screen;MakeRect(pt1,pt2,pt3,pt4,运行结果The middle point of the screen is(25.0,5.0)The middle point is in screen!Press any key to continue,28,struct point MakePoint(float x,float y)struct point temp;temp.x=x;temp.y=y;return temp;void MakeRect(struct point pt1,struct point pt2,struct point pt3,struct point pt4,struct rect*screen)(*screen).pt1=pt1;(*screen).pt2=pt2;(*screen).pt3=pt3;(*screen).pt4=pt4;,29,int PtInRect(struct point p,struct rect r),30,9.3 结构体数组,结构体数组的定义三种形式:,形式一:struct student int num;char name20;char sex;int age;struct student stu2;,形式二:struct student int num;char name20;char sex;int age;stu2;,形式三:struct int num;char name20;char sex;int age;stu2;,31,结构体数组初始化顺序初始化分行初始化,结构体数组引用引用方式:结构体数组名下标.成员名,顺序初始化:struct student int num;char name20;char sex;int age;struct student stu3=100,“Wang Lin”,M,20,101,“Li Gang”,M,19,110,“Liu Yan”,F,19;,32,【例9-7】计算学生的平均成绩和不及格的人数,#include#include struct stu int num;char*name;char sex;float score;boy5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58,;,33,main()int i,c=0;/循环控制变量、不及格人数 float ave,s=0;/平均成绩、总成绩 for(i=0;i5;i+)s+=boyi.score;if(boyi.score60)c+=1;printf(s=%fn,s);ave=s/5;printf(average=%fncount=%dn,ave,c);,运行结果:s=345.0average=69.0count=2Press any key to continue,34,【例9-5】编写候选人得票统计程序。设有3个候选人,10张选票,每次输入一个得票的候选人名字,统计每个候选人票数并输出,#include#include struct person char name20;int count;leader3=Li,0,Zhang,0,Wang,0;,35,main()char name20;printf(input 10 names:n);for(int i=1;i=10;i+)scanf(%s,name);for(int j=0;j3;j+)if(strcmp(name,leaderj.name)=0)leaderj.count+;printf(result:n);for(i=0;i3;i+)printf(%5s:%dn,leaderi.name,leaderi.count);,运行结果:input 10 names:LiLiLiZhangZhangZhangWangLiLiLiresult:Li:6Zhang:3 Wang:1Press any key to continue,36,9.4 结构体和指针,指向结构体变量的指针定义形式:struct 结构体名*结构体指针名;例:struct student*p;使用结构体指针变量引用成员形式结构指针使用前必须初始化,存放结构体变量在内存的起始地址,(*结构体指针名).成员名结构体指针名-成员名结构体变量名.成员名,struct student stu1;struct student*p=,37,【例9-6】设图书信息包括:书号、书名、售空标志、价格。写程序,输出某本图书信息。,#include#include struct booklong num;/书号char name20;/书名char marking;/售空标志float price;/价格,38,main()struct book boo_1,*p;p=,运行结果:书号:89101书名:math售空:T书价:30.000000书号:89101书名:math售空:T书价:30.000000书号:89101书名:math售空:T书价:30.000000Press any key to continue,39,指向结构数组的指针,【例9-7】设学生信息包括:学号、姓名、性别和成绩。写程序,初始化五个学生信息,然后将其输出,40,struct student int num;char*name;char sex;float score;stu5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58,;,41,main()struct student*p;printf(“No.Name Sex agen”);for(p=stu;pnum,p-name,p-sex,p-age);,42,9.5 结构指针作为函数参数,【例9-10】通过调用函输出某个学生的信息。设学生信息结构体类型有三个成员:学号、姓名和3门课成绩,#include#include struct studentint num;char name20;float score3;void Print(struct student*);,43,main()struct student stu;stu.num=1001;strcpy(stu.name,Li Hong);stu.score0=66;stu.score1=78;stu.score2=89;Print(,44,输出学生信息,void Print(struct student*pstu)printf(%dn%sn%.2fn%.2fn%.2fn,pstu-num,pstu-name,pstu-score0,pstu-score1,pstu-score2);,

    注意事项

    本文(《高级语言程序设计教学课件》第9章.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开