A-A+
请编写函数fun() 它的功能是计算:s=(1-In(1)-In(2)-In(3)-…-1n
问题详情
请编写函数fun(),它的功能是计算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2
s作为函数值返回。
在C语言中可调用log(n)函数求In(n)。log函数的引用说明是double log(double x)。
例如,若m的值为15,则fun()函数值为723.570801。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <conio.h>
include <stdio.h>
include <math.h>
double fun(int m)
{
}
main()
{
clrscr();
printf("%fn",fun(15));
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:double fun(int m){ int i;double s=1.0;for(i=1;i<=m;i++)s=s-log(i); /*计算s=l-In(1)-In(2)-In(3)-…-In(m)*/return (s*s); /*对s求平方并返回*/}
double fun(int m){ int i;double s=1.0;for(i=1;i<=m;i++)s=s-log(i); /*计算s=l-In(1)-In(2)-In(3)-…-In(m)*/return (s*s); /*对s求平方并返回*/} 解析:首先,题目要求计算1依次减去1到M的对数,可用从1到M的循环,每次循环都减一个数的对数。该题需要注意,log()函数的形式参数应浩如烟海double型变量,用于循环的基数变量为整数,需要进行强制转换。最后在返回的时求平方。