书面作业_14.doc
上传人:sy****28 上传时间:2024-09-12 格式:DOC 页数:4 大小:122KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

书面作业_14.doc

书面作业_14.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

··实验十二结构体与共用体书面作业_14:建立一个如下图所示的静态链表,它由3个结点组成,每个结点中的数据部分包括学生的学号,姓名和三门课程的成绩。要求先建立链表,再输出各结点中的数据,结构体的成员名称如右下角所示,类型的定义位于main()函数之前,其它代码写在main()中。链表的输出结果:#include<stdio.h>#include<string.h>structStudent{intnum;charname[20];floatscore[4];structStudent*next;};intmain(){structStudenta,b,c,*head,*p;a.num=10101;strcpy(a.name,"张?丹獭?);a.score[0]=89;a.score[1]=95;a.score[3]=91;b.num=10103;strcpy(b.name,"彭í浩?");b.score[0]=99;b.score[1]=89;b.score[3]=90;c.num=10105;strcpy(c.name,"张?磊え?);c.score[0]=85;c.score[1]=95;c.score[3]=97;head=&a;a.next=&b;b.next=&c;c.next=NULL;p=head;do{printf("%ld%s%5.lf%5.lf%5.lf\n",p->num,p->name,p->score[0],p->score[1],p->score[3]);p=p->next;}while(p!=NULL);return0;}建立一个如上图所示的动态链表,结构体的成员、类型定义位置、各结点的内容与上一题相同,不同之处是:(1)定义creat()函数,实现创建动态链表功能(学号为0时结束输入);(2)定义print()函数,实现输出链表各结点功能;(3)上述两函数的定义位于main()函数的后面;程序运行结果如下所示:#include<stdio.h>#include<stdlib.h>#defineLENsizeof(structStudent)structStudent{intnum;charname[20];floatscore[4];structStudent*next;};intn;structStudent*creat(){structStudent*head;structStudent*p1,*p2;n=0;p1=p2=(structStudent*)malloc(LEN);scanf("%ld%s%f%f%f",&p1->num,&p1->name,&p1->score[0],&p1->score[1],&p1->score[3]);head=NULL;while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(structStudent*)malloc(LEN);scanf("%ld%s%f%f%f",&p1->num,&p1->name,&p1->score[0],&p1->score[1],&p1->score[3]);}p2->next=NULL;return(head);}voidprint(structStudent*head){structStudent*p;printf("\nNow,Three%drecordsare:\n",n);p=head;if(head!=NULL)do{printf("%d%s%lf%lf%lf\n",p->num,p->name,p->score[0],p->score[1],p->score[3]);p=p->next;}while(p!=NULL);}intmain(){structStudent*head;head=creat();print(head);return0;}