Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349287
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:08:44

、实验目的和要求
  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) |
给主人留下些什么吧!~~