帮我看看我这个c语言程序设计题怎么错了吧

来源:百度知道 编辑:UC知道 时间:2024/06/18 00:29:57
要求:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。

我的过程是
#include "stdio.h"
double fun(double x[9])
{double sum,ave;
int i;
for(i=0;i<8;i++)
{ave=0;
ave=(x[i]+x[i+1])/2.0;
sum=sum+sqrt(ave);}
return sum;}
main()
{double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};
int i;
printf("\nthe original data is:\n");
for(i=0;i<9;i++) printf("%6.1f",a[i]); printf("\n\n");
s=fun(a);
printf("s=%f\n\n",s);}

我运行不出正确的结果,上面只是说“ sum=sum+sqrt(ave);”这句话是warning~~~~
谢谢啊!

sum需要初值,另外你的模块划分不太合理,以下是我的推荐格式:
double twoavg(double *a,int i){return (a[i]+a[i+1])/2;}
double sumavg(double *a,int length){int i;double sum=0;
for(i=0;i<length-1;i++) sum+=sqrt(twoavg(a,i));return sum;}
然后主函数里直接调用sumavg就可以了
另外还有个问题,你数学函数库没导入。

double fun(double x[9]) 这个函数内部的变量 sum 应该初始化为0。
即:
double sum=0,ave;

sum=sum+sqrt(ave);由于用的是+=
所以sum使用前需要清零,不然它的初始值是不可预料的。