c语言编程求1+1/2+1/4+1/7+1/11+1/16.......当第n项的值小于10^-5时求和结束

#include<stdio.h>intmain(){inta=1,count=0;floatsum=0,item;while(item<1e-5){count++;it... #include<stdio.h>
int main()
{
int a=1,count=0;
float sum=0,item;
while(item<1e-5)
{
count++;
item=1.0/a;
sum=sum+item;
a=a+count;
}
printf("sum=%f",sum);
}
帮忙看一下 哪里出问题了
展开
 我来答
wanglixin1001
2013-01-01 · TA获得超过4175个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:1073万
展开全部
修改后的代码如下:
#include<stdio.h>
int main()
{
int a=1,count=0;
float sum=0,item=1.0; // item应该给一个初值
while(item>=1e-5) // 结束条件是项小于1e-5,所以item>=1e-5时应该条件成立继续运算才对
{
count++;
item=1.0/a;
sum=sum+item;
a=a+count;
}
printf("sum=%f",sum);
return 0;
}
追问
能否告诉我一下    为什么item要给一个初值呢?
追答
不给初值的话,那么item的值开始的时候没定义,怎么能确保进入第一次while循环呢?
要保证while(item >= 1e-5)开始的时候就能成立,所以给了一个1的初值,只要大于1e-5都可以的。
liao_qi
2013-01-01 · 超过13用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:31.1万
展开全部
疑点一:float sum=0,item;这两个变量最好定义为double类型
疑点二:item没有赋初始值,导致在while()的条件判断时出错(这一条是程序不能正常计算的关键点)
疑点三:int main()是有返回值的,建议在程序的最后加上return 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
御含灵9r
2013-01-01 · TA获得超过4157个赞
知道大有可为答主
回答量:3007
采纳率:0%
帮助的人:2883万
展开全部
应该先找到a,然后反过来加
不然大数加小数会出问题的。

#include<stdio.h>
int main()
{
int a=1,count=0;
float sum=0,item;
while(item<1e-5)
{
count++;
item=1.0/a;
/*sum=sum+item;*/
a=a+count;
}

while(a>0)
{
a=a-count;

count--;
sum+=1.0/a;
}

printf("sum=%f",sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
o00olwjo00o
2013-01-01 · 超过13用户采纳过TA的回答
知道答主
回答量:50
采纳率:100%
帮助的人:29.9万
展开全部
楼上正解,注意while()括号中的条件是满足才执行,一旦不满足跳出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
459520690
2013-01-01 · 超过33用户采纳过TA的回答
知道答主
回答量:162
采纳率:0%
帮助的人:111万
展开全部
#include<stdio.h>
int main(){
int a=1,count=0;
float sum=0,item=1;
while(item>=1e-5){
count++;
item=1.0/a;
sum=sum+item;
a=a+count;
}
printf("sum=%f",sum);
}
更多追问追答
追问

还是不行啊,结果不对啊

追答

你看我的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式