编写c程序求1-1/2+1/3....+1/99_1/100的值

#include<stdio.h>voidmain(){inti,a=1;floatsum=1;for(i=1;i<100;i++){a=a+1;if(a%2==0)su... #include <stdio.h>
void main()
{
int i,a=1;
float sum=1;
for(i=1;i<100;i++)
{
a=a+1;
if(a%2==0)sum=sum-1/a;
else
sum=sum+1/a;
}
printf("end=%f\n",sum);
}
哪错了
展开
 我来答
11235813wang
推荐于2016-11-02 · 超过87用户采纳过TA的回答
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:110万
展开全部
应该是这样

1/a 由于没有类型转换,一直为0
1.0/a 由于1.0为float型,所以会有类型转换,也就有值了,不会一直为0

#include <stdio.h>
void main()
{
int i,a=1;
float sum=1;
for(i=1;i<100;i++)
{
a=a+1;
if(a%2==0)sum=sum-1.0/a;
else
sum=sum+1.0/a;
}
printf("end=%f\n",sum);
}

这样也可以
#include <stdio.h>
void main()
{
int i ;
float sum=1 , a ;
for(i=1;i<100;i++)
{
a=1/float(i+1) ;
if((i+1)%2==0) sum=sum-a ;
else
sum=sum+a;
}
printf("end=%f\n",sum);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hutt157
2014-10-10 · TA获得超过165个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:150万
展开全部
float tag=1;//设置一个标志位,其他的定义和你的相同
float s=0;
for(i=1;i<=100;i++)
{
s=s+tag*1/a;
tag=-tag;
a=a+1;
}
//你的1/a的结果是整数,不是小数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友10c6f4b
2014-10-10 · TA获得超过613个赞
知道小有建树答主
回答量:1083
采纳率:100%
帮助的人:199万
展开全部
将a,sum的类型都设为double.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式