You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++使用结构体数组计算10名员工总应发工资问题求助

问题原因
  • 变量重名导致薪资未存入求和数组:你在打印单员工薪资的for循环中定义了局部变量gross,和开头声明的gross[10]全局数组重名,计算得到的单员工应发工资仅存在局部变量中,全局gross数组全程是未初始化的随机值,求和必然出错。
  • 累加逻辑错误:求和循环中的totalGrossPay = sum + gross[i]语句里,sum始终保持初始值0.0,每次循环都会覆盖totalGrossPay的旧值,最终只能保留最后一个元素的计算结果,无法得到总和。
修正方案

推荐直接复用结构体自带的grossPay字段存储单员工薪资,无需额外开辟数组,也能避免变量重名问题,修正后完整代码如下:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    double totalGrossPay = 0.0; // 初始化累加变量
    struct GrossPay {
        int empID;
        string empName;
        double chargeHour;
        int workingHours;
        double grossPay;
    };

    GrossPay employee[10];

    for (int i = 0; i < 10; i++) {
        cout << (i + 1) << "."
             << "Employee Name :";
        cin >> employee[i].empName;

        cout << "Employee ID :";
        cin >> employee[i].empID;

        cout << "Employee`s charge rate per hour :";
        cin >> employee[i].chargeHour;

        cout << "Working hours :";
        cin >> employee[i].workingHours;
        // 直接计算并存入结构体字段
        employee[i].grossPay = employee[i].chargeHour * employee[i].workingHours;
        cout << endl;
    }
    cout << "Employee ID\t"
         << "Employee Name\t"
         << "Gross Pay(RM)" << endl;
    for (int i = 0; i < 10; i++) {
        cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << employee[i].grossPay;
        cout << endl;
    }
    cout << endl;

    for (int i = 0; i < 10; i++) {
        totalGrossPay += employee[i].grossPay; // 累加所有员工薪资
    }
    cout << "Total gross pay of 10 employees : RM" << totalGrossPay;
    return 0;
}

内容的提问来源于stack exchange,提问作者Anis Amira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:45:05