C++薪资数组未更新求助:updateCOL函数未生效
问题:薪资未被updateCOL函数正确更新
你的代码核心问题出在updateCOL函数的薪资计算逻辑上,当前写法是给每个薪资加上COL/100(比如输入COL=2时,仅加0.02),这个增量相对于薪资本身可以忽略,所以看起来薪资没有更新。而你实际需要的是按COL百分比涨薪,也就是薪资增加原薪资的COL%。
修正后的updateCOL函数如下:
void updateCOL(double salary[NUM_EMPLOYEES], double COL) { for (int i = 0; i < NUM_EMPLOYEES; i++) { // 正确计算:原薪资 + 原薪资 * COL% salary[i] = salary[i] * (1 + COL / 100.0); // 等价写法:salary[i] += salary[i] * (COL / 100.0); } }
完整修正后的代码
#include <iostream> using namespace std; const int NUM_EMPLOYEES = 4; void readData(string name[NUM_EMPLOYEES], double salary[NUM_EMPLOYEES]); void updateCOL(double salary[NUM_EMPLOYEES], double COL); double payroll(double salary[NUM_EMPLOYEES]); int main() { string name[NUM_EMPLOYEES]; double salary[NUM_EMPLOYEES]; double COL; readData(name, salary); cout << "Cost of living?" << endl; cin >> COL; updateCOL(salary, COL); for (int i = 0; i < NUM_EMPLOYEES; i++) { cout << name[i] << " $" << salary[i] << endl; } cout << endl << "Total Payroll: $" << payroll(salary) << endl; return 0; } void readData(string name[NUM_EMPLOYEES], double salary[NUM_EMPLOYEES]) { for (int i = 0; i < NUM_EMPLOYEES; i++) { cout << "Name salary? "; cin >> name[i] >> salary[i]; cout << endl; } } void updateCOL(double salary[NUM_EMPLOYEES], double COL) { for (int i = 0; i < NUM_EMPLOYEES; i++) { salary[i] = salary[i] * (1 + COL / 100.0); } } double payroll(double salary[NUM_EMPLOYEES]) { double payroll = 0; for (int i = 0; i < NUM_EMPLOYEES; i++) { payroll += salary[i]; } return payroll; }
验证结果
输入COL=2时,每个薪资会被乘以1.02,完全匹配你的预期输出:
- John的32000 → 32000*1.02=32640
- Jack的56000 → 56000*1.02=57120
- Jane的65000 → 65000*1.02=66300
- Jill的50000 → 50000*1.02=51000
另外说明:你传递数组的方式是正确的,C++中数组作为函数参数时,会自动退化为指针(虽然你还没学指针,但实际效果是函数内修改数组元素会影响main函数里的原数组,这部分逻辑没问题)。
内容的提问来源于stack exchange,提问作者icecreamocon
相关产品推荐
相关产品推荐

