1、c语言实训报告模板c语言实训报告模板暨南大学本科实验报告专用纸课程名称 高级语言程序设计 成绩评定实验项目名称 结构体和共用体 指导教师 张晓刚 实验项目编号 08 实验项目类型 综合性 实验地点 C301 学生姓名苟长弘学号 XX051282 学院 信息科学技术系 计算机科学 专业 软件工程实验时间 XX 年6月12 日 下午6月13 日 下午 温度 湿度实验目的1.2.3.4. 掌握结构体类型变量的定义和使用。 掌握结构体类型数组的概念和应用。 掌握链表的概念,初步学会对链表进行操作。 掌握共用体的概念与使用。实验内容和要求实验内容1::试编写一个程序完成:有5个学生,每个学生的数据包括学
2、号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。实验要求:要求用一个input函数输入5个学生数据;应一个average函数求平均分;用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。输入事先已编好的程序,并运行该程序。分析运行结果是否正确。实验内容2::试编写一个程序完成:建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。实验要求:用链表实现。输入事先已编好的程序,并运行该程序。分析运行结果是否正确。主要
3、仪器设备仪器:计算机实验环境: Windows XP + Visual C+实验原理实验1的N-S图如下:图片已关闭显示,点此查看 实验2的N-S图如下: creat函数:图片已关闭显示,点此查看 print函数: 图片已关闭显示,点此查看del函数:图片已关闭显示,点此查看 主函数: 图片已关闭显示,点此查看 源程序 实验1的源程序如下:#includestruct studentint number;char name10;int classes3;int average;stu5;void input(struct student *p)int i;for(i=0;iprintf(Ple
4、ase input %dth students data:,i+1);scanf(%d %s %d %d %d,&p-number,p-name,&p-classes0,&p-classes1,&p-classes2);average(struct student *p)int m=0;m=p-classes0+p-classes1+p-classes2;m=m/3;p-average=m;return(m);struct student *max(struct student *p,int j)int i,n;struct student *q;for(i=0;iif(p-classesj=
5、n)n=p-classesj;q=p;return(q);void main()int i,m5;struct student *p;input(stu);p=stu;for(i=0;imi=average(&stui);printf(The %ss average score is:%d,p-name,mi);for(i=0;ip=max(stu,i);printf(The classes%ds max score is:%d %s %d %d %d %d,i+1,p-number,p-name,p-classes0,p-classes1,p-classes2,p-average);实验2的
6、源程序如下:#include#include#define NULL 0#define LEN sizeof(struct student)struct studentchar num10;char name10;char sex;int age;struct student *next; ;int n;struct student *creat(void)struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);scanf(%s %s %c %d,p1-num,p1-name,&p1
7、-sex,&p1-age);head=NULL;while(p1-age!=0)n=n+1;if(n=1)head=p1;elsep2-next=p1;p2=p1;p1=(struct student *)malloc(LEN);scanf(%s %s %c %d,p1-num,p1-name,&p1-sex,&p1-age);p2-next=NULL;return(head);void print(struct student *head)struct student *p;printf(Now,These %d records are :,n);p=head;if(head!=NULL)d
8、o printf(%s %s %c %d,p-num,p-name,p-sex,p-age);p=p-next;while(p!=NULL);struct student *del(struct student *head ,int num)struct student *p1,*p2;if(head=NULL)printf(list null!);elsep1=head;while(num!=p1-age&p1-next!=NULL)p2=p1;p1=p1-next;if(num=p1-age)if(p1=head)head=p1-next;elsep2-next=p1-next;print
9、f(delete:%d,num);n=n-1;elseprintf(%d not been found!,num);return(head);void main()struct student *head,*stu;int del_num;printf(input records:);head=creat();print(head);printf(input the deleted number:);scanf(%d,&del_num);while(del_num!=0)head=del(head,del_num);print(head);printf(input the deleted nu
10、mber:);scanf(%d,&del_num);实验步骤与调试实验1:运行时未发生任何错误,结果正确。实验2:运行时提示语法错误,原因是输入语句写为了“scanf(%s%s%d%d,p1-num,p1-name,p1-sex,&p1-age);”将起改为“scanf(%s%s%d%d,p1-num,p1-name,&p1-sex,&p1-age);”, 成功运行,但是结果却错误,再检查,发现原因还是输入语句:“scanf(%s%s%d%d,p1-num,p1-name,&p1-sex,&p1-age);”应该改为“scanf(%s%s%c%d,p1-num,p1-name,&p1-sex,
11、&p1-age);” 运行后,结果正确。实验结果与分析实验1的结果如下:图片已关闭显示,点此查看 实验2 的结果如下: 图片已关闭显示,点此查看分析:利用结构体可以很好的对各类数据进行组合,而且还很容易引用。对于学生的数据有多个,而且数据类型都不相同,首选可用结构体来存放。对结构体的变量成员的引用要注意引用的格式。它不同于普通变量的引用方式,它要有结构体名加一点再加变量名来引用。在输入时,也应注意输入的成员的类型。利用链表对结构体的处理是一种很好的方法。它是线性存储的,可以动态的分配空间,根据需要开辟内存单元,减少对空间的浪费,而且对于数据的删除和添加,它并不需要利用额外的空间对以存放好的数据进行移动或交换。链表是利用指针来实现的操作的。大学学院实验报告专业名称 实 验 室实验课程 C实验名称 姓名 学号 同组人员实验日期语言程序设计 程序设计 12图片已关闭显示,点此查看3图片已关闭显示,点此查看4图片已关闭显示,点此查看5图片已关闭显示,点此查看6图片已关闭显示,点此查看7图片已关闭显示,点此查看8
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1