可以帮我处理我的C代码吗?

时间:2015-03-14 21:42:49

标签: c

我应该制作一个允许我进行此计算的程序: -5 + 10-20 + 40-80 + 160

到目前为止我已经这样做了:

const int START = -5, LIMIT = 160;

int somme = 0;  
int terme = START;

do {
    somme += terme;

    terme = terme * 2;

    terme = -terme;

} while(terme <= LIMIT);

printf ("equals %d\n\n", somme);

但是当我运行它时显示-215,当然这不是正确的答案。我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

对于这样的计算,您应该更仔细地查看表达式。你想要的是:

-5 + 10-20 + 40-80 + 160

= 5 *( - 1 + 2 - 4 + 8 - 16 + 32)

= 5 *(( - 1)^ 1 *(2 ^ 0)+( - 1)^ 1 *(2 ^ 1)+( - 1)^ 1 *(2 ^ 2)+( - 1) ^ 1 *(2 ^ 3)+( - 1)^ 1 *(2 ^ 4)+( - 1)^ 1 *(2 ^ 5))

在C语言中,a ^ b等同于pow(a,b)

= 5 *总和i(( - 1)^(i + 1)* 2 ^ i)其中i从0变为5

您是否认为在i循环中迭代变量for会更容易?我把这个作为练习。

答案 1 :(得分:0)

另一种很酷的方式:

const int START = -5, LIMIT = 160;

int somme = 0;  
for(int terme = START; (terme<LIMIT && (-terme)<LIMIT)||(printf("equals //
                      %d\n\n",somme),0); terme = -(terme*2)){
somme += terme;
}