为什么在C++中显示不正确的总和?
问题描述:
当我试图计算偶数的总和时,如果起始数字是负数,结果是不正确的?为什么在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
问候,,,
答
更改此(startingNumber % 2 != 0)
这一点:
(startingNumber % 2 == 0)
因为你想要的是要总结的甚至数字,而不是奇号码。
答
您使用if (startingNumber % 2 != 0)
,这意味着它只会将而不是整除的数字相加,导致-1 + 1 + 3 = 3。if语句中的条件仅当startingNumber
除以2的余数不为零时才为真,这将是奇数的情况。
改为使用if (startingNumber % 2 == 0) result += startingNumber;
,您应该得到正确的总和。