Dog和Penguin类 领养宠物并打印宠物信息
时间: 2023-03-29 12:04:06 浏览: 357
可以回答这个问题。对于Dog和Penguin类,可以使用面向对象的方式进行领养和打印宠物信息。例如,可以定义一个Pet类作为基类,然后派生出Dog和Penguin类作为子类。在领养宠物时,可以根据用户的选择创建相应的对象,并调用对象的方法打印宠物信息。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 宠物类
typedef struct {
char name[20]; // 名字
int age; // 年龄
} Pet;
// 狗类
typedef struct {
Pet pet; // 继承宠物类
char breed[20]; // 品种
} Dog;
// 企鹅类
typedef struct {
Pet pet; // 继承宠物类
char sex[10]; // 性别
} Penguin;
// 打印宠物信息
void print_pet_info(Pet *pet)
{
printf("宠物名字:%s\n", pet->name);
printf("宠物年龄:%d\n", pet->age);
}
// 打印狗的信息
void print_dog_info(Dog *dog)
{
print_pet_info(&dog->pet);
printf("狗的品种:%s\n", dog->breed);
}
// 打印企鹅的信息
void print_penguin_info(Penguin *penguin)
{
print_pet_info(&penguin->pet);
printf("企鹅的性别:%s\n", penguin->sex);
}
int main()
{
int choice;
printf("请选择要领养的宠物类型:\n");
printf("1. 狗\n");
printf("2. 企鹅\n");
scanf("%d", &choice);
if (choice == 1) {
// 领养狗
Dog *dog = (Dog *)malloc(sizeof(Dog));
strcpy(dog->pet.name, "旺财");
dog->pet.age = 3;
strcpy(dog->breed, "金毛");
print_dog_info(dog);
free(dog);
} else if (choice == 2) {
// 领养企鹅
Penguin *penguin = (Penguin *)malloc(sizeof(Penguin));
strcpy(penguin->pet.name, "小企鹅");
penguin->pet.age = 1;
strcpy(penguin->sex, "雌性");
print_penguin_info(penguin);
free(penguin);
} else {
printf("无效的选择!\n");
}
return ;
}
```
阅读全文