2--2有序的结构体数组

来源:互联网 发布:剑网三捏脸数据怎么看 编辑:程序博客网 时间:2024/06/05 22:32
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:纪丽娜*完成日期:2014年3月2日*版本号:v1.0*对任务及求解方法的描述部分:*输入描述:使用同项目 1 相同的结构体类型,在 main 函数中已经对结构体数组进行了初始化,请完成相关函数的定义,实现 main 函数中要求的功能*问题描述:每位同学的信息学号、姓名、C++、高数、英语成绩,定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[12]) 、姓名(name)、三门课的成绩(grade) 、总分(score) 、均分(average) ) 。 (1)使用同项目1 相同的结构体类型,在main 函数中已经对结构体 数组进行了初始化,请完成相关函数的定义,实现main 函数中要求的功能。(2)求出每名同学的总分和均分,并存储在结构体数组中(可以读入过程中“顺便”计算) ;(3)输出每位同学的信息学号、姓名、总分和均分。(4)输出所有同学均分的均值。*程序输出:*问题分析:*算法设计:*/#include <iostream>#include <iomanip>using namespace std;struct Student{char num[13];char name[10];int cpp;int math;int english;int score;double average;}stu;void calculate(Student s[],int n);  //计算总分和均分,数据在 s 数组中,共有 n 个元素void sort1(Student [],int);      //按总分降序排序void sort2(Student [],int);    //按学号升序排序void output(Student [],int);  //输出成绩单void outputExcellent(Student [],int); //输出优秀者:总分超 285,单科不低于 90int main(){Student stu[]={{"201152501104","Tom",65,69 ,68 },{"201152501114","Jeery",94 ,89 ,63 },{"201152501138","Speike",67 ,62 ,84 },{"201152501204","Tyke",100 ,95 ,91 },{"201152501202","Tuffy",59 ,80 ,55 },{"201152501115","Butch",100 ,99 ,89 },{"201152501201","Lightning",95 ,92 ,99 },{"201152501145","Topsy",88 ,56 ,67 },{"201152501203","Droopy",62 ,62 ,95 },{"201152501140","Drupa",80 ,60 ,86 }, {"201152501205","Buzz",73 ,90 ,94}};int stuNum=sizeof(stu)/sizeof(stu[0]);     //用 sizeof 运算确定数组中元素个数//计算总分和均分后输出calculate(stu,stuNum);cout<<"下面是成绩单:"<<endl;output(stu,stuNum);cout<<"优秀者名单:"<<endl;outputExcellent(stu,stuNum);//按总分降序排序后输出cout<<"按总分降序排序后:"<<endl;sort1(stu,stuNum);output(stu,stuNum);//按学号升序排序后输出sort2(stu,stuNum);cout<<"按学号升序排序后:"<<endl;output(stu,stuNum);return 0;}void calculate(Student s[],int n)  //计算总分和均分,数据在 s 数组中,共有 n 个元素{  int i;  for(i=0;i<n;i++)  {      s[i].score=s[i].cpp+s[i].math+s[i].english;      s[i].average=s[i].score/3;  }}void sort1(Student s[],int n)      //按总分降序排序{    int i,j;    Student t;    for(j=0;j<n;j++)      for(i=0;i<n-j-1;i++)        if(s[i].score<s[i+1].score)        {t=s[i];s[i]=s[i+1];s[i+1]=t;}}void sort2(Student s[],int n)   //按学号升序排序{     int i,j;     Student t;     for(j=0;j<n;j++)       for(i=0;i<n-j-1;i++)         if(s[i].num>s[i+1].num)          {t=s[i];s[i]=s[i+1];s[i+1]=t;}}void output(Student s[],int n) //输出成绩单{  int i;  cout<<"学号              姓名      c++    高数    英语    总分      均分"<<endl; for(i=0;i<n;i++) { cout<<s[i].num<<setw(10)<<s[i].name<<setw(8)<<s[i].cpp<<setw(8)<<s[i].math<<setw(8)<<s[i].english<<setw(9)<<s[i].score<<setw(9)<<s[i].average; cout<<endl; }}void outputExcellent(Student s[],int n)//输出优秀者:总分超 285,单科不低于 90{    int i;    for(i=0;i<n;i++)    {        if(s[i].score>285&&s[i].cpp>=90&&s[i].math>=90&&s[i].english>=90)        {          cout<<s[i].num<<"    "<<s[i].name<<endl;        }    }}

0 0
原创粉丝点击