09 结构和联合.pptVIP

  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文档。上传文档
查看更多
2、联合变量的说明 联合变量的说明和结构变量的说明方式相同, 也有三种形式。即先定义,再说明、定义同时说明和直接说明。 以联合变量department为例,说明如下: union department { int grade; char office; }; union department a,b; /*说明a,b为department类型*/ 或者: union department { int grade; char office; }a,b; /*同时说明a,b为department类型*/ 或者: union { int grade; char office; }a,b /*直接说明a,b为department类型*/ 经说明后的a,b变量均为department类型。a,b变量的长度应等于 department 的成员中最长的长度, 即等于 office数组的长度,共10个字节。a,b变量如赋予整型值时,只使用了2个字节,而赋予字符数组时,可用10个字节。 对联合变量的赋值、使用都只能是对变量的成员进行。 联合变量的成员表示为: 联合变量名.成员名 例如,a被说明为department类型的变量之后,可使用 a. grade或a.office 。不允许只用联合变量名作赋值或其它操作。也不允许对联合变量作初始化赋值,赋值只能在程序中进行一个联合变量, 每次只能赋予一个成员值。一个联合变量的值就是联合变员的某一个成员值。 【例11-4】设有一个教师与学生通用的表格,教师数据有姓名,年龄,身份,教研室四项。学生有姓名,年龄, 身份,班级四项。编程输入人员数据, 再以表格输出。 #includestdio.h #define N 3 int main() { struct { char name[15]; int age; char status; union { int grade; char office[20]; } depa; }body[3]; int i; for(i=0;iN;i++) { printf(input name:\n);/*提示语*/ gets(body[i].name); /*gets函数接收带空格的姓名*/ printf(input age:\n); scanf(%d,body[i].age); getchar(); /*吸收上一句输入的回车符*/ printf(input status(s or t) :\n); body[i]. status=getchar(); if( body[i]. status==s) { getchar(); /*吸收上一句输入的回车符*/ printf(input grade:\n); scanf(%d,body[i].depa.grade); getchar(); /*吸收上一句输入的回车符*/ } else { getchar(); /*吸收上一句输入的回车符*/ printf(input office:\n); gets(body[i].depa.office); } } printf(name\t\tage status grade/office\n); for(i=0;iN;i++) { if(body[i].status==s) printf(%15s\t%3d%3c%20d\n,body[i].name,body[i].age,body[i].status,body[i].depa.grade); /*对齐输出数据*/ else printf(%15s\t%3d%3c%20s\n,body[i].name,body[i].age,body[i].status,body[i].depa.office); /*对齐输出数据*/ ? } return 0; } 在处理结构体问题时经常涉及字符或字符串的输入,这时要注意: ①scanf()函数用%s输入字符串遇空格即结束,因此输入带空格的

文档评论(0)

feixiang2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档