#include
#include
#include //為了可使用字串所加的標頭檔

/*
<1> 85分(完成)
多宣告一個姓名陣列
char name[3][]
讓使用者能夠輸入每位同學的姓名 結果顯示如下
姓名 計概 數學 英文 總分 平均 最高 最低 排名
--------------------------------------------
jone xx xx xx xx xx xx xx xx

<2> +10
再score多增加一行 存放排名
利用counting sort 將每位同學的排名找出(第1名表示總分最高)
修改counting sort的程式內容

<3> +5(完成)
多增加同學的個數 最少5位

<4> +15
讓使用者輸入名次 將該名次的同學姓名及所有成績列出
*/


int main()
{
int i,j,num[5];
float score[5][9]; //從[3][7]變成[5][9] 增加了兩位同學、顯示姓名以及排名的功能
float high,low;//新增加的宣告,為了檢視最高及最低分所設的
char name[5][100];//新增加的宣告,為了使用者輸入姓名(使用gets或scanf都可)


for (i=0;i<=4;i++)//i=4 為5位同學 <0~4>
for (j=0;j<=8;j++)//j=8 為9個欄位 <0~8>
score[i][j]=0.0;//預設score內的資料預設為0


//以下為輸入成績的程式

for(i=0;i<=4;i++)//i=4 為5位同學 <0~4>
{

printf("\n請輸入第 %d 位同學的姓名:",i+1);
scanf("%s",&name[i]);

for(j=0;j<=2;j++)//為了輸入姓名&成績 所用的
{

if(j==0)
{
printf("\n請輸入第 %d 位同學的計概成績:",i+1);
scanf("%f",&score[i][0]);
}
else if(j==1)
{
printf("接著請輸入第 %d 位同學的數學成績:",i+1);
scanf("%f",&score[i][1]);
}
else
{
printf("最後請輸入第 %d 位同學的英文成績:",i+1);
scanf("%f",&score[i][2]);
}
}
}

//計算總分及平均

for(i=0;i<=4;i++) //i=2 計概 數學 英文的成績
{
for(j=0;j<=2;j++)
{
score[i][3]=score[i][3]+score[i][j];
}
score[i][4]=score[i][3]/3;

}
//排名

for(i=0;i<=5;i++)
{
for(j=i+1;j<5;j++)
{
if(score[i][3]>score[j][3])
{
num[i]++;
}
else if(score[i][3] {
num[j]++;
}
}
}

for(i=0;i<5;i++)
{
for(j=0;j<8;j++)
{
if(num[i]==j)
score[i][7]=5-j;
}
}

//顯示最高分、最低分

for(i=0;i<=4;i++) //i=4 為5位同學 <0~4>
{
high=score[i][0];
low =score[i][0];
for(j=1;j<=2;j++)
{
if(score[i][j]>=high)
{high=score[i][j];}
if(score[i][j]<= low)
{ low=score[i][j];}
}
score[i][5]=high;
score[i][6]= low;
}

printf("\n\n**************『成績列表』****************\n\n");

//顯示結果

printf("\n姓名\t計概\t數學\t英文\t總分\t平均\t最高\t最低\t排名\t\n");
printf("----------------------------------------------------------------------\n");
for(i=0;i<=4;i++)//i=4 為5位同學 <0~4>
{
printf("%s\t",name[i]);

for(j=0;j<=6;j++)//顯示到[i][6]的資料 所以才用J<=6
{
printf("%.1f\t",score[i][j]);
}
printf("%.0f\t",score[i][7]);
printf("\n");

}

system("PAUSE");
}


全站熱搜

Joy 發表在 痞客邦 留言(0) 人氣()