2013 C++第二周任务-有序结构体

来源:互联网 发布:阿里云不是学生 编辑:程序博客网 时间:2024/05/16 14:59
/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:text.cpp* 作者:王锴英* 完成日期: 2013年3月8日* 版本号: v1.0* 输入描述:已经在程序中初始化* 问题描述:将学生成绩信息存储在结构体数组中,对结构体排序并输出* 输出:按C++降序和按学号升序排序后的学生成绩单*/#include <iostream>#include <string>using namespace std;struct Score{char num[14];int cpp;int math;int english;};void sort1(Score [],int); void sort2(Score [],int);void output(Score [],int);int main(){Score score[]={{"201152501104",65,69 ,68 },{"201152501114",94 ,89 ,63 },{"201152501138",67 ,62 ,84 },{"201152501204",100 ,65 ,91 },{"201152501202",59 ,80 ,55 },{"201152501115",92 ,84 ,60 },{"201152501201",80 ,92 ,71 },{"201152501145",88 ,56 ,67 },{"201152501203",62 ,62 ,95 },{"201152501140",80 ,60 ,86 },{"201152501205",73 ,90 ,94}};int stuNum=sizeof(score)/sizeof(score[0]);//将所有同学按C++降序排序后输出sort1(score,stuNum);cout<<"按C++降序排序后:"<<endl;output(score,stuNum);//将所有同学按学号升序排序后输出sort2(score,stuNum);cout<<"按学号升序排序后:"<<endl;output(score,stuNum);return 0;}void sort1(Score score[],int stuNum)//将所有同学按C++成绩降序排序{struct Score a[2];  int i,j;      for(i=0;i<stuNum;i++)  {  for(j=0;j<stuNum-1;j++)              if(score[j].cpp<score[j+1].cpp)              {                  a[0]=score[j];                  score[j]=score[j+1];                  score[j+1]=a[0];              }      }      return ;  }  void sort2(Score score[],int stuNum)//将所有同学按学号升序排序{struct Score a[2];int i,j;for(i=0;i<stuNum;i++){for(j=0;j<stuNum-1;j++)if(strcmp(score[j].num,score[j+1].num)>0)//比较(strcmp()){a[0]=score[j];score[j]=score[j+1];score[j+1]=a[0];}}return ;}void output(Score score[],int stuNum){int j;for(j=0;j<stuNum;j++){cout<<"|"<<score[j].num<<" |"<<score[j].cpp<<" |"<<score[j].math<<" |"<<score[j].english<<endl;}return ;}


运行结果:

心得体会:

“int stuNum=sizeof(score)/sizeof(score[0]);”这一句不大懂,,,
原创粉丝点击