C语言程序改错,解答详细必定给分采纳

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:计算数组元素中值为正数的平均值(不包括0)。
例如:数组中元素的值依次为39,-47,21,2,-8,15,0,
则程序的运行结果为19.250000。

------------------------------------------------------*/
#include<stdio.h>
double fun(int s[])
{
/**********FOUND**********/
int 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 c;
}

main()
{
int x[1000];int i=0;
do
{
scanf("%d",&x[i]);}
while(x[i++]!=0);
printf("%f\n",fun(x));
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
double fun(int s[])
{
double sum = 0.0; //整形这样赋值>?肯定错误了,改为double类型
int c = 0, i = 0;
        //我头像,惊喜
while (s[i] != 0)
{
if (s[i]>0)
{
sum += s[i];
c++;
}
i++;
}
sum /= c; //斜杠错误
return sum; //求余数应该返回sum
}

int main()
{
int x[1000]; int i = 0;
do
{
scanf("%d", &x[i]);
} while (x[i++] != 0);
printf("%lf\n", fun(x));
system("pause");
return 0;
}

错的地方代码上注释好了,还有就是设计思路要更改,0不一定出现在最后面.

温馨提示:答案为网友推荐,仅供参考
第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));
}

相似回答