2 qq 38210632 qq_38210632 于 2017.09.02 13:45 提问

谁能告诉我错在哪里,谢了

#include
#include
int fun(int n)
{
int i;
int s = 0;
for (i = 0; i >= n; ++i)
{
s += i;
}
return s;
}
int main()
{
int i,s = 0;
for (i = 0; i < 50; ++i)
{
s += double(1.0/fun(i));
}
printf("%f", s);
return 0;
}

8个回答

xiao_dondon
xiao_dondon   2017.09.02 13:51
已采纳

fun()函数的for循环中应该改为 i<=n. 否则的话fun函数返回0, 0不能作为分母。

xiao_dondon
xiao_dondon 改在楼下,你复制运行以下
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
weixin_40079525
weixin_40079525 回复xiao_dondon: 第一次执行fun函数时,n=0,那么这个循环是无限循环的啊,因为i总是大于等于0的啊
3 个月之前 回复
xiao_dondon
xiao_dondon 回复qq_38210632: main函数中的for循环, i从1开始,不要从0开始。
3 个月之前 回复
qq_38210632
qq_38210632 回复xiao_dondon: 但是我改了结果还是零。
3 个月之前 回复
qq_38210632
qq_38210632 回复xiao_dondon: 谢了
3 个月之前 回复
gbb1065202029
gbb1065202029 真的是
3 个月之前 回复
gbb1065202029
gbb1065202029 是啊
3 个月之前 回复
Czhenya
Czhenya   2017.09.02 14:14

#include

int fun(int n)
{
int i,s = 0;
for (i = 0; i >= n; ++i)
{
s += i;
}
return s;
}

int main()
{
int i, s = 0;
for (i = 0; i < 50; ++i)
{
s += double(1.0/fun(i));
}
printf("%f", s);
return 0;
}

qq_38210632
qq_38210632 回复Czhenya: 谢了
3 个月之前 回复
qq_38210632
qq_38210632 回复Czhenya: 谢了
3 个月之前 回复
Czhenya
Czhenya   2017.09.02 14:14

图片说明
最后一个标点打错了,还有就是头文件没打全,改成上面这样就可以使用了

qq_38210632
qq_38210632 得不出结果
3 个月之前 回复
qq_37466661
qq_37466661   2017.09.02 15:45

最后printf那边试试%lf,因为上面有double类型的。

qq_39976218
qq_39976218   2017.09.02 15:51

怎么才嫩有几分啊!!!

xiao_dondon
xiao_dondon   2017.09.03 12:11

#include

int fun(int n)
{
int i;
int s = 0;
for (i = 0; i <= n; ++i)
{
s += i;
}
return s;
}
int main()
{
int i = 0;
double s = 0;
for (i = 1; i < 50; ++i)
{
s += double(1.0/fun(i));
}
printf("%f", s);
return ;
}

xiao_dondon
xiao_dondon include后面加上“<stdio.h>”,不要引号
3 个月之前 回复
tjk123456
tjk123456   2017.09.03 17:59

s+=(double)(1.0/fun(i));
此处应该需要给double加上括号

clm2017
clm2017   2017.09.15 21:07

控制台说明double转int时异常,
double(1.0/fun(i));在这里,所以说直接去掉double为
s+=(1.0/fun(i));这样就好了

Csdn user default icon
上传中...
上传图片
插入图片