问题 填空题

给定程序MODI1.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值:

例如,若m中的值为5,则应输出0.536389。

请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

文件MODI1.C内容如下:

#include<stdio.h>

double fun(int m)

double y=1.0;

int i;

/**********found**********/

for(i=2;i<m;i++)

/**********found**********/

y-=1/(i*i);

return(y);

void main( )

int n=5;

printf("\nThe result is%1f\n",fun(n));

答案

参考答案:第1处:将“for(i=2;i<m;i++)”改为“for(i=2;i<=m;i++)”。
第2处:将“y-=1/(i*i);”改为“y-=1.0/(i*i);”。

解析:

题目要求计算公式[*]的值,在程序中公式的值存放在变量y中,且y的初值为1,所以,循环是从公式的第二项开始,分母的变化规律是:从2开始循环到m(包括m在内),所以循环控制变量i的值应该从2开始循环到m结束。第1处错误是循环条件出错,应该使用“<=”。第2处错误可能不太容易发现,由于变量i是整型,1也是一个整数,所以本程序中“1/(i*i)”的结果是0,想要得到实除的结果,最简单的办法就是把“1”改为“1.0”。

单项选择题
单项选择题