请教,C程序设计教程的一道例题,求指教
算法分析:算法可以表示如下:
S1:1→sign
S2:1→sum
S3:2→deno
S4:(-1)×sign→sign
S5:sign×(1/deno)→term
S6:sum+term→sum
S7:deno+1→deno
S8:若deno≤100返回S4;否则算法结束。
此算法对应的源程序如下:
main(){
float sign=1,deno=2,sum=1,term;
while(deno<=100){
sign*=-1;
term=sign*(1/deno);
sum+=term;
deno++;
}
printf("1-1/2+1/3-1/4+…+1/99-1/100=%f\n",sum);
}
本例中用有含义的单词作变量名,以使算法更易于理解。sum表示累加和,deno是英文字母(denominator)缩写,sign代表数值的符号,term代表某一项。在步骤S1中先预设sign(代表级数中各项的符号,它的值为1或-1)。在步骤S2中使sum等于1,相当于已将级数中的第一项放到了sum中。在步骤S3中使分母的值为2。在步骤S4中使sign的值变为-1。在步骤S5中求出级数中第2项的值(-1/2)。在步骤S6中将刚才求出的第二项的值(-1/2)累加到sum中。至此,sum的值是(-1/2)。在步骤S7中使分母deno的值加1(变成3)。执行S8步骤,由于deno≤100,故返回S4步骤,sign的值改为1,在S5中求出term的值为1/3,在S6中将1/3累加到sum中。然后S7再使分母变为4。按此规律反复执行S4到S8步骤,直到分母大于100为止。一共执行了99次循环,向sum累加入了99个分数。sum最后的值就是级数的值。
执行S8步骤,由于deno≤100,故返回S4步骤,sign的值改为1
不懂的地方就是这里,为什么,返回S4之后 sign变成1?好像只是说明了sign是1,并没有指定条件下sign是-1啊?
书刚到,自学,第二天,看这里卡住了,麻烦理解这题的说一下,感谢。