《C语言程序设计》-综合性实验-冒泡排序.doc

上传人:聆听****声音 文档编号:78469 上传时间:2023-04-28 格式:DOC 页数:5 大小:70.50KB
下载 相关 举报
《C语言程序设计》-综合性实验-冒泡排序.doc_第1页
第1页 / 共5页
《C语言程序设计》-综合性实验-冒泡排序.doc_第2页
第2页 / 共5页
《C语言程序设计》-综合性实验-冒泡排序.doc_第3页
第3页 / 共5页
《C语言程序设计》-综合性实验-冒泡排序.doc_第4页
第4页 / 共5页
《C语言程序设计》-综合性实验-冒泡排序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《C语言程序设计》-综合性实验-冒泡排序.doc

《《C语言程序设计》-综合性实验-冒泡排序.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》-综合性实验-冒泡排序.doc(5页珍藏版)》请在冰点文库上搜索。

《C语言程序设计》-综合性实验-冒泡排序.doc

《C语言程序设计》综合性实验

一、实验名称:

学生成绩管理程序

二、实验目的:

(1)了解数组和结构体的概念

(2)掌握使用结构体数组存储数据的方法

(3)掌握一种常用的排序算法

(4)能够使用顺序结构、选择结构、循环结构语句编写程序求解问题

三、实验内容:

假设有一个班级学生n人,期末考试老师要对成绩从高到低列出,并对各科的考试成绩求出其最高分、最低分和平均成绩。

试设计一个成绩管理程序,按要求显示输出学生的记录和相关的成绩。

(1)学生成绩的数据来源于程序的结构数组,定义若干个(不少于10)学生的记录,学生记录包括:

学号、姓名、三至五门科目的考试成绩;

(2)使用一种排序算法对上述某门科目的成绩进行排序;

(3)将排序后的成绩,以每个学生记录的形式显示输出;

(4)求出每门科目的最高分、最低分和平均分的信息;

(5)输出的数据要清晰,排列整齐。

四、实验摘要:

通过学生成绩管理程序教师可以轻易地了解学生学习情况,传统手工的学生成绩管理,操作效率低,并且易于出错,查询不方便。

本程序实现了对一个班的学生考试成绩按科目进行排序,并统计出各科目的最高分、最低分和平均分的数据。

一、基本设计思想

假设有一个班级的学生n人,期末考试老师要对成绩从高到低列出,并对各科的考试成绩求出其最高分、最低分和平均成绩。

现在设计一个成绩管理程序,能够实现以下的功能:

(1)对某门科目的成绩进行排序并显示输出;

(2)求出每门科目的最高分、最低分和平均分的信息;

学生成绩的数据用结构数组表示,包括:

学号、姓名、三门科目的考试成绩,其结构格式如下:

学号

姓名

无机化学

大学英语

高等数学

intnum

charname[10]

intscore[3]

二、设计方法

1.冒泡排序(BubbleSort)

(1)基本思想:

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。

(2)排序过程:

设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则。

从下往上扫描数组R。

凡扫描到违反本原则的轻气泡。

就使其向上"漂浮"。

如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。

冒泡排序的程序代码:

voidBubbleSort(inta[],intn)

{inttemp;

for(inti=0;i

for(intj=0;j

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}

}

2.程序流程图

(1)排序算法---冒泡的排序

定义学生人数SN、考试科目数CN

定义学生数据记录的结构体student

定义实现排序算法的函数bubble()

定义输出学生数据的函数output()

定义求最高、最低分函数maxmin()和求平均分函数avescore()

初始化学生数据记录

输入执行排序的科目

调用排序算法的函数bubble()

调用输出学生函数output()显示排序后的结果

调用函数maxmin()输出最高分和最低分

调用函数avescore()输出各各科的平均分

i从0到n

j从0到i-1

如果a[j]>a[j+1]

真交换a[j],a[j+1]

(2)学生成绩管理程序

3.程序实现

#include

#include

#defineSN10//学生人数

#defineCN3//课程数目

intcourse;//要排序的那门课程

structstudent

{intnum;

charname[10];

intscore[CN];

};

voidbubble(structstudent*pstu)//冒泡排序(从大到小)

{structstudenttmp;

for(inti=0;i

{

for(intj=0;j

{

if(pstu[j+1].score[course]>pstu[j].score[course])//比较相邻的两个数:

{tmp=pstu[j+1];

pstu[j+1]=pstu[j];

pstu[j]=tmp;

}//对调两个数,需要有"第三者"参以

}

}

}

voidoutput(structstudent*pstu)

{

cout<

cout<

cout<

cout<

cout<

for(inti=0;i

{cout<

cout<

for(intj=0;j

cout<

cout<

}

voidavgscore(structstudent*pstu)

{

intsum[CN],n;

for(n=0;n

{sum[n]=0;

for(intj=0;j

sum[n]+=pstu[j].score[n];

}

cout<<"各科课程的平均成绩:

";

for(n=0;n

cout<

cout<

}

voidmaxmin(structstudent*pstu)

{

intmax[CN],min[CN],n;

for(n=0;n

{max[n]=0;

min[n]=100;

for(intj=0;j

{if(pstu[j].score[n]>max[n])

max[n]=pstu[j].score[n];

if(pstu[j].score[n]

min[n]=pstu[j].score[n];

}

}

cout<<"各科课程的最高分:

";

for(n=0;n

cout<

cout<

cout<<"各科课程的最低分:

";

for(n=0;n

cout<

cout<

}

voidmain()

{

structstudentstu[SN]={

{2004101,"花拓也",95,97,93},

{2004102,"梁慕橙",94,99,92},

{2004103,"梁晓乐",96,89,96},

{2004104,"任光晞",88,86,83},

{2004105,"花痴心",72,73,85},

{2004106,"何以茜",79,81,93},

{2004107,"花泽类",85,86,76},

{2004108,"道明寺",100,100,100},

{2004109,"西门",65,63,75},

{2004110,"美作",62,60,87},

};

intn;

cout<

cout<<"要对第几门课程的成绩排序:

";

cin>>n;//输入要排序的第几门课程

course=n-1;

structstudent*pstu=stu;

cout<

bubble(pstu);

output(pstu);

cout<

maxmin(pstu);

avgscore(pstu);

}

三、验证结果

四、总结

本实验的程序有一定的实用性,是对所学过的知识的综合运用。

程序的核心是对数据进行排序,必须要对排序算法有深入的领会,由于学生的数据是使用结构体数组表示,因此在调用排序函数时,需要对排序算法的原代码作相应的修改,还要注意函数参数引用的格式。

此外在程序调试时,会出现一些编译错误,其中包括语法错误和逻辑错误,必须要对其修改,在编写和调试程序过程中,提高了本人编程技能。

五、参考资料与网上资源

(1)《C语言程序设计实验指导与习题解答》蒋清明主编人民邮电出版社

(2)《C++程序设计技能百练》蒋立翔编著中国铁道出版社

(3)唯C世界,

(4)C语言编程网,

(5)C语言编程宝典,

(6)C语言程序基础,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2