2015-10-05 117 views
-2

当我试图计算偶数的总和时,如果起始数字是负数,结果是不正确的?为什么在C++中显示不正确的总和?

下面是代码:

#include <iostream> 


using namespace std; 

int main() { 
    signed int startingNumber, upperLimit; 
    signed int result = 0; 
    cout << "please enter the starting number: "; cin >> startingNumber; 
    cout << "please enter the upper limit: "; cin >> upperLimit; 

    while (true) { 
     if (startingNumber % 2 != 0) result += startingNumber; 
      if (upperLimit == startingNumber) break; 
      startingNumber++; 
     } 
    cout << "The result is: " << result << endl; 
} 

但是当我运行该脚本下面是结果:

please enter the starting number: -2 
please enter the upper limit: 4 
The result is: 3 

我想结果应该是4不是3,作为计算 - 2 0 + 2 + 4 = 4

问候,,,

回答

0

更改此(startingNumber % 2 != 0)这一点:

(startingNumber % 2 == 0) 

因为你想要的是要总结的甚至数字,而不是号码。

2

您使用if (startingNumber % 2 != 0),这意味着它只会将而不是整除的数字相加,导致-1 + 1 + 3 = 3。if语句中的条件仅当startingNumber除以2的余数不为零时才为真,这将是奇数的情况。

改为使用if (startingNumber % 2 == 0) result += startingNumber;,您应该得到正确的总和。

相关问题