一道C语言编程题,帮我看看

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:58:54
请编写函数fun,其功能是:计算并输出给定数组(长度为9)中,每相邻两个元素的平均值的平方根之和。
例如,若给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,则输出应为s=35.951014。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#include <math.h>
double fun(double x[9])
{

}

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;
FILE *out;
printf("\nThe original data is : ");
for(i=0;i<9;i++)
printf("%6.1f",a[i]);
printf("\n\n");
s=fun(a);
printf("s=%f\n\n",s);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%f",s);
fclose(out);
/******************************/
}

【参考答案】
double fun(double x[9])
{
double sum=0.0;
int i,j=1;
for(i=0;i<9;i++)

参考答案,其实写的很不简洁,if(j<=8) j++,都是多余的,没有什么用,如果说有用,仅仅是用来控制循环次数的,你可以向如下这样写。
double fun(double x[9])
{
double sum = 0.0;
for(int i = 0; i < 8; i++)
{
sum += sqrt((x[i]+x[i+1])/2.0);
}
return sum;
}
你的答案错在i<=9上,应该是i<9,也就是说只需循环8次,就可以了。