一.題目大概:
某次校園歌唱比賽,有10位評委打分,打分規則是:去掉一個最低分,去掉一個最高分,剩下的8個分數之平均分就是該選手的分數。
二.算法分析:
1.第一種:
(1)定義一個浮點型數組score,以及三個浮點型變量max、min、sum。
(2)利用一個for循環語句将10次的分數輸入到數組中,并同時給max、min賦予第一次的值(友善後面的取最大值與最小值)。
(3)再利用一個for循環語句,對這十次分數取最大值與最小值(用兩個if語句來實作),同時将這十次的分數的和給求出。
(4)利用printf語句将最大值與最小值列印出來,以及将(sum-max-min)/8這個公式計算并列印結構出來。
2.第二種:
(1)定義四個浮點型變量score、max、min、sum(初始化為0)。
(2)利用一個for循環語句,将十次成績輸入進來(如果i為1,說明是第一次輸入成績,則給min、max賦予初值,如果不是,則進行比較,然後取最大值與最小值)。
(3)在循環中進行求和,求sum。
(4)利用printf語句将最大值與最小值列印出來,以及将(sum-max-min)/8這個公式計算并列印結構出來。
三.代碼實作:
(1)第一種:
#include<stdio.h>
int main()
{
float score[10];
float max,min,sum=0;
printf("請輸入十次評分:");
for(int i=0;i<10;i++)
{
scanf("%f",score+i);
if(i==0)
max=min=score[i];
}
for(int i=0;i<10;i++)
{
if(max<score[i])
max=score[i];
if(min>score[i])
min=score[i];
sum+=score[i];
}
printf("最大分數為%.2f\n",max);
printf("最小分數為%.2f\n",min);
printf("最終分數為%.2f\n",(sum-max-min)/8);
return 0;
}
(2)第二種:
#include<stdio.h>
int main()
{
float score,min,max,sum=0;
printf("請輸入十次評分:");
for(int i=1;i<=10;i++)
{
scanf("%f",&score);
if(i==1)
max=min=score;
else
{
if(max<score)
max=score;
if(min>score)
min=score;
}
sum+=score;
}
printf("最佳成績為:%.2f\n",max);
printf("最差成績為:%.2f\n",min);
printf("最終成績為:%.2f\n",(sum-max-min)/8);
return 0;
}