从键盘上输入一组分数,以输入“-1”结束输入,去掉一个最高分去掉一个最底分,然后求平均分
编译能通过,但是输入数据以后 回到用户屏幕 没有结果 只有提示:floaing point error:divide by 0
请帮偶看看,错在哪里了
先谢谢了!!!
#include "stdio.h"
int aa(float *s) //定义函数找出最大数所对应的下标 并返回
{
int i,n; float max=*s;
for(i=0; ;i++)
{ if(*s==-1) break; if(max<=*s) {max=*s; n=i; }
s++;
}
return n;
}
int bb(float *s) //定义函数找出最小数所对应的下标 并返回
{
int i,n; float min=*s;
for(i=0; ;i++)
{ if(*s==-1) break; if(min>=*s) {min=*s; n=i; }
s++;
}
return n;
}
main()
{
int i=0,a,b; float a1[100],avg=0,c,d;
printf("\n\nInput some numbers :");
while(1) //使用循环语句输入数据 ,直到输入-1 输入结束
{ scanf("%f",&a1[i]);
if(a1[i]<-2||a1[i]>100)
{ printf("This number is wrong,please enter it again!!!");
scanf("%f",&a1[i]);
} i++; if(a1[i-1]==-1) break;
}
a=aa(a1); b=bb(a1); //调用函数
for(i=a; ;i++) { if(a1[i+1]==-1) break; a1[i]=a1[i+1]; } // 将最大数去掉 可能这两句有问题
for(i=b; ;i++) { if(a1[i+1]==-1) break; a1[i]=a1[i+1]; } // 将最小数去掉
for(i=0; ;i++) { if(a1[i]==-1) break; avg+=a1[i]; avg/=i-1; } //求平均分
printf("\n\nThe avg=%.2f\n",avg);
for(i=0; ;i++) { if(a1[i]==-1) break; printf(" %.2f",a1[i]); } //输出去掉最大和最小数后的数组
getch();
}
大家看后可以复制到 C软件中运行一下 ,谢谢!!!
[此贴子已经被作者于2006-4-10 13:17:56编辑过]