zoukankan      html  css  js  c++  java
  • 模拟高考平行志愿投档

    //模拟高考平行志愿投档
    //要求:
    /*
    1.在输入每个考生的成绩、志愿,学校的招生计划情况下能完成模拟平行志愿方式的高考志愿投档,
    后输出每个学生的投档学校。如果考生不能投到某个学校,则输出“NO”
    说明:
    1.成绩总分由语文、数学、英语和综合四门课程组成,成绩排名先按总分,再按语文、数学、英语和
    综合进行。
    2.学生志愿可选择3个学校,如果学校名称输错则该考生无法投档。
    3.平行志愿投档规则为:平行志愿按分数优先原则投档。即首先将同一科类批次线上的“自由可投”的
    考生按投档成绩从高分到低分排序投档,当遇到多名考生特征成绩相同时,依次按语、数、外、综合科
    目的成绩从高分到低分排序投档;对单个考生投档时,根据考生填报的平行志愿中的院校志愿顺序,投
    档到排序相对在前且有计划余额的院校。*/
    #include<stdio.h>
    #include<math.h>
    #include<String.h>

    typedef struct Record{ //成绩表结构体定义
    int S_numble; //学生准考证号
    float S_literature; //语文
    float S_math; //数学
    float S_english; //英语
    float S_synthesize; //综合
    float S_all; //总分
    int S_first; //第一平行志愿
    int S_second; //第二平行志愿
    int S_third; //第三平行志愿
    char S_enroll; //=1被录取=0没录取
    }Srecord;

    typedef struct Enroll{ //招生表结构体定义
    int N_numble; //招生人数
    float N_grade; //最低分数线
    int code; //学校代号
    }E_college;

    void Rank( Record srt[5],int rry[],int h)
    { int i,j,temp;

    for(i=1;i<h;i++)
    {
    for(j=i+1;j<h+1;j++)
    {

    if(srt[rry[i]].S_all<srt[rry[j]].S_all)
    {
    temp=rry[i];
    rry[i]=rry[j];
    rry[j]=temp;
    }
    else if(srt[rry[i]].S_all==srt[rry[j]].S_all)
    {
    if(srt[rry[i]].S_literature<srt[rry[j]].S_literature) //总分相同,
    {
    temp=rry[i];
    rry[i]=rry[j];
    rry[j]=temp;
    break;
    }
    else if(srt[rry[i]].S_literature==srt[rry[j]].S_literature) //语文分数相同,判断数学是否相同
    {
    if(srt[rry[i]].S_math<srt[rry[j]].S_math )
    {
    temp=rry[i];
    rry[i]=rry[j];
    rry[j]=temp;
    break;
    }
    else if(srt[rry[i]].S_math==srt[rry[j]].S_math) //语文,数学分数相同,判断英语分数是否相同
    {
    if(srt[rry[i]].S_english<srt[rry[j]].S_english)
    {
    temp=rry[i];
    rry[i]=rry[j];
    rry[j]=temp;
    break;
    }
    else if(srt[rry[i]].S_english==srt[rry[j]].S_english) //语文,数学,英语分数相同,判断综合分数是否相同
    {
    if(srt[rry[i]].S_all<srt[rry[j]].S_all)
    {
    temp=rry[i];
    rry[i]=rry[j];
    rry[j]=temp;
    }
    }
    }
    }
    }
    }


    }

    }
    void Disply(Record S[100],int ry[5],int m,int n,int p,int t)
    { int c;
    for(c=1;c<=p&&c<n;c++)
    {
    if(ry[c]>0&&ry[c]<10)
    {
    S[ry[c]].S_enroll=1;
    printf("准考证号为%d——第%d平行志愿录取——录取学校代号%d----录取分数%f ",S[ry[c]].S_numble,t,m,S[ry[c]].S_all);
    }
    }

    for(c=1;c<n;c++)
    {
    ry[c]=0;
    }
    }

    void main()
    {
    int MM,i,j,k,p,grade,w;
    int arry[5];
    printf("******************录取学校名称用学校代号显示******************** ");
    printf("***************************************************************** ");
    printf("北京大学(200901)——限2人——最低分 627分 清华大学(200902)——限3人——最低分 609分 南开大学(200903)——限2人——最低分 589分 东北大学(200904)——限4人——最低分 545分 四川大学(200905)——限5人——最低分 555分 南京大学(200906)——限3人——最低分 578分 贵州大学(200907)——限5人——最低分 545分 ");
    printf("***************************************************************** ");
    Srecord srecord[100];
    E_college Ecollege[10];
    printf("请输入学生个数");
    scanf("%d",&MM);
    for(i=1;i<=MM;i++)
    {
    printf("请输入学生准考证号(4位):");
    scanf("%d",&srecord[i].S_numble);
    printf("请输入学生 语文成绩:");
    scanf("%f",&srecord[i].S_literature);
    printf("请输入学生 数学成绩:");
    scanf("%f",&srecord[i].S_math);
    printf("请输入学生 英语成绩:");
    scanf("%f",&srecord[i].S_english);
    printf("请输入学生 综合成绩:");
    scanf("%f",&srecord[i].S_synthesize);
    srecord[i].S_all=srecord[i].S_literature+srecord[i].S_math+srecord[i].S_english+srecord[i].S_synthesize;
    printf("请输入学生 第一志愿学校代号(20090**):");
    scanf("%d",&srecord[i].S_first);
    printf("请输入学生 第二志愿学校代号(20090**):");
    scanf("%d",&srecord[i].S_second);
    printf("请输入学生 第三志愿学校代号(20090**):");
    scanf("%d",&srecord[i].S_third);
    srecord[i].S_enroll=0;
    }
    j=200900;
    k=1;
    for(i=1;i<10;i++)
    {
    Ecollege[i].code=j+i;

    }
    Ecollege[1].N_numble=2;
    Ecollege[1].N_grade=627;
    Ecollege[2].N_numble=3;
    Ecollege[2].N_grade=609;
    Ecollege[3].N_numble=2;
    Ecollege[3].N_grade=589;
    Ecollege[4].N_numble=4;
    Ecollege[4].N_grade=545;
    Ecollege[5].N_numble=5;
    Ecollege[5].N_grade=555;
    Ecollege[6].N_numble=3;
    Ecollege[6].N_grade=578;
    Ecollege[7].N_numble=5;
    Ecollege[7].N_grade=545;

    j=j+1;
    w=1;
    ////////////////////////选择第一志愿同一学校的学生查询
    while(j<200908)
    {
    for(i=1;i<=MM;i++)
    {

    if(j==srecord[i].S_first)
    if(srecord[i].S_all >=Ecollege[j-200900].N_grade)
    if(srecord[i].S_enroll==0)
    {
    arry[k]=i;
    k++;
    }

    }
    Rank(srecord,arry,k);
    p=Ecollege[j-200900].N_numble;
    Disply(srecord,arry,j,k,p,w);
    j++;
    }

    ///////////////////////////////////// 选择第二志愿同学校的学生查询

    j=200901;
    k=1;
    w=2;
    while(j<200908)
    {
    for(i=1;i<=MM;i++)
    {

    if(j==srecord[i].S_second)
    if(srecord[i].S_all >=Ecollege[j-200900].N_grade)
    if(srecord[i].S_enroll==0)
    {
    arry[k]=i;
    k++;
    }

    }

    Rank(srecord,arry,k);
    p=Ecollege[j-200900].N_numble;
    Disply(srecord,arry,j,k,p,w);
    j++;
    }

    ///////////////////////// //选择第三志愿同一学校的学生查询
    w=3;
    j=200901;
    k=1;
    while(j<200908)
    {
    for(i=1;i<=MM;i++)
    {

    if(j==srecord[i].S_third)
    if(srecord[i].S_all>=Ecollege[j-200900].N_grade)
    if(srecord[i].S_enroll==0)
    {
    arry[k]=i;
    k++;
    }

    }

    Rank(srecord,arry,k);
    p=Ecollege[j-200900].N_numble;
    Disply(srecord,arry,j,k,p,w);
    j++;
    }


    }

  • 相关阅读:
    javascript基础
    html基础
    css基础
    django-session和cookie
    rest架构
    django-models
    django-templates
    Alignment
    ural 1225.Flags
    ural 1009. K-based Numbers
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3819569.html
Copyright © 2011-2022 走看看