实验二__有关结构体和共用体的程序设计参考答案.docVIP

实验二__有关结构体和共用体的程序设计参考答案.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二__有关结构体和共用体的程序设计参考答案.doc

实验2:有关结构与共同体的程序设计 一、实验目的 掌握结构体类型和结构体变量的定义、引用方法; 掌握结构体类型数组和结构体类型指针的概念和应用; 掌握共用体的概念和使用; 能用结构体类型解决实际问题。 二、实验要求 了解结构体类型和简单数据类型、结构体类型和共用体类型的区别; 复习结构体变量、结构体指针与结构体数组的相关理论课程; 完成各项实验任务及问题讨论。 三、实验内容 1.输入和运行下面的程序,并分析输出结果。 ①#include stdio.h main() { union EXAMPLE { struct { int x,y; }in; int a,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\n”,e.in.x,e.in.y); } 输出结果:4,8 解答:对于共用体e,有三个成员in,a,b,它们在内存中的覆盖关系如下图: 即e.a,e.b,e.in.x占相同的内存单元, 执行e.a=1;e.b=2;后e.a,e.b,e.in.x的值为2, 执行e.in.x=e.a*e.b;后e.a,e.b,e.in.x的值为2*2=4, 执行e.in.y=e.a+e.b;e.in.y=4+4=8。 ②#include stdio.h main() { union { int i[2]; long k; char c[4]; }r,*s=r; s-i[0]=0x39; s-i[1]=0x38; printf(“%c\n”,s-c[0]); } 输出结果:9 解答:对于共用体r,有三个成员i,k,c,它们在内存中的覆盖关系如下图: i[0] k i[1] 执行s-i[0]=0x39;s-i[1]=0x38;赋值语句后,内存中存储的数据值如上图所示。 2.完善程序 ①下面程序的功能是输入学生的姓名和成绩,然后输出。 #include stdio.h struct studinf { char name[20];      /* 学生姓名 */ int score;         /* 学生成绩 */ } stu, *p; void main ( ) { p=stu; printf(Enter name:); gets(     p-name            ); printf(Enter score: ); scanf(%d,   (*p).score               ); printf(Output: %s, %d\n,  stu.name  ,     stu.score      ); } 目标:掌握结构体成员引用的三种等价表达方式。 ②输入N个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列。要求:当两个整数相等时,整数的排列顺序由输入的先后次序决定。例如:输入的第3个整数为5,第7个整数也为5,则将先输入的整数5排在后输入的整数5的前面。程序如下: #include stdio.h #define N 10 struct { int no; //储存对应的序号 int num;//储存输入的数 } array[N]; main( ) { int i,j,num; for( i=0;iN;i++ ) { printf(enter No. %d:,i); scanf(%d,num);//输入待储存的数 for( j=i-1 ;j=0array[j].num    num;  j--  ) array[j+1]=array[j]; //查找待插入的位置 array[  j+1  ].num=num; array[  j+1  ].no=i; } for( i=0;iN;i++ ) printf(%d=%d,%d\n,i,array[i].num,array[i].no); } 3. 利用结构体编写程序,求任意两复数的和。具体实验步骤与要求如下: 定义表示复数的结构体类型; 定义函数Add,求两复数的和。 任意两复数及其和在主函数中输入、输出。 #include stdio.h struct complex { float a; //实部 float b; //虚部 }; struct complex Add(struct complex x,struct complex y) { struct complex temp; temp.a=x.a+y.a; //实部相加 temp.b=x.b+y.b; //虚部相加 return temp; }

文档评论(0)

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

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

1亿VIP精品文档

相关文档