{
double result=0;
for(int i=0;i<count-1;i++) //排序
for(int j=i;j<count;j++)
{
if(p[i]<p[j])
{
int temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
printf("評委打分按順序:");
for(int m=0;m<10;m++) //顯示排序後結果
printf("%d ",p[m]);
printf("\n");
for(int k=1;k<count-1;k++) //求出去掉首尾的平均分
result+=p[k];
result/=count-2;
return result;
}
void main()
{
printf("請輸入10組評分:\n");
int p[10];
int i;
for(i=0;i<10;i++) //輸入評分
{
printf("輸入評委%d打分:",i+1);
scanf("%d",&p[i]);
}
double result=Aver(p,10); //計算平均分
printf("\n平均分為%5.2f\n",result);
}
回答者: 火駒 - 江湖少俠 七級 2009-6-11 17:17
樓上的 沒用到指針
#include<stdio.h>
void JiaoHuan(float *a,float *b)//交換兩個數的值,指針型形參
{
float temp;
temp=*a;
*a=*b;
*b=temp;
}
void main()
{
float fen[10];
float sum,chengji;
int i,j;
printf("請輸入評委打的分數!(10個)\n");
for(i=0;i<10;i++)//從屏幕輸入打分
{
scanf("%f",&fen[i]);
}
for(i=1;i<10;i++)//冒泡排序 升序
{
for(j=0;j<10-i;j++)
{
if(fen[j]>fen[j+1])
{
JiaoHuan(&fen[j],&fen[j+1]);
}
}
}
sum=0.0;
for(i=1;i<9;i++)//去掉最高、最低分加和
{
sum+=fen[i];
}
chengji=sum/8;//算平均值
printf("Result: %f\n",chengji);
}
回答者: lpk_323 - 江湖新秀 五級 2009-6-11 17:29
#include <stdio.h>
#define SC_NUM 10 /* 宏定義,10個數據 */
float average(int *arr); /* 求平均分函數 */
void sort(int *arr); /* 排序函數 */
int main (int argc, char *argv[])
{
int score[SC_NUM];
printf("輸入評委評分:");
int i;
for (i = 0; i < SC_NUM; i++)
scanf("%d", score + i);
sort(score);
printf("有效分數:\n");
for (i = 1; i < SC_NUM - 1; i++)
printf("%d ", *(score + i));
printf("\n平均分數:\n%.1f\n", average(score));
return 0;
}
/*
* 選擇排序法對數組 arr 排序
*/
void sort(int *arr)
{
int i, j, min_pos;
for (i = 0; i < SC_NUM - 1; i++)
{
min_pos = i;
for (j = i + 1; j < SC_NUM; j ++)
{
if (arr[j] < arr[min_pos])
min_pos = j;
}
if (min_pos != i)
{
int tmp = arr[i];
arr[i] = arr[min_pos];
arr[min_pos] = tmp;
}
}
}
float average(int *arr)
{
int i;
float ave = 0.0f;
for (i = 1; i < SC_NUM - 1; i++)
{
ave += (float)arr[i];
}
return ave / 8.0f;
}