编写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);
}
哪错了 展开
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);
}
哪错了 展开
3个回答
展开全部
应该是这样
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);
}
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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float tag=1;//设置一个标志位,其他的定义和你的相同
float s=0;
for(i=1;i<=100;i++)
{
s=s+tag*1/a;
tag=-tag;
a=a+1;
}
//你的1/a的结果是整数,不是小数
float s=0;
for(i=1;i<=100;i++)
{
s=s+tag*1/a;
tag=-tag;
a=a+1;
}
//你的1/a的结果是整数,不是小数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将a,sum的类型都设为double.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询