计算 10 名员工的总工资。 (C++ - 结构中的数组)

Calculate total gross pay of 10 employees. (C++ - Array in Struct)

这道题的结果,应该有一个工资单记录,包含了所有这些东西。 但是我在使用结构 (C++) 中的数组计算所有员工的总工资时遇到了问题,但我被卡住了。 工资总额应打印在工资记录的底部。我觉得我的编码中缺少某些东西,但我无法弄清楚那是什么。我只是求总工资有问题,其他都还好。

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    double gross[10];
    double sum = 0.0;
    double totalGrossPay;
    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;

        cout << endl;
    }
    cout << "Employee ID\t"
         << "Employee Name\t"
         << "Gross Pay(RM)" << endl;
    for (int i = 0; i < 10; i++) {
        double gross = employee[i].chargeHour * employee[i].workingHours;
        cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << gross;
        cout << endl;
    }
    cout << endl;

    for (int i = 0; i < 10; i++) {
        totalGrossPay = sum + gross[i];
    }
    cout << "Total gross pay of 10 employees : RM" << totalGrossPay;
    return 0;
}

你有一个未初始化的数组

double gross[10];

所以它的元素有不确定的值。

结果这个循环

for (int i = 0; i < 10; i++) {
    totalGrossPay = sum + gross[i];
}

调用未定义的行为。

另外,变量 sum 在前面的代码中没有改变。所以它在这个for循环中的使用没有意义。

也许你的意思是在循环体中

double totalGrossPay = 0.0;

for (int i = 0; i < 10; i++) {
    totalGrossPay += gross[i];
}

前提是数组 gross 填充了值。

看来在这个for循环中

for (int i = 0; i < 10; i++) {
    double gross = employee[i].chargeHour * employee[i].workingHours;
    cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << gross;
    cout << endl;
}

你指的是数组元素 gross 而不是局部变量 gross 例如

for (int i = 0; i < 10; i++) {
    gross[i] = employee[i].chargeHour * employee[i].workingHours;
    cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << gross[i];
    cout << endl;
}

也没有使用结构的数据成员double grossPay;。也许您需要填充结构数组元素的数据成员而不是数组 gross,不是吗?