
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);
}
帮忙看一下 哪里出问题了 展开
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);
}
帮忙看一下 哪里出问题了 展开
6个回答
展开全部
修改后的代码如下:
#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;
}
#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都可以的。
展开全部
疑点一:float sum=0,item;这两个变量最好定义为double类型
疑点二:item没有赋初始值,导致在while()的条件判断时出错(这一条是程序不能正常计算的关键点)
疑点三:int main()是有返回值的,建议在程序的最后加上return 0;
疑点二:item没有赋初始值,导致在while()的条件判断时出错(这一条是程序不能正常计算的关键点)
疑点三:int main()是有返回值的,建议在程序的最后加上return 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该先找到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);
}
不然大数加小数会出问题的。
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上正解,注意while()括号中的条件是满足才执行,一旦不满足跳出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询