欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    结构体共用体和用户定义类型精选文档.ppt

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

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

    结构体共用体和用户定义类型精选文档.ppt

    结构体共用体和用户定义类型本讲稿第一页,共二十八页结构体类型o结构体类型的定义形式:struct 结构体标识名 类型名1 结构体成员名表1;类型名2 结构体成员名表2;;struct date int year,month,day;struct student char name12;char sex;struct date birthday;float sc4;结构体类型占用字节数是成员项所占字节数的总和。本讲稿第二页,共二十八页结构体类型变量的定义、赋值、使用o结构体类型的变量的定义(3种形式)1.紧跟在结构体类型说明之后进行定义。struct student char name12;char sex;struct date birthday;float sc4;s1,s2;2.结构体类型名可以省略。3.先说明一个结构体类型,再单独进行变量定义。struct student char name12;char sex;struct date birthday;float sc4;struct student s1,s2;本讲稿第三页,共二十八页o结构体变量的赋值和使用 struct student char name12;char sex;struct date birthday;float sc4;s1=“Li Ming”,M,1962,5,10,88,76,85.5,90;赋值时,依次给变量中的各个成员均赋值。printf(“%s,%c,%d,%d,%d,%f,%f,%f,%f”,s1.name,s1.sx,s1.birthday.year,s1.birthday.month,s1.birthday.day,s1.sc0,s1.sc1,s1.sc2,s1.sc3);结构体变量的引用:结构体变量名.成员名例1.struct person int ID;char name12;p;请将scanf(%d,);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。(2009年9月二级C真题)&p.ID本讲稿第四页,共二十八页例2.下面结构体的定义语句中,错误的是()。(2009年9月二级C真题)A)struct ord int x;int y;int z;struct ord a;B)struct ord int x;int y;int z;struct ord a;C)struct ord int x;int y;int z;a;D)struct int x;int y;int z;a;例3有以下程序#include main()struct STU char name9;char sex;double score2;struct STU a=Zhao,m,85.0,90.0,b=Qian,f,95.0,92.0);b=a;printf(%s,%c,%2.0f,%2.0fn,b.name,b.sex,b.score0,b.score1);程序的运行结果是()。(2008年9月二级C真题)A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90 BD本讲稿第五页,共二十八页例4.以下程序的运行结果是()main()struct EXAMPLE struct int x;int y;in;int a;int b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d”,e.in.x,e.in.y);2,3本讲稿第六页,共二十八页结构体指针o结构体指针的定义 struct student*p,s;p=&s;p-name,p-sex;例1.若有以下说明语句:struct student int age;int num;std,*p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是()A.std.age B.p-age C.(*p).age D.*p.ageD本讲稿第七页,共二十八页例2.设有如下定义:struct sk int n;float x;data,*p;若要使p指向data中的n域,则正确的赋值语句是()A.p=&data.n B.*p=data.nC.p=(struct sk*)&data.n D.p=(struct sk*)data.nC本讲稿第八页,共二十八页结构体数组的定义、赋值、使用o结构体数组的定义(3种形式)1.紧跟在结构体类型说明之后进行定义。struct student char name12;char sex;struct date birthday;float sc4;s3;2.结构体类型名可以省略。本讲稿第九页,共二十八页3.先说明一个结构体类型,再单独进行变量定义。struct student char name12;char sex;struct date birthday;float sc4;struct student s12=“LiMing”,M,1962,5,10,88,76,85.5,90,“WangMei”,F,1980,5,3,42,51,23,56;o结构体数组的引用 s0.name,s0.sex,s0.birthday.month s1.name,s1.sex,s1.birthday.month本讲稿第十页,共二十八页o例1.根据下面的定义,能打印出字幕M的语句是()struct person char name9;int age;struct person class10=“John”,17,”Paul”,19,”Mary”,18,”adam”,16;A.printf(“%cn”,class3.name);B.printf(“%cn”,class3.name1);C.printf(“%cn”,class2.name1);D.printf(“%cn”,class2.name0);D本讲稿第十一页,共二十八页例1.已定义且初始化好结构体数组如上,计算平均成绩,并输出不及格学生的姓名。void main()int i;float ave,sum=0;printf(不及格学生有:n);for(i=0;i5;i+)sum+=si.score;if(si.scorenum B.p+C.(*p).num D.p=&stu.ageD本讲稿第十三页,共二十八页o例2.设有以下定义和语句,以下引用形式不合法的是()struct s int i1;struct s*i2,*i0;static struct a3=2,&a1,0,4,&a2,&a0,6,0,&a1,*ptr;ptr=a;A.ptr-i1+B.*ptr-i2 C.+ptr-i0 D.*ptr-i1例3.设有如下定义:struct REC int num;char flag;char adr20;rec10,*pr=rec;下面各输入语句中错误的是()A.scanf(“%s”,&rec.adr);B.scanf(“%d”,&(*pr).num);C.scanf(“%c”,&(pr-flag);D.scanf(“%c”,&rec1.flag);DA本讲稿第十四页,共二十八页o例4.以下程序的输出结果是()struct stu int x;int*y;*p;int dt4=10,20,30,40;struct stu a4=50,&da0,60,&dt1,70,&dat2,80,&dt3;main()p=a;printf(“%d,”,+p-x);printf(“%d,”(+p)-x);printf(“%dn”,+(*p-y);A.10,20,20 B.50,60,21 C.51,60,21 D.60,70,31C本讲稿第十五页,共二十八页o例5.以下程序用来按学生姓名查询其排名和平均成绩。查询可连续进行,直到输入0时结束。请填空。#define NUM 4struct studentint rank;char*name;float score;_ stu=3,”Tom”,89.3,4,”Mary”,78.2,1,”Jack”,95.1,2,”Jim”,90.6;main()char str10;int i;doscanf(“%s”,str);for(i=0;i=NUM)printf(“Not founen”);while(strcmp(str,”0”)!=0);struct studentstrcmp(str,stui.name)=0break;本讲稿第十六页,共二十八页o例6.设有3人的姓名和年龄存在结构数组中,以下程序输出3人中年龄居中者的姓名和年龄。请填空。static struct man char name20;int age;person=“li-ming”,18,”wang-hua”,19,”zhang-ping”,20;main()int i,j,max,min;max=min=person0.age;for(i=1;imax)_;else if(personi.agemin)_;for(i=0;i3;i+)if(personi.age!=max _ if(personi.age!=min)printf(“%s%sn”,personi.name,personi.age);break;max=personi.agemin=personi.age&本讲稿第十七页,共二十八页结构体普通变量做函数参数o结构体普通变量做实参时,形参也应是一个结构体变量,传递时将实参的值传递给形参,实参和形参占用不同的内存空间。例.以下程序的运行结果是()struct n int x;char c;void func(struct n);main()struct n a=10,x;func(a);printf(“%d,%c”,a.x,a.c);func(struct n b)b.x=20;b.c=y;10,x本讲稿第十八页,共二十八页结构体指针变量做实参o例1.以下程序的输出结果是()struct abcchar c;float v;void fun1(struct abc b)b.c=A;b.v=80.7;void fun2(struct abc*b)(*b).c=C;(*b).v=92.5;void main()struct abc a=B,98.5;fun1(a);printf(“%c,%4.1fn”,a.c,a.v);fun2(&a);printf(“%c,%4.1fn”,a.c,a.v);B,98.5C,92.5本讲稿第十九页,共二十八页o例2.有下列程序:struct Sint n;int a20;void f(struct S*p)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(p-aip-aj)t=p-ai;p-ai=p-aj;p-aj=t;main()int i;struct S s=10,2,3,l,6,8,7,5,4,10,9;f(&s);for(i=0;is.n;i+)printf(%d,s.ai);程序运行后的输出结果是()。(2007年4月二级C真题)A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,C)2,3,1,6,8,7,5,4,10,9,D)10,9,8,7,6,1,2,3,4,5,A本讲稿第二十页,共二十八页结构体数组做参数o结构体数组做实参,形参可以是结构体数组或者结构体指针变量。例1.函数stdave的功能是:计算N个学生M门课的平均分,请填空。#define M 5#define N 30struct student int num;char name10;float scoreM;float ave;void stdave(struct student s,int n)int i,j;float sum;for(i=0;in;i+)sum=_;for(j=0;jM;j+)sum=sum+_;_=sum/M;void main()struct student persN;stdave(pers,N);0persi.scorejpersi.ave本讲稿第二十一页,共二十八页o例2:有以下程序的输出结果是:struct STU char name10;int num;float TotalScore;void f(struct STU*p)struct STU s2=“SunDan”,20044,550,“Penghua”,20045,537,*q=s;+p;+q;*p=*q;main()struct STU s3=“YangSan”,20041,703,“LiSiGuo”,20042,580;f(s);printf(“%s%d%3.0fn”,s1.name,s1.num,s1.TotalScore);本讲稿第二十二页,共二十八页用typedef定义类型otypedef int INTEGER;otypedef float REAL;o声明一个新的类型名的方法是:(1)先按定义变量的方法写出定义体(如 int i;)(2)将变量名换成新类型名。(3)在最前面加typedef。(4)用新类型名去定义变量。例如:struct abc char c;float v;st;等价于:typedef struct abcchar c;float v;S;等价于:typedef structchar c;float v;S;struct abc s1;等价于 S s1;本讲稿第二十三页,共二十八页o例2.以下对结构体变量st的定义中,不正确的是()A.struct char c;int a;st;B.struct char c;int a;TT;struct TT st;C.typedef structchar c;int a;TT;TT st;D.#define TT struct TTchar c;int a;st;例3.设有以下说明语句:Typedef struct int n;char ch8;PER;则下面叙述中正确的是()A.PER是结构体变量名 B.PER是结构体类型名C.Typedef struct 是结构体类型 D.struct是结构体类型名BB本讲稿第二十四页,共二十八页o例3.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门 课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。#define N 8typedef structchar num10;double sN;double ave;STREC;void fun(STREC*a)void main()STREC s=“GA005”,85.5,76,69.5,85,91,72,64.5,87.5;int i;fun(&s);printf(“%s”,s.num);for(i=0;iN;i+)printf(“%4.1fn”,s.si);printf(“nave=%7.3fn”,s.ave);int i;double sum=0;for(i=0;isi;a-ave=sum/N;本讲稿第二十五页,共二十八页使用union定义共用体类型o形式:union 共用体名成员表列变量表列;例如:union dataint i;char ch;float f;union data a,b,c;共用体类型所占字节数等于最大成员所占字节数。例1.下面程序的运行结果是()typedef unionlong a2;int b4;char c8;TY;TY our;main()printf(“%d”,sizeof(our);本讲稿第二十六页,共二十八页o例2.以下程序的运行结果是()union pwint i;char ch2;a;main()a.ch0=13;a.ch1=0;printf(“%dn”,a.i);A.13 B.14 C.208 D.209例3.已知字符0的ASC码味十六进制的30,现有程序如下:main()union unsigned char c;unsigned int i4;z;z.i0=0 x39;z.i1=0 x36;printf(“%cn”,z.c);A.6 B.9 C.0 D.3AB本讲稿第二十七页,共二十八页链表形式:struct slistint data;struct slist*next;链表结构中结点的插入和删除。本讲稿第二十八页,共二十八页

    注意事项

    本文(结构体共用体和用户定义类型精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开