C语言先编写一个日期类Date,包含三个数据成员:Year,Month和day,再编写一个工人类计算工人的总工资,总工资由固定工资、工龄工资和工时组成,工人类中设计一个Birthday属性,类型为Data。完成对某个工人总工资及其个人信息的输出(姓名、性别、出生年月日等)。
时间: 2024-12-08 11:19:36 浏览: 30
首先,在C语言中,由于缺乏内置的数据结构支持,我们可以使用结构体(struct)来模拟类的概念。创建一个名为`Date`的结构体来存储日期信息,以及一个名为`Worker`的结构体来表示工人,其中包含`Date`类型的`Birthday`属性和其他相关信息。
```c
#include <stdio.h>
// 定义Date结构体
typedef struct {
int year;
int month;
int day;
} Date;
// 定义Worker结构体
typedef struct {
char name[50];
char gender[10];
Date birthday;
float fixed_salary; // 固定工资
float seniority_salary; // 工龄工资
float working_hours_salary; // 按小时计酬
float total_salary; // 总工资
} Worker;
// 函数来初始化并设置日期
void set_date(Date* date, int year, int month, int day) {
date->year = year;
date->month = month;
date->day = day;
}
// 计算工人工资函数
void calculate_total_salary(Worker* worker) {
worker->total_salary = worker->fixed_salary +
worker->seniority_salary * (worker->birthday.year - 1970) +
worker->working_hours_salary * worker->working_hours;
}
// 输出工人信息
void print_worker_info(Worker worker) {
printf("姓名: %s\n", worker.name);
printf("性别: %s\n", worker.gender);
printf("出生日期: %d-%02d-%02d\n", worker.birthday.year, worker.birthday.month, worker.birthday.day);
printf("总工资: %.2f元\n", worker.total_salary);
}
int main() {
// 创建工人实例并设置信息
Worker my_worker;
set_date(&my_worker.birthday, 1985, 4, 15);
strcpy(my_worker.name, "张三");
strcpy(my_worker.gender, "男");
my_worker.fixed_salary = 5000.0;
my_worker.seniority_salary = 100.0;
my_worker.working_hours_salary = 20.0;
my_worker.working_hours = 200;
// 计算并打印工资
calculate_total_salary(&my_worker);
print_worker_info(my_worker);
return 0;
}
```
在这个示例中,我们首先定义了`Date`和`Worker`结构体,并提供了必要的设置和计算功能。然后在`main`函数中创建了一个工人实例并设置了其基本信息,接着计算并输出总工资和个人信息。
阅读全文