#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;
}
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开始更简单
}本回答被网友采纳
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本回答被网友采纳
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了
这里的%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;
}
{
int i, t=1;
for(i=1;i<=m;i++)
t=t-1/i*i;
return t;
}