C++考试编程题求助:计算输入五个浮点数中的偶数和
C++ 计算输入浮点数中的偶数和解决方案
题目要求:编写完整程序,允许用户输入五个浮点数,计算其中偶数的和。例如输入12、15、3、5、10时,应输出22(12和10为偶数,和为22),且输入值均大于0。
现有代码
#include <iostream> using namespace std; int main() { float numOne = 0; float numTwo = 0; float numThree = 0; float numFour = 0; float numFive = 0; float evenSum = 0; cout << "Please enter the first number"; cin >> numOne; cout << "Please enter the second number"; cin >> numTwo; cout << "Please enter the third number"; cin >> numThree; cout << "Please enter the fourth number"; cin >> numFour; cout << "Please enter the fifth number"; cin >> numFive; return 0; }
完整解决方案代码
以下代码实现了输入验证、偶数判断及求和逻辑,同时用数组优化了变量管理:
#include <iostream> #include <cmath> // 用于计算浮点数余数的fmod函数 using namespace std; int main() { float nums[5]; float evenSum = 0.0; // 循环处理5次输入 for (int i = 0; i < 5; ++i) { cout << "Please enter number " << i + 1 << ": "; cin >> nums[i]; // 强制输入大于0的数,不合法则重新输入 while (nums[i] <= 0) { cout << "Input must be greater than 0. Please re-enter: "; cin >> nums[i]; } // 判断浮点数是否为偶数:除以2余数为0 if (fmod(nums[i], 2.0) == 0.0) { evenSum += nums[i]; } } cout << "Sum of even numbers: " << evenSum << endl; return 0; }
关键逻辑说明
- 输入验证:通过
while循环拦截小于等于0的输入,确保符合题目要求。 - 偶数判断:使用
fmod函数计算浮点数与2的余数,余数为0则判定为偶数(适配浮点数场景,如12.0会被识别为偶数,12.5则不会)。 - 数组优化:用数组替代单独变量,简化代码结构,后续若需调整输入数量只需修改循环次数即可。
初学者友好版(单独变量写法)
如果更习惯用单独变量管理输入,可使用以下版本:
#include <iostream> #include <cmath> using namespace std; int main() { float numOne = 0, numTwo = 0, numThree = 0, numFour = 0, numFive = 0; float evenSum = 0.0; // 第一个数输入与验证 cout << "Please enter the first number: "; cin >> numOne; while (numOne <= 0) { cout << "Input must be greater than 0. Please re-enter: "; cin >> numOne; } if (fmod(numOne, 2.0) == 0.0) evenSum += numOne; // 第二个数输入与验证 cout << "Please enter the second number: "; cin >> numTwo; while (numTwo <= 0) { cout << "Input must be greater than 0. Please re-enter: "; cin >> numTwo; } if (fmod(numTwo, 2.0) == 0.0) evenSum += numTwo; // 第三个数输入与验证 cout << "Please enter the third number: "; cin >> numThree; while (numThree <= 0) { cout << "Input must be greater than 0. Please re-enter: "; cin >> numThree; } if (fmod(numThree, 2.0) == 0.0) evenSum += numThree; // 第四个数输入与验证 cout << "Please enter the fourth number: "; cin >> numFour; while (numFour <= 0) { cout << "Input must be greater than 0. Please re-enter: "; cin >> numFour; } if (fmod(numFour, 2.0) == 0.0) evenSum += numFour; // 第五个数输入与验证 cout << "Please enter the fifth number: "; cin >> numFive; while (numFive <= 0) { cout << "Input must be greater than 0. Please re-enter: "; cin >> numFive; } if (fmod(numFive, 2.0) == 0.0) evenSum += numFive; cout << "Sum of even numbers: " << evenSum << endl; return 0; }
内容的提问来源于stack exchange,提问作者Ethan Dentner
相关产品推荐
相关产品推荐

