给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。 输入格式: 输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。 输出格式: 按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。 输入样例: 3 zhao 240 400 75 qian 360 120 50 zhou 560 150 80 输出样例: zhao 565.00 qian 430.00 zhou 630.00
时间: 2024-03-02 18:53:20 浏览: 54
下面是一份解答该问题的 C++ 代码,供参考:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
struct Employee {
char name[10];
float baseSalary;
float bonus;
float expense;
};
int main() {
int n;
cin >> n;
Employee emp[n];
for (int i = 0; i < n; i++) {
cin >> emp[i].name >> emp[i].baseSalary >> emp[i].bonus >> emp[i].expense;
}
for (int i = 0; i < n; i++) {
float salary = emp[i].baseSalary + emp[i].bonus - emp[i].expense;
cout << emp[i].name << " " << fixed << setprecision(2) << salary << endl;
}
return 0;
}
```
代码分析:
1. 定义了一个结构体类型 `Employee`,用于封装职员的信息,包括姓名、基本工资、浮动工资和支出。
2. 在主函数中,首先读入职员的数量 `n`,然后创建一个包含 `n` 个 `Employee` 类型元素的数组 `emp`。
3. 通过一个循环,读入每个职员的信息,并将其存储到相应的数组元素中。
4. 再通过一个循环,计算每个职员的实发工资,并将其输出,工资保留 2 位小数。
注意:
1. 定义结构体类型时,需要使用关键字 `struct`。
2. 在读入字符串时,需要使用字符数组来存储,使用 `cin` 无法读入带空格的字符串。
3. 输出浮点数时,需要使用 `fixed` 和 `setprecision` 控制小数点位数和精度。