《C语言程序设计实验九结构体和共用体答案西北民大电气院》由会员分享,可在线阅读,更多相关《C语言程序设计实验九结构体和共用体答案西北民大电气院(5页珍藏版)》请在金锄头文库上搜索。
1、实验九 结构体和共用体一,实验目的:1,掌握结构体类型变量的定义和使用.2,掌握结构体类型数组的概念和应用.3,掌握共用体的概念和使用.4,了解链表的概念, 初步学会对链表进行操作.二,实验准备:1,复习结构体的概念和定义方法.2,复习共用体的概念和定义方法.3,源程序.三,实验步骤及内容:程序改错typedef union long x2;int y4;char z8; MYTYPE;typedef union them;main() printf(%d,sizeof(them);修改后的程序:typedef union long x2;int y4;char z8; MYTYPE;MYTY
2、PE them;main() printf(%d,sizeof(them);程序填空以下程序建立了一个带有头结点的单向链表,结点中的数据可由键盘输入 ,当输入数据为-1 时,表示输入结束(链表头结点的 data 与不放数据,表空的条件是ph next=NULL).#include _struct list int data ;struct list *next ;_ struct list *creatlist() struct list *p, *q, *ph;int a ;ph=(struct list *)malloc(sizeof(struct list);p=q=ph;printf(
3、input an integer number,enter -1 to end :n);scanf(%d,&a);while (a!=-1) p=(struct list *)malloc(sizeof(struct list);p-data=a;q-next=p;ph-next=p;scanf(%d,&a);p-next =0;return(ph);main()struct list *head;head=creatlist();3,有 5 个学生,每个学生的数据包括学号,姓名,三门课成绩, 从键盘输入 5 个学生数据, 要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号, 姓名,
4、三门课成绩,平均成绩).要求:用一个 input 函数输入 5 个学生数据;用一个 average 函数求总平均分; 用max 函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出.(习题 9.5)源程序:#include#define N 5struct studentchar num6;char name8;float score3;float avr;stuN;int i,j,maxi;float sum,max,average;void main()printf(请输入学生信息:n);for(i=0;imax)max=sum;maxi=i;average/=N;prin
5、tf(no. name score1 score2 core3 averagen);for(i=0;iN;i+)printf(%5s%10s,stui.num,stui.name);for(j=0;j3;j+)printf(%9.2f,stui.scorei);printf(8.2%fn,stui.avr);printf(average=%5.2fn,average);printf(highest score :student %s,%s.n,stumaxi.num,stumaxi.name);printf(his score :%6d,%6d,%6d,average: %5.2fn,stum
6、axi.score0,stumaxi.score1,stumaxi.score2,stumaxi.avr);getch();4,输入和运行以下程序:union dataint i2;float a;long b;char c4;main()union data u;scanf(%d,%d,&u.i0,&u.i1);printf(i0=%d,i1=%dna=%fnb=%ldnc0=%c,c1=%c,c2=%c,c3=%cn,u.i0,u.i1,u.a,u.b,u.c0,u.c1,u.c2,u.c3);输入两个整数 10000,20000 给 u.i0和 u.i1.分析运行结果.运行结果:分析:定
7、义了共用体变量 data.u,将 10000,20000 分别赋给 u.i0,u.i1,分别用%d,%c,%f, 输出这两个数,得到的结果然后将 scanf 语句改成:scanf(%ld,&u.b);输入 60000 给 b.分析运行结果.源程序:union dataint i2;float a;long b;char c4;main()union data u;scanf(%ld,&u.b);printf(i0=%d,i1=%dna=%fnb=%ldnc0=%c,c1=%c,c2=%c,c3=%cn,u.i0,u.i1,u.a,u.b,u.c0,u.c1,u.c2,u.c3);getch();运行结果: 分析:原来的程序:结构体中的数组 i 被赋值 10000 和 20000,并且也没有超过 32767 的范围;但其他的变量没有初始值;改后的程序:只有 b 的值是被赋值的;四, 实验报告:1,根据下列程序段回答问题:struct dataint i;char ch;float f;a;unoin dataint i;char ch;float f;b;试问结构体变量 a 和共用体变量 b 所占用的字节数各是多少解答:结构体变量 a 是七个字节,共用体变量 b 是七个字节 2,源程序.3,错误原因及其修改记录.4,实验结果记录.5,实验体会.