wu


私信TA

用户名:cncfvc

访问量:227228

签 名:

读研狗没有时间刷题了~~

等  级
排  名 3
经  验 37387
参赛次数 8
文章发表 265
年  龄 25
在职情况 学生
学  校 电子科技大学
专  业 通信工程

  自我简介:

写代码 真好玩 ~


参考代码:

#include<iostream>
#include<algorithm>
using namespace std;
struct T
{
  int grade;
  char flag;
}a[1005];//记录学生的成绩
struct TT
{
    int num;
    char flag;
}b[10];
bool cmp(TT c,TT d)//排序条件
{
    return  c.num<d.num;
}
int c[1006];
int main()
{
    //freopen("data.in.txt","r",stdin);
    //freopen("data.out.txt","w",stdout);
    int n;
    cin>>n;//成绩个数
    int Anum=0,Bnum=0,Cnum=0,Dnum=0,Enum=0; //记录每个成绩段的人数
    for(int i=0;i<n;i++)
    {
        cin>>a[i].grade;//输入成绩
    }
    for(int i=0;i<n;i++)//记录每个成绩段的人数
    {
        if(a[i].grade >=90&&a[i].grade <=100)
        {
              Anum++;
              a[i].flag='A';//给每个学生的成绩打上标记
        }
        if(a[i].grade >=80&&a[i].grade <=89)
        {
               Bnum++;
               a[i].flag='B';
        }
        if(a[i].grade >=70&&a[i].grade <=79)
        {
              Cnum++;
              a[i].flag='C';
        }
        if(a[i].grade >=60&&a[i].grade <=69)
        {
               Dnum++;
               a[i].flag='D';
        }
        if(a[i].grade <=59)
        {
             Enum++;
             a[i].flag='E';
        }
    } 
    int j=0;
    //将Anum,Bnum等数据输入到数组之中 好进行排序  同时也包括成绩的标记
    b[0].num=Anum;b[0].flag='A'; 
    b[1].num=Bnum;b[1].flag='B';
    b[2].num=Cnum;b[2].flag='C';
    b[3].num=Dnum;b[3].flag='D';
    b[4].num=Enum;b[4].flag='E';
    cout<<b[0].num<<" "<<b[1].num <<" "<<b[2].num <<" "<<b[3].num <<" "<<b[4].num <<endl;
    sort(b,b+5,cmp);//找出人数最多的那个成绩段
    cout<<b[4].num <<endl;
    for(int i=0;i<n;i++)
    {
        if(a[i].flag==b[4].flag)//如果学生在这个成绩段 
        {
            c[j++]=a[i].grade;//把学生的成绩输入到数组c中
        }
    }
    sort(c,c+j);将学生的成绩排序之后输出
    for(int i=j-1;i>=0;i--)
    {
        cout<<c[i]<<" ";
    }
}


 

0.0分

0 人评分

  评论区

  • «
  • »