·建立人员类,具有编号和年龄2个成员·继承人员类,生成驾驶员类和工程师类。 ·驾驶员类包含证书编号成员 ·工程师类包含技术等级成员 显示输入人员的编号,年龄职业和2个职业共有多少数量,人员共有多少。 使用构造函数和静态成员变量完成。c,使用struct
时间: 2024-09-25 13:04:30 浏览: 21
在C语言中,可以使用结构体(struct)和继承的概念来创建这样的层次结构。首先,我们定义一个基础的`人员`结构体,然后分别继承并添加特有的成员到`驾驶员`和`工程师`类中。
```c
// 定义基础人员结构体
typedef struct {
int id;
int age;
} Person;
// 驾驶员继承自人员,并增加证书编号
typedef struct {
Person base_info; // 继承基础信息
int certificate_num;
} Driver;
// 工程师继承自人员,并增加技术等级
typedef struct {
Person base_info; // 继承基础信息
int technical_rank;
} Engineer;
// 静态成员变量用于计数
static int driver_count = 0;
static int engineer_count = 0;
// 构造函数
void create_employee(Person* emp, int id, int age, char profession[]) {
emp->id = id;
emp->age = age;
if (strcmp(profession, "Driver") == 0) {
Driver* driver_emp = (Driver*)emp;
driver_emp->certificate_num = ...; // 根据实际需求填写证书编号
driver_count++;
} else if (strcmp(profession, "Engineer") == 0) {
Engineer* eng_emp = (Engineer*)emp;
eng_emp->technical_rank = ...; // 根据实际需求填写技术等级
engineer_count++;
}
}
int main() {
Person employee;
// 创建驾驶员和工程师实例并传递给create_employee
create_employee(&employee, ..., ..., "Driver");
create_employee(&employee, ..., ..., "Engineer");
printf("输入人员的编号: %d\n", employee.id);
printf("年龄: %d\n", employee.age);
printf("驾驶员数量: %d\n", driver_count);
printf("工程师数量: %d\n", engineer_count);
printf("共有员工数量: %d\n", driver_count + engineer_count);
return 0;
}
```
在这个例子中,用户需要为`Driver`和`Engineer`类的特定字段填充值,并通过`create_employee`函数区分是驾驶员还是工程师。同时,`driver_count`和`engineer_count`会根据创建的对象数量自动更新。
阅读全文