C语言程序设计 高等教育应用型本科计算机类课程规划教材 江义火 PPT讲稿第9章 自定义数据类型.pptVIP

C语言程序设计 高等教育应用型本科计算机类课程规划教材 江义火 PPT讲稿第9章 自定义数据类型.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.5.3 共用体成员的引用 定义共用体变量后,便可引用共用体的成员。引用格式是: 共用体变量名.成员名 在引用共用体成员时,要注意以下几点: (1)共用体的成员共用一段存储单元,每一次该存储单元中只能存放一个成员值。起作用的共用体变量成员是最后一次被引用的那个成员。一个共用体变量不能被整体引用,而只能运用上述引用格式引用共用体的成员。例如以下的引用方式是正确的: un1.c=’M’; /*引用共用体un1中的成员c */ un1.i=10; /*引用共用体un1中的成员i */ un1.f=12.5; /*引用共用体un1中的成员f */ * 当以上三个表达式同时出现时,起作用的成员是最后一次被引用的成员(即un1.f),而其他两个成员值均不再存在。在程序中,不能使用诸如:printf(%f,un1);的语句,对共用体变量un1整体引用的情况,否则程序将报错。 (2)正是因为共用体共用一段存储单元的原因,所以共用体变量和各成员具有相同的起始地址。例如:un1、un1.c、un1.i、un1.f四者的值是相同的。 (3)不能对共用体变量赋值和初始化。如做法: union example { char c; int i; float f; }un1={a,7,1.2},un2; /*错误:不能对un1其初始化*/ un2=7; /*错误:不能对共用体变量整体赋值*/ 其中:对un1初始化是错误;对un2整体赋值也是错误的。 (4)不能将共用体变量作为一个参数或返回值在函数中传递。 * 例9.14 处理一组学生信息。学生信息包括:年级、姓名、3门课程分数、总分和平均分。如果年级为1,那么输出其学生分数的总分;如果年级为2,则输出学生的平均分。为了简化该问题,在这里只列举两个学生的信息。 /*源程序文件名:AL9_14.c */ #include stdio.h struct student { int grade; char name[10]; int score[3]; union data { int sum; float average; }d; }stu[2]; * void main() { int i,j; int s1=0,s2=0; for(i=0;i2;i++) { printf(请输入第%d的学生信息\n,i+1); printf(年级: ); scanf(%d,stu[i].grade); printf(姓名:); scanf(%s,stu[i].name); for(j=0;j3;j++) { printf(分数%d:,j+1); scanf(%d,stu[i].score[j]); } * if(stu[i].grade==1) { for(j=0;j3;j++) { s1+=stu[i].score[j]; } stu[i].d.sum=s1; } if(stu[i].grade==2) { for(j=0;j3;j++) { s2+=stu[i].score[j]; } stu[i].d.average=(float)s2/3; } } printf(\n); * for(i=0;i2;i++) { if(stu[i].grade==1) { printf(年级:%-5d,stu[i].grade); printf(姓名:%-8s,stu[i].name); printf(总分:%-5d\n,stu[i].d.sum); } else if(stu[i].grade==2) { printf(年级:%-5d,stu[i].grade); printf(姓名:%-8s,stu[i].name); printf(平均分:%-5.1f\n,stu[i].d.average); } } } * 程序运行情况如下: 请输入第1个学生信息 年级:1↙ 姓名:liugang↙ 分数1:78↙ 分数2:86↙ 分数3:90↙ 请输入第2个学生信息 年级:2↙

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档