c语言实训报告模板.docx
- 文档编号:7026397
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:5
- 大小:16.34KB
c语言实训报告模板.docx
《c语言实训报告模板.docx》由会员分享,可在线阅读,更多相关《c语言实训报告模板.docx(5页珍藏版)》请在冰豆网上搜索。
c语言实训报告模板
c语言实训报告模板
暨南大学本科实验报告专用纸
课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号08实验项目类型综合性实验地点C301学生姓名 苟长弘学号XX051282学院信息科学技术 系计算机科学专业软件工程 实验时间XX年6月12日下午~6月13日下午温度℃湿度
实验目的
1.
2.
3.
4.掌握结构体类型变量的定义和使用。
掌握结构体类型数组的概念和应用。
掌握链表的概念,初步学会对链表进行操作。
掌握共用体的概念与使用。
实验内容和要求
实验内容1:
:
试编写一个程序完成:
有5个学生,每个学生的数据包括学号、姓名、3门课
的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
实验要求:
要求用一个input函数输入5个学生数据;应一个average函数求平均分;
用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。
输入事先已编好的程序,并运行该程序。
分析运行结果是否正确。
实验内容2:
:
试编写一个程序完成:
建立一个链表,每个结点包括:
学号、姓名、性别、年
龄。
输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
实验要求:
用链表实现。
输入事先已编好的程序,并运行该程序。
分析运行结果是否正确。
主要仪器设备
仪器:
计算机
实验环境:
WindowsXP+VisualC++
实验原理
实验1的N-S图如下:
图片已关闭显示,点此查看
实验2的N-S图如下:
creat函数:
图片已关闭显示,点此查看
print函数:
图片已关闭显示,点此查看
del函数:
图片已关闭显示,点此查看
主函数:
图片已关闭显示,点此查看
源程序
实验1的源程序如下:
#include
structstudent
{
intnumber;
charname[10];
intclasses[3];
intaverage;
}stu[5];
voidinput(structstudent*p)
{
inti;
for(i=0;i {
printf("Pleaseinput%dthstudent'sdata:
",i+1);
scanf("%d%s%d%d%d",&p->number,p->name,&p->classes[0],&p->classes[1],&p->classes[2]);
}
}
average(structstudent*p)
{
intm=0;
m=p->classes[0]+p->classes[1]+p->classes[2];
m=m/3;
p->average=m;
return(m);
}
structstudent*max(structstudent*p,intj)
{
inti,n;
structstudent*q;
for(i=0;i if(p->classes[j]>=n)
{
n=p->classes[j];
q=p;
}
return(q);
}
voidmain()
{
inti,m[5];
structstudent*p;
input(stu);
p=stu;
for(i=0;i {
m[i]=average(&stu[i]);
printf("The%s'saveragescoreis:
%d",p->name,m[i]);
}
for(i=0;i {
p=max(stu,i);
printf("Theclasses%d'smaxscoreis:
%d%s%d%d%d%d",i+1,p->number,p->name,p->classes[0],p->classes[1],p->classes[2],p->average);
}
}
实验2的源程序如下:
#include
#include
#defineNULL0
#defineLENsizeof(structstudent)
structstudent
{
charnum[10];
charname[10];
charsex;
intage;
structstudent*next;
};
intn;
structstudent*creat(void)
{
structstudent*head;
structstudent*p1,*p2;
n=0;
p1=p2=(structstudent*)malloc(LEN); scanf("%s%s%c%d",p1->num,p1->name,&p1->sex,&p1->age);
head=NULL;
while(p1->age!
=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(structstudent*)malloc(LEN);
scanf("%s%s%c%d",p1->num,p1->name,&p1->sex,&p1->age);
}
p2->next=NULL;
return(head);
}
voidprint(structstudent*head)
{
structstudent*p;
printf("Now,These%drecordsare:
",n);
p=head;
if(head!
=NULL)
do{printf("%s%s%c%d",p->num,p->name,p->sex,p->age);
p=p->next;
}while(p!
=NULL);
}
structstudent*del(structstudent*head,intnum)
{
structstudent*p1,*p2;
if(head==NULL)
printf("listnull!
");
else
{
p1=head;
while(num!
=p1->age&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->age)
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
printf("delete:
%d",num);
n=n-1;
}
else
printf("%dnotbeenfound!
",num);
}
return(head);
}
voidmain()
{
structstudent*head,*stu;
intdel_num;
printf("inputrecords:
");
head=creat();
print(head);
printf("inputthedeletednumber:
");
scanf("%d",&del_num);
while(del_num!
=0)
{
head=del(head,del_num);
print(head);
printf("inputthedeletednumber:
");
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,&p1->age);”运行后,结果正确。
实验结果与分析
实验1的结果如下:
图片已关闭显示,点此查看
实验2的结果如下:
图片已关闭显示,点此查看
分析:
利用结构体可以很好的对各类数据进行组合,而且还很容易引用。
对于学生的数据有多个,而且数据类型都不相同,首选可用结构体来存放。
对结构体的变量成员的引用要注意引用的格式。
它不同于普通变量的引用方式,它要有结构体名加一点再加变量名来引用。
在输入时,也应注意输入的成员的类型。
利用链表对结构体的处理是一种很好的方法。
它是线性存储的,可以动态的分配空间,根据需要开辟内存单元,减少对空间的浪费,而且对于数据的删除和添加,它并不需要利用额外的空间对以存放好的数据进行移动或交换。
链表是利用指针来实现的操作的。
大学
学院实验报告
专业名称实验室实验课程C实验名称姓 名学 号同组人员实验日期
语言程序设计程序设计1
2
图片已关闭显示,点此查看
3
图片已关闭显示,点此查看
4
图片已关闭显示,点此查看
5
图片已关闭显示,点此查看
6
图片已关闭显示,点此查看
7
图片已关闭显示,点此查看
8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 报告 模板