编写函数,t=1-1/2*2-1/3*3-...-1/m*m,C语言

#include <stdio.h>
double f(int m);
main()
{
int m;
printf("请输入m的值");
scanf("%d",&m);

printf("%f",f(m));

}
double f(int m)
{
int i, t=1;
for(i=1;1<=m;i++)
t=t+1-1/i*i;
return t;

}
谁能告诉我怎么错了

#include <stdio.h>

double fun(int m) {
double i, t = 0.0,sign = 1.0;
for(i = 1; i <= m; ++i) {
t += sign/(i*i);
sign = -sign;
}
return t;
}

int main() {
int m;
printf("请输入m的值:");
scanf("%d",&m);
printf("%lf\n",fun(m));
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-11
float i; //这里i的类型也要定义为float,否则除法(/)取整
float t=1.0; //同上
for(i=2;i<=m;i++) // 这里应该是i<=m,否则死循环

{
t=t-(1.0/(i*i)); //t=t+1-1/i*i;你这方式只对i为1,2时有效,你想想,当i为3时,
t=1-1/2*2 + 1 - 1/3*3 = 2-1/2*2 - 1/3*3, 所以i从2开始更简单

}本回答被网友采纳
第2个回答  推荐于2017-06-20
f()函数里面,
1,t你定义成int型了,不会保存小数结果.
2,里面,应该为t=t-1/(double)(i*i)
在for循环前面,赋值t=1本回答被网友采纳
第3个回答  2015-09-11
1.printf("%f",f(m));
这里的%f应换成%lf
2.for(i=1;1<=m;i++)

你把i错写成1了
第4个回答  2015-09-11
double f(int m)
{
int i, t=1;
for(i=1;i<=m;i++)
t=t-1/i*i;
return t;

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网