问题 问答题

请编写函数fun(),它的功能是计算:s=(1-ln(1)-ln(2)-ln(3)-…-ln(m))2
s作为函数值返回。
在C语言中可调用log(n)函数求ln(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("%f\n",fun(15));

答案

参考答案:double fun(int m)
{
  int i;
double s=1.0;
for(i=1;i<=m;i++)
s=s-log(i); /*计算s=1-ln(1)-ln(2)-ln(3)-…-ln(m)*/
return (s*s); /*对s求平方并返回*/
}

解析: 首先,题目要求计算1依次减去1到M的对数,可用从1到M的循环,每次循环都减一个数的对数。该题需要注意,log()函数的形式参数应浩如烟海double型变量,用于循环的基数变量为整数,需要进行强制转换。最后在返回的时求平方。

单项选择题
多项选择题