、实验目的和要求
1.目的
使学生在理解排序算法思想的基础上,利用C语言数据结构的定义和相关语句等综合知识,按要求编写一个能实现学生成绩管理的应用程序。
2.要求
假设有一个班级学生n人,期末考试老师要对成绩从高到低列出,并对各科的考试成绩求出其最高分、最低分和平均成绩。试设计一个成绩管理程序,按要求显示输出学生的记录和相关的成绩。
(1)学生成绩的数据来源于程序的结构数组,定义若干个(不少于10)学生的记录,学生记录包括:学号、姓名、三至五门科目的考试成绩;
(2)使用一种排序算法对上述某门科目的成绩进行排序;
(3)将排序后的成绩,以每个学生记录的形式显示输出;
(4)求出每门科目的最高分、最低分和平均分的信息;
(5)输出的数据要清晰,排列整齐。
--------------------next---------------------
#include
#include
#define SN 10 // 学生人数
#define CN 3 // 课程数目
int course; // 要排序的那门课程
struct student
{ int num;
char name[10];
int score[CN];
};
void bubble(struct student *pstu) //冒泡排序(从大到小)
{ struct student tmp;
for (int i = 0; i < SN; i++) // 要排SN个数,则应排SN遍:
{
for(int j = 0; j < 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;
} //对调两个数,需要有"第三者"参以
}
}
}
void output(struct student *pstu)
{
cout< cout< cout< cout< cout< for(int i=0;i { cout< cout< for (int j=0;j cout< cout<}
void avgscore(struct student *pstu)
{
int sum[CN],n;
for(n=0; n { sum[n]=0;
for(int j=0; j sum[n]+=pstu[j].score[n];
}
cout<<"各科课程的平均成绩:";
for(n=0;n cout< cout<}
void maxmin(struct student *pstu)
{
int max[CN],min[CN],n;
for(n=0; n { max[n]=0;
min[n]=100;
for(int j=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<}
void main()
{
struct student stu[SN]={
{2004101,"张大志",89,67,90},
{2004102,"杨小敏",65,80,56},
{2004103,"李 兵",76,66,71},
{2004104,"周星华",60,76,88},
{2004105,"王小青",82,90,78},
{2004106,"陈江海",70,81,93},
{2004107,"刘慧姗",85,60,76},
{2004108,"张真真",80,76,61},
{2004109,"林华强",70,66,98},
{2004110,"郭云风",62,60,87},
};
int n;
cout< cout<<"要对第几门课程的成绩排序: ";
cin>>n; //输入要排序的第几门课程
course=n-1;
struct student *pstu=stu;
cout< bubble(pstu);
output(pstu);
cout< maxmin(pstu);
avgscore(pstu);
}
--------------------next---------------------
阅读(1580) | 评论(0) | 转发(0) |