第1个回答 2017-09-30
#include<stdio.h>
double fun(int s[])
{
/**********FOUND**********/
double sum=0.0; //修改为浮点数
int c=0,
i=0;
while(s[i]!=0)
{
if (s[i]>0)
{
sum+=s[i];
c++;
}
i++;
}
/**********FOUND**********/
sum/=c; // 除法符号不正确
/**********FOUND**********/
return sum; // 平均值为 sum
}
void main()
{
int x[1000];
int i=0;
do
{
scanf("%d",&x[i]);
}while(x[i++]!=0);
printf("%f\n",fun(x));
}
第2个回答 2014-06-15
第1个/**********FOUND**********/下应该改为:
double sum=0.0; //sum定义成整型,即使赋值给它实数,仍会被强制转换成整数
第2个/**********FOUND**********/下应该改为:
sum/=c; //除号写反了,除法的结果保存在sum中
第3个/**********FOUND**********/下应该改为:
return sum; //上式的平均数是保存在sum中的,应该返回sum的值本回答被提问者采纳
第3个回答 2014-06-15
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:计算数组元素中值为正数的平均值(不包括0)。
例如:数组中元素的值依次为39,-47,21,2,-8,15,0,
则程序的运行结果为19.250000。
------------------------------------------------------*/
#include<stdio.h>
double fun(int s[])
{
/**********FOUND**********/
double sum = 0.0; // sum 的类型改成 double
int c = 0, i = 0;
while (s[i] != 0)
{
if (s[i] > 0)
{
sum += s[i];
c++;
}
i++;
}
/**********FOUND**********/
if(c > 0) sum /= c; // 除号是 '/', 而且需要判断c是不是大于0
/**********FOUND**********/
return sum; // 应该返回sum
}
main()
{
int x[1000]; int i = 0;
do
{
scanf("%d", &x[i]);
} while (x[i++] != 0);
printf("%f\n", fun(x));
}
第4个回答 2014-06-15
#include<stdio.h>
double fun(int s[])
{
double sum=0.0; //小数需要使用浮点型
int c=0,i=0;
while(s[i]!=0)
{
if (s[i]>0)
{
sum+=s[i];
c++;
}
i++;
}
sum /= c; //sum\=c; c是正数的个数,除以是用/,这个语句相当于sum=sum/c,将平均值赋给了sum
return sum; //这里返回的应该是sum,
}
main()
{
int x[1000];int i=0;
do
{
scanf("%d",&x[i]);
}while(x[i++]!=0);
printf("%f\n",fun(x));
}