c语言中1-1/2+1/3-1/4+1/5-1/6......+1/99-1/100算法解释?

#include<stdio.h>//1-1/2+1/3-1/4+1/5-1/6......+1/99-1/100的值//intmain(void){inta=1;//a... # include<stdio.h> //1-1/2+1/3-1/4+1/5-1/6......+1/99-1/100的值//

int main(void)
{
int a = 1; //a代代表当前处理的项前面的数值符号比如:- +//
double b = 2.0, //b代表当前项的分母//
c = 1.0, //c代表当前各项的累加和//
d; //d代表当前项的值//
while(b<=100)
{
a = -a;
d = a/b;
c = c+d;
b = b+1;

}

printf("%f\n",c);

return 0;
}

这个是这个程序的算法,但是我始终不理解。

每个项前面的符号怎么变换的?

求大神用简单语言解释一下, 怎么去思考这个算法?
展开
 我来答
White_MouseYBZ
2014-02-25 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6710万
展开全部
a = -a;就是改变符号的。当a=1时,a=-a就是a=-(-1),结果a=1;而当a=1时,a=-a就是a=-(1),结果a=-1。
追问
1. a=1,   /*请问你这个地方a 是不是写错了?a应该是a=-1才对吧? 要不然a=1是1,a=1 又是-1,这样是不是不符合逻辑啊*/
a=-a
a=-(-1)
最后a=1.
2. a=1,
a=-a
a=-(1)
最后a=-1.
追答
若a=1,那么a=-a后,a就是-1;而若a=-1,则a=-a后,a就是1。这等价于a=-1*a。
cpucash
2014-02-25 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:973万
展开全部
a = -a; //这里就是变号
d = a/b; //这里就是正负1除以分母
因为每次a都不同,所以是正负交替的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昌大少年
2014-02-25 · TA获得超过255个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:185万
展开全部
a = -a;变换符号
d = a/b;为累加的项
c 为初始项
while(b<=100) 循环99次

c = c+ d;不断累加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nigoole
2014-02-25 · TA获得超过1369个赞
知道小有建树答主
回答量:675
采纳率:71%
帮助的人:453万
展开全部
while(b<=100)
{
  a = -a; // 符号是通过这里变换的,比如a=1时,这个数为正数,下次在循环的时候a=-a = -1;这样在除以b就得到了负数的分式,在求累加和即可
  d = a/b;
  c = c+d;
  b = b+1; 
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
禁之子
2014-02-25
知道答主
回答量:22
采纳率:0%
帮助的人:9.2万
展开全部
什么意思?不懂你要问啥? “int a = 1; //a代代表当前处理的项前面的数值符号比如:- +//”a=-a每项总是前一项的负值、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式