模擬高考平行志願投檔

//模擬高考平行志願投檔
//要求:
/*
1.在輸入每一個考生的成績、志願,學校的招生計劃狀況下能完成模擬平行志願方式的高考志願投檔,
後輸出每一個學生的投檔學校。若是考生不能投到某個學校,則輸出「NO」
說明:
1.成績總分由語文、數學、英語和綜合四門課程組成,成績排名先按總分,再按語文、數學、英語和
綜合進行。
2.學生志願可選擇3個學校,若是學校名稱輸錯則該考生沒法投檔。
3.平行志願投檔規則爲:平行志願按分數優先原則投檔。即首先將同一科類批次線上的「自由可投」的
考生按投檔成績從高分到低分排序投檔,當遇到多名考生特徵成績相同時,依次按語、數、外、綜合科
目的成績從高分到低分排序投檔;對單個考生投檔時,根據考生填報的平行志願中的院校志願順序,投
檔到排序相對在前且有計劃餘額的院校。*/
#include<stdio.h>
#include<math.h>
#include<String.h>c++

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;code

 

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;
}
}it

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;io

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++;
}float

///////////////////////////////////// 選擇第二志願同窗校的學生查詢查詢

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++;
}di

///////////////////////// //選擇第三志願同一學校的學生查詢
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++;
}

 

 

 

 

 

}

相關文章
相關標籤/搜索