结构体共用体和用户定义类型精选文档.ppt
《结构体共用体和用户定义类型精选文档.ppt》由会员分享,可在线阅读,更多相关《结构体共用体和用户定义类型精选文档.ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、结构体共用体和用户定义类型本讲稿第一页,共二十八页结构体类型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;ch
2、ar 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;赋
3、值时,依次给变量中的各个成员均赋值。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.下面结构体的定义语句中,错误的是()
4、。(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,%
5、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本讲稿第六页,共二十
6、八页结构体指针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*)&d
7、ata.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
8、”,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.pr
9、intf(“%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.设有以下定义和语句,以下引用形式不合法的是()stru
10、ct 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本讲稿
11、第十四页,共二十八页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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用 用户 定义 类型 精选 文档
限制150内