实验九 结构体和共用体
一,实验目的:
1,掌握结构体类型变量的定义和使用. 2,掌握结构体类型数组的概念和应用. 3,掌握共用体的概念和使用.
4,了解链表的概念,初步学会对链表进行操作. 二,实验准备:
1,复习结构体的概念和定义方法. 2,复习共用体的概念和定义方法. 3,源程序.
三,实验步骤及内容: 程序改错
typedef union { long x[2]; int y[4]; char z[8]; } MYTYPE;
typedef union them; main()
{ printf(\}
修改后的程序:
typedef union { long x[2]; int y[4]; char z[8]; } MYTYPE;
MYTYPE them;
main()
{ printf(\}
程序填空
以下程序建立了一个带有头结点的单向链表,结点中的数据可由键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data与不放数据,表空的条件是ph―>next==NULL).
#include _
_ struct list *creatlist()
{ struct list *p, *q, *ph; int a ;
ph=(struct list *)malloc(sizeof(struct list)); p=q=ph;
printf(\,enter -1 to end :\\n\scanf(\while (a!=-1)
{ p=(struct list *)malloc(sizeof(struct list)); p->data=a; q->next=p;
ph->next=p;
scanf(\}
p->next =\return(ph); }
main()
{struct list *head; head=creatlist(); }
3,有5个学生,每个学生的数据包括学号,姓名,三门课成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课成绩,平均成绩).
要求:用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出.(习题9.5)
源程序:
#include
char num[6]; char name[8]; float score[3]; float avr;} stu[N];
int i,j,maxi;
float sum,max,average; void main() {
printf(\请输入学生信息:\\n\ for(i=0;i<5;i++) {printf(\
scanf(\
printf(\
scanf(\ for(j=0;j<3;j++)
{printf(\
scanf(\ }
printf(\ }
average=0; max=0;
for(i=0;i<5;i++) {
sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j]; stu[i].avr=sum/3; average+=stu[i].avr; if (sum>max)
{max=sum;maxi=i;} }
average/=N;
printf(\ name score1 score2 core3 average\\n\for(i=0;i {printf(\for(j=0;j<3;j++) printf(\printf(\ printf(\printf(\ score :student %s,%s.\\n\printf(\ score :m,m,m,average: %5.2f\\n\ stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr); getch();} 4,输入和运行以下程序: union data { int i[2]; float a; long b; char c[4]; }; main()