文档介绍:数据结构课程实验报告
学生姓名
吴杰
学号
1934001252354
班级
19秋计算机科学与技术
(本)
指导老师
任刚
实验名称
冒泡法排序的改进算法
实验成绩
实验报告
实验概述
实验目的:从键盘上数据结构课程实验报告
学生姓名
吴杰
学号
1934001252354
班级
19秋计算机科学与技术
(本)
指导老师
任刚
实验名称
冒泡法排序的改进算法
实验成绩
实验报告
实验概述
实验目的:从键盘上输入每个学生各门功课的成绩,计算出平均成绩,按照平均成绩由咼到低重新排序,并定出每位学生的名次。
实验要求:
1、建立学生成绩信息表,计算平均成绩。
2、用冒泡法对平均成绩排序,程序中要求一旦序列被排好序就结束相应排序操作。
实验基本原理:
实验主要采用冒泡排序,该排序针对结构体中的一个成员排序,然后按照从多大到小的顺序输出。
实验内容
实验设计思路、步骤和方法等:
1、不同学生的姓名、每门课成绩和平均成绩参数类型都是一致的,可以定义一个结构体存储。
2、获取学生的信息,每门课信息,计算并求出平均值。
3、对结构体中的平均成绩进行冒泡排序,交换生成新的结构体。
4、输出结果。
实验过程(实验中涉及的记录、数据、分析):
/*改进的冒泡排序,按平均成绩从高到低排序*/voidbsort(Student*a,intn)
{
Studenttemp;
inti,j,flag:
for(j=0;j〈n-1;j++)/*共进行(n-1)趟冒泡*/{
flag=0;for(i=0;i〈n-j;i++)
if(a[i].avg〈a[i+1].avg)
{
flag-1;/*本趟有兀素父换*/
temp=a[i];a[i]=a[i+1];a[i+1]二temp;
}
if(flag--0)break;/*没有兀素父换,说明已排好序*/
}
}
voidmain()
{
Studenta[Nl];
inti,j;
printf(〃请输入%d位学生信息(姓名、语文、数学、外语成绩)以空格隔开\n\n",Nl);
for(i=0;i〈Nl;i++)
{
printf("输入第%d位学生信息:",i+l);
scanf("%s",a[i].name);
a[i].avg=0;
for(j=0;j〈N2;j++){
scanf("%d",&a[i].score[j]);a[i].avg+=a[i].score[j];
}
a[i].avg/=N2;/*计算平均成绩*/
}
bsort(a,Nl);/*排序*/
/*排序后的学生信息表*/
printf("\n名次姓名语文数学外语平均成绩\n");
//for(i=0;i<N2;i++)
//printf("课程%宀",i+1);
//printf("平均成绩\n");
for(i=0;i〈Nl;i++)
{
printf("%-4d%-4s",i+l,a[i].name);
for(j=0;j<N2;j++)
printf("%-6d",a[i].score[j]);
printf("%-\n",a[i].avg);
}
}
实验结果: