C语言程序 1-1/2+1/3-1/4+...+1/99-1/100
#include<stdio.h>voidmain(){intsign=1;floatdeno=2.o,sum=1.0,term;while(deno<=100){sig...
#include<stdio.h>
void main()
{
int sign=1;
float deno=2.o ,sum=1.0, term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("f%|n",sum);
}
我弄不清楚这个程序怎么知道偶数分母时候减,奇数分母时是加,我希望高手讲解一下 展开
void main()
{
int sign=1;
float deno=2.o ,sum=1.0, term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("f%|n",sum);
}
我弄不清楚这个程序怎么知道偶数分母时候减,奇数分母时是加,我希望高手讲解一下 展开
5个回答
展开全部
sign=-sign; 这句话实现了这一点
我们可以跟踪程序以下
循环之前 sum=1 sign=1 deno=1;此时sum就是第一个元素的值
第一次循环 相当于加上第二个元素
deno=2;
sign=-sign 即 sign=-1了,此时就的到第二个元素是负号
sum=sum+sign(1/deno)=1+(-1)(1/2);
第二次循环 相当于加上第三个元素
deno=3
sign=-sign 即 sign=+1了,此时就的到第三个元素是正号
sum=sum+sign(1/deno)=1+(-1)(1/2)+(+1)(1/3);;
我们可以跟踪程序以下
循环之前 sum=1 sign=1 deno=1;此时sum就是第一个元素的值
第一次循环 相当于加上第二个元素
deno=2;
sign=-sign 即 sign=-1了,此时就的到第二个元素是负号
sum=sum+sign(1/deno)=1+(-1)(1/2);
第二次循环 相当于加上第三个元素
deno=3
sign=-sign 即 sign=+1了,此时就的到第三个元素是正号
sum=sum+sign(1/deno)=1+(-1)(1/2)+(+1)(1/3);;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float deno=2.o ,sum=1.0, term;
deno是从2开始的 那不是2 就是 sign=-sign;
sign先是-1
deno加到3 sign 就变成1
以此类推
偶数是-1
奇数是+1
deno是从2开始的 那不是2 就是 sign=-sign;
sign先是-1
deno加到3 sign 就变成1
以此类推
偶数是-1
奇数是+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看漏了...抱歉...楼上好眼力,佩服
float i;
float sum = 0;
for(i = 1.0; i <= 100.0; i ++)
{
if(i % 2 == 0)
sum -= 1/i;
else
sum += 1/i;
}
这部分才会起到作用
float i;
float sum = 0;
for(i = 1.0; i <= 100.0; i ++)
{
if(i % 2 == 0)
sum -= 1/i;
else
sum += 1/i;
}
这部分才会起到作用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键在这一句:
sign=-sign
每次循环取反,奇偶性是由初始条件(sign=1)决定的,程序不判断奇偶性。
第1次循环:
sign=-sign; //sign=-1
term=sign/deno; //term=-1/2.0
sum=sum+term; //sum=1+(-1/2)
deno=deno+1; //deno=2.0+1=3.0
所以sum为
1-1/2
第2次循环:
sign=-sign; //sign=-(-1)=1
term=sign/deno; //term=1/3.0
sum=sum+term; //sum=1+(-1/2)+(1/3)
deno=deno+1; //deno=3.0+1=4.0
所以sum为
1+(-1/2)+(1/3)=1-1/2+1/3
sign=-sign
每次循环取反,奇偶性是由初始条件(sign=1)决定的,程序不判断奇偶性。
第1次循环:
sign=-sign; //sign=-1
term=sign/deno; //term=-1/2.0
sum=sum+term; //sum=1+(-1/2)
deno=deno+1; //deno=2.0+1=3.0
所以sum为
1-1/2
第2次循环:
sign=-sign; //sign=-(-1)=1
term=sign/deno; //term=1/3.0
sum=sum+term; //sum=1+(-1/2)+(1/3)
deno=deno+1; //deno=3.0+1=4.0
所以sum为
1+(-1/2)+(1/3)=1-1/2+1/3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询