陣列實現學生成績錄入、求最高分、最低分、平均分和排序
/*
使用陣列實現10名學生的成績錄入,並輸出這10名學生中成績的
最高分
最低分
平均分
按照分數從大到小排序
思考:
如何實現從小到大排序?
如果學院有5個班,每個班30人,如何處理?
求所有成績中的最高分是哪個班的,第幾個學生,如何處理?
*/
#include <stdio.h>
#define NUM 10
int main(int argc, const char * argv[])
{
//使用陣列實現10名學生的成績錄入並輸出
int score[NUM];
for (int i = 0; i < NUM; i ++)
{
printf("請輸入第%d名學生的成績:",i+1);
scanf("%d",&score[i]);
}
for (int i = 0; i < NUM; i ++)
{
printf("\n第%d名學生的成績為:%d",i+1,score[i]);
}
//最高分
int MAX = score[0];
int idh = 1;
for (int i = 0; i < NUM; i ++)
{
if (score[i]>=MAX)
{
MAX = score[i];
idh = i + 1;
}
}
printf("\n\n最高分為第%d名學生為%d分\n",idh,MAX);
//最低分
int MIN = score[0];
int idl = 1;
for (int i = 0; i < NUM; i ++)
{
if (score[i]<=MIN)
{
MIN = score[i];
idl = i + 1;
}
}
printf("\n最低分為第%d名學生為%d分\n",idl,MIN);
//平均分
float sum = 0;
for (int i = 0; i < NUM; i ++)
{
sum = sum + score[i];
}
printf("\n學生的平均成績為:%f\n",sum/NUM);
//按照分數從大到小排序
for (int i = 0; i < NUM - 1; i ++)
{
for (int j = i + 1; j < NUM; j ++)
{
if (score[i] <= score[j])
{
int t =score[i];
score[i] = score[j];
score[j] = t;
}
}
}
for (int i = 0; i < NUM; i ++)
{
printf("\n第%d名學生的成績為:%d",i+1,score[i]);
}
return 0;
}