如何修复按日翻倍薪资计算程序的输出未累加问题?
修复薪资累加计算问题
嘿,我看到你的问题啦——现在程序每次循环都输出当天的薪资,没有把每天的钱加起来算总收入对吧?别担心,咱们几步就能搞定这个问题:
关键修改点
- 首先,初始化
totalPay变量为0,因为一开始还没有任何收入 - 把循环里直接输出当日薪资的逻辑,改成将当日薪资累加到
totalPay中,而不是每次都打印 - 循环结束后,一次性输出累加后的总收入,并且用格式化输出保证美元金额显示两位小数(避免出现类似
0.030000000000000002的奇怪小数)
修改后的完整代码
#include <iostream> #include <iomanip> // 用于格式化输出小数位数 using namespace std; int main() { // Declare Variables int numDays = 1; double money = 0.01; double totalPay = 0.0; // 初始化总收入为0 // Input and validate days cin >> numDays; while (numDays < 1) { cout << "Enter a positive value ONLY!\n"; cin >> numDays; } // 累加每日薪资到总收入 for (int i = 1; i <= numDays; i++) { totalPay += money; // 把当日薪资加到总收入里 money *= 2; // 次日薪资翻倍 } // 格式化输出总收入,保留两位小数 cout << "Pay = $" << fixed << setprecision(2) << totalPay << endl; return 0; }
代码解释
- 我们添加了
<iomanip>头文件,目的是使用fixed和setprecision(2)来强制输出两位小数,符合美元金额的显示习惯。 - 循环内部不再直接打印
money,而是把它累加到totalPay中,这样循环结束后totalPay就是所有天数的总收入。 - 最后只需要一次输出操作,就能得到正确的总薪资结果——比如输入2天时,输出就是
Pay = $0.03,完全符合预期。
内容的提问来源于stack exchange,提问作者Dylan Yazdani
相关产品推荐
相关产品推荐

