编写程序用结构体存放下表中的数据,然后输出每人的姓名和工资实发数(基本工资+浮动工资-支出)。
时间: 2023-05-31 11:19:38 浏览: 464
下面程序是定义一个结构体,并为其定义结构体变量,对其值输入、输出。
5星 · 资源好评率100%
### 回答1:
可以定义一个结构体来存储每个人的信息,结构体内包含姓名、基本工资、浮动工资、支出等字段。然后使用循环遍历每个人,计算出工资实发数(基本工资+浮动工资-支出),最后输出每个人的姓名和工资实发数。
具体代码如下:
```
struct Person {
char name[20];
int basic_salary;
int float_salary;
int expenditure;
} persons[3];
int main() {
for (int i = 0; i < 3; i++) {
scanf("%s %d %d %d", persons[i].name, &persons[i].basic_salary, &persons[i].float_salary, &persons[i].expenditure);
}
for (int i = 0; i < 3; i++) {
int salary = persons[i].basic_salary + persons[i].float_salary - persons[i].expenditure;
printf("%s的工资实发数为%d\n", persons[i].name, salary);
}
return 0;
}
```
注意,上面的代码是给出了结构体的定义和循环读入和输出的示例,如果要使用请根据需要更改,如输入数据等
### 回答2:
编写程序用结构体存放工资数据,可以方便管理和操作。首先,我们可以定义一个名为“Salary”的结构体,结构体中包括工资发放人的姓名、基本工资、浮动工资和支出四个数据项,如下所示:
```c++
struct Salary
{
string name; // 姓名
double base; // 基本工资
double bonus; // 浮动工资
double expense; // 支出
};
```
我们可以从以下数据表中读取数据,并用结构体赋值:
| 姓名 | 基本工资 | 浮动工资 | 支出 |
| :--: | :------: | :------: | :--: |
| 张三 | 5000.00 | 800.00 | 250.00 |
| 李四 | 6000.00 | 900.00 | 350.00 |
| 王五 | 6500.00 | 1000.00 | 400.00 |
| 赵六 | 5500.00 | 1200.00 | 300.00 |
| 孙七 | 7000.00 | 1500.00 | 600.00 |
```c++
Salary s[5]; // 定义一个长度为5的Salary数组
// 对每个Salary对象进行赋值
s[0].name = "张三";
s[0].base = 5000.00;
s[0].bonus = 800.00;
s[0].expense = 250.00;
s[1].name = "李四";
s[1].base = 6000.00;
s[1].bonus = 900.00;
s[1].expense = 350.00;
s[2].name = "王五";
s[2].base = 6500.00;
s[2].bonus = 1000.00;
s[2].expense = 400.00;
s[3].name = "赵六";
s[3].base = 5500.00;
s[3].bonus = 1200.00;
s[3].expense = 300.00;
s[4].name = "孙七";
s[4].base = 7000.00;
s[4].bonus = 1500.00;
s[4].expense = 600.00;
```
接下来,我们可以根据数据计算每个人的实发工资,并将结果输出:
```c++
for (int i = 0; i < 5; i++)
{
double net_salary = s[i].base + s[i].bonus - s[i].expense;
cout << s[i].name << "\t实发工资:" << net_salary << "元" << endl;
}
```
完整的代码示例如下所示:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Salary
{
string name;
double base;
double bonus;
double expense;
};
int main()
{
Salary s[5];
s[0].name = "张三";
s[0].base = 5000.00;
s[0].bonus = 800.00;
s[0].expense = 250.00;
s[1].name = "李四";
s[1].base = 6000.00;
s[1].bonus = 900.00;
s[1].expense = 350.00;
s[2].name = "王五";
s[2].base = 6500.00;
s[2].bonus = 1000.00;
s[2].expense = 400.00;
s[3].name = "赵六";
s[3].base = 5500.00;
s[3].bonus = 1200.00;
s[3].expense = 300.00;
s[4].name = "孙七";
s[4].base = 7000.00;
s[4].bonus = 1500.00;
s[4].expense = 600.00;
for (int i = 0; i < 5; i++)
{
double net_salary = s[i].base + s[i].bonus - s[i].expense;
cout << s[i].name << "\t实发工资:" << net_salary << "元" << endl;
}
return 0;
}
```
通过使用结构体和数组,我们可以很方便地管理和操作大量的工资数据,并且代码的可读性和可维护性也得到了很好的保障。
### 回答3:
在编写程序时,首先需要定义一个结构体,结构体中包括姓名、基本工资、浮动工资、支出和实发工资等五个变量。然后,可以通过for循环从数组中读取每个人的信息,并将其存储在对应的结构体变量中。接着,可以通过计算每个人的实发工资,并将其输出。
具体的代码实现如下:
```
#include <stdio.h>
#include <string.h>
#define MAX_NUM 10
struct employee {
char name[20];
float base_salary;
float float_salary;
float expend;
float actual_salary;
};
int main() {
struct employee list[MAX_NUM];
int i;
for (i = 0; i < MAX_NUM; i++) {
printf("Please input the information of employee %d:\n", i+1);
printf("Name: ");
scanf("%s", list[i].name);
printf("Base salary: ");
scanf("%f", &list[i].base_salary);
printf("Float salary: ");
scanf("%f", &list[i].float_salary);
printf("Expend: ");
scanf("%f", &list[i].expend);
list[i].actual_salary = list[i].base_salary + list[i].float_salary - list[i].expend;
}
printf("\n\n");
printf("Name \t Actual Salary\n");
for (i = 0; i < MAX_NUM; i++) {
printf("%-10s \t %-10.2f\n", list[i].name, list[i].actual_salary);
}
return 0;
}
```
在以上代码中,定义了一个结构体类型employee,并定义了一个长度为MAX_NUM的数组list,用于存储所有员工的信息。在循环中,通过scanf按顺序读入每个人的姓名、基本工资、浮动工资和支出,并计算出每个人的实际工资。最后,通过for循环输出所有员工的姓名和实际工资。
此外,为了方便输出,使用了printf中的格式控制符。其中,%-10s表示输出一个长度为10的左对齐字符串,%-10.2f表示输出一个长度为10的左对齐小数点后两位的浮点数。
阅读全文