第二周上机实践项目——有序的结构体数组

来源:互联网 发布:js继承的作用 编辑:程序博客网 时间:2024/06/03 07:26
/*                *程序的版权和版本声明部分:                *Copyright(c)2013,烟台大学计算机学院学生                *All rights reserved.                *文件名称:学生成绩统计               *作者:刘中林              *完成日期:2013年 03月05日                *版本号:v0.1               *对任务及求解方法的描述部分:题意              *输入描述:给定     *问题描述: 计算、排序      *程序输出:处理过后的成绩单、优秀生姓名  *问题分析:Student t; t=stu[i];           *算法设计:冒泡等          *我的程序:*/#include <iostream>#include <string.h>using namespace std;struct Student{    char num[13];    char name[10];    int cpp;    int math;    int english;    int grade;    double average;};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);    //按总分降序排序后输出    sort1(stu,stuNum);    cout<<"按总分降序排序后:"<<endl;    output(stu,stuNum);    //按学号升序排序后输出    sort2(stu,stuNum);    cout<<"按学号升序排序后:"<<endl;    output(stu,stuNum);    return 0;}void calculate(Student s[],int n){    for(int i=0; i<n; i++)    {        s[i].grade=s[i].cpp+s[i].english+s[i].math;        s[i].average=(s[i].grade)/3;    }}void sort1(Student stu[],int n){    int i,j;    Student t;    for(j=0; j<n-1; j++)        for(i=0; i<n-j-1; i++)        {            if (stu[i].grade<stu[i+1].grade)            {                t=stu[i];                stu[i]=stu[i+1];                stu[i+1]=t;            }        }    return;}void sort2(Student stu[],int n){    int i,j,k;    Student t;    for(i=0; i<n-1; i++)    {        k=i;        for(j=i+1; j<n; j++)            if(strcmp(stu[j].num,stu[k].num)<0)               k=j;        t=stu[k];        stu[k]=stu[i];        stu[i]=t;    }    return;}void outputExcellent(Student stu[],int n){    for(int i=0; i<n; i++)    {        if(stu[i].grade>285&&(stu[i].cpp>=90)&&(stu[i].math>=90)&&(stu[i].english>90))        {            cout<<stu[i].name<<endl;        }    }}void output(Student s[],int n){    cout<<"学号"<<"                "<<"姓名"<<" "<<"c++成绩"<<" "<<"数学成绩"<<" "<<"英语成绩"<<" "<<"总分"<<" "<<"平均分"<<endl;    for(int i=0; i<n; i++)    {        cout<<s[i].num<<"       "<<s[i].name<<" "<<s[i].cpp<<" "<<s[i].math<<" "<<s[i].english<<" "<<s[i].grade<<"  "<<s[i].average<<endl;    }}
*样例输出:
*心得体会:说到底、学生就应该把习学好、加倍努力咯、同志们、c++不是全部没它不行啊!!

0 0