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

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

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

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

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

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

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

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

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

学号

姓名

无机化学

大学英语

高等数学

intnum

charname[10]

intscore[3]

二、设计方法

1.冒泡排序(BubbleSort)

(1)基本思想:

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

(2)排序过程:

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

从下往上扫描数组R。

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

就使其向上"

漂浮"

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

冒泡排序的程序代码:

voidBubbleSort(inta[],intn)

{inttemp;

for(inti=0;

i<

n;

i++)

for(intj=0;

j<

i-1;

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<

iostream.h>

iomanip.h>

#defineSN10//学生人数

#defineCN3//课程数目

intcourse;

//要排序的那门课程

structstudent

{intnum;

charname[10];

intscore[CN];

};

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

{structstudenttmp;

for(inti=0;

SN;

i++)//要排SN个数,则应排SN遍:

{

for(intj=0;

SN-i-1;

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<

<

setw(8)<

"

学号"

;

setw(10)<

姓名"

无机化学"

大学英语"

高等数学"

endl;

for(inti=0;

i<

SN;

i++)

{cout<

pstu[i].num;

cout<

pstu[i].name;

for(intj=0;

j<

CN;

j++)

cout<

pstu[i].score[j];

cout<

voidavgscore(structstudent*pstu)

intsum[CN],n;

for(n=0;

n<

n++)

{sum[n]=0;

for(intj=0;

j<

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

}

cout<

各科课程的平均成绩:

n<

cout<

setw(5)<

sum[n]/SN;

voidmaxmin(structstudent*pstu)

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

{max[n]=0;

min[n]=100;

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

max[n])

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

if(pstu[j].score[n]<

min[n])

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

}

各科课程的最高分:

"

max[n];

各科课程的最低分:

min[n];

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;

setw(30)<

***学生成绩管理***"

endl<

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

"

cin>

>

//输入要排序的第几门课程

course=n-1;

structstudent*pstu=stu;

bubble(pstu);

output(pstu);

maxmin(pstu);

avgscore(pstu);

三、验证结果

四、总结

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

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

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

五、参考资料与网上资源

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

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

(3)唯C世界,

(4)C语言编程网,

(5)C语言编程宝典,

(6)C语言程序基础,

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1