//模拟高考平行志愿投档
//要求:
/*
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\n",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("******************录取学校名称用学校代号显示********************\n");
printf("*****************************************************************\n");
printf("北京大学(200901)——限2人——最低分 627分\n清华大学(200902)——限3人——最低分 609分 \n南开大学(200903)——限2人——最低分 589分\n东北大学(200904)——限4人——最低分 545分\n四川大学(200905)——限5人——最低分 555分\n南京大学(200906)——限3人——最低分 578分\n贵州大学(200907)——限5人——最低分 545分 \n");
printf("*****************************************************************\n");
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++;
}
}
相关推荐
//模拟高考平行志愿投档 //要求: /* 1.在输入每个考生的成绩、志愿,学校的招生计划情况下能完成模拟平行志愿方式的高考志愿投档, 后输出每个学生的投档学校。如果考生不能投到某个学校,则输出“NO” 说明: 1....
图说平行志愿投档流程.doc
湖南省高考本科二批平行一志愿投档分数线文科.pdf
浙江省2011年艺术类第三批首轮平行志愿投档.doc
这个是2020年山东省平行志愿填报表,鉴于网上的志愿填报表都要花钱,现在在我这里可以免费下载,不需要花一分钱,需要的就来下载吧,别忘记关注李航洛月哦
山东省2022年普通类常规批第一次志愿投档情况表
高考平行志愿填报技巧及录取规则.doc
这是山东省高考志愿填报表,免费下载,需要的来下载吧,祝各位能够考进自己的理想大学,加油各位兄弟姐妹们
这个是2020年山东省平行志愿填报表,鉴于网上的志愿填报表都要花钱,现在在我这里可以免费下载,不需要花一分钱,需要的就来下载吧
全省份艺考生艺考志愿填报系统源码,根据综合分推荐院校,推荐专业,开通会员查看冲刺及稳妥院校等,投档线,往年录取查询,院校查询等,适合二次开发,志愿系统开发的可以参考修改或者拿来二次发开,谢谢
每个学校,每个专业的历年录取分数,对于填报志愿参考作用
swagger高考志愿咨询-高考志愿咨询平台-高考志愿咨询平台源码-高考志愿咨询平台java代码-高考志愿咨询平台设计与实现-基于springboot的高考志愿咨询平台-基于Web的高考志愿咨询平台设计与实现-高考志愿咨询网站-高考...
Java山东新高考志愿辅助决策系统源码 Java山东新高考志愿辅助决策系统源码 Java山东新高考志愿辅助决策系统源码 Java山东新高考志愿辅助决策系统源码 Java山东新高考志愿辅助决策系统源码 Java山东新高考志愿...
高考志愿咨询-高考志愿咨询平台-高考志愿咨询平台源码-高考志愿咨询平台java代码-高考志愿咨询平台设计与实现-基于ssm的高考志愿咨询平台-基于Web的高考志愿咨询平台设计与实现-高考志愿咨询网站-高考志愿咨询网站...
百度网盘高考志愿咨询-高考志愿咨询平台-高考志愿咨询平台源码-高考志愿咨询平台java代码-高考志愿咨询平台设计与实现-基于ssm的高考志愿咨询平台-基于Web的高考志愿咨询平台设计与实现-高考志愿咨询网站-高考志愿...
securecrt高考志愿咨询-高考志愿咨询平台-高考志愿咨询平台源码-高考志愿咨询平台java代码-高考志愿咨询平台设计与实现-基于springboot的高考志愿咨询平台-基于Web的高考志愿咨询平台设计与实现-高考志愿咨询网站-...