酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

使用c语言实现建立两个类teacher和student类,他们都含有num(编号),sex(性别),name(姓名),年龄(age)。这些属性都是私有属性。teacher和student都有一个方法output(),teacher输出xxx(name)is a teacher,student输出xxx(name)is a student. 还有一个cls类,由一个老师和若干学生组成,有一个方法能调用output()输出所有老师和按年龄顺序的所有学生。建立一个班级对象,随机为该班级输入一个老师和若干学生,并输出这些老师和学生。

以下是使用 C 语言实现上述需求的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义 Teacher 结构体 typedef struct Teacher { int num; char sex; char name[50]; int age; } Teacher; // 定义 Student 结构体 typedef struct Student { int num; char sex; char name[50]; int age; } Student; // Teacher 的 output 方法 void teacherOutput(Teacher *t) { printf("%s is a teacher\n", t->name); } // Student 的 output 方法 void studentOutput(Student *s) { printf("%s is a student\n", s->name); } // 定义 Cls 结构体,包含一个老师和多个学生 typedef struct Cls { Teacher t; Student *s; int studentCount; } Cls; // 比较学生年龄用于排序 int compareStudents(const void *a, const void *b) { Student *studentA = (Student *)a; Student *studentB = (Student *)b; return (studentA->age - studentB->age); } // Cls 的输出方法 void clsOutput(Cls *cls) { teacherOutput(&cls->t); qsort(cls->s, cls->studentCount, sizeof(Student), compareStudents); for (int i = 0; i < cls->studentCount; i++) { studentOutput(&cls->s[i]); } } int main() { Cls cls; // 输入老师信息 printf("Enter teacher's num: "); scanf("%d", &cls.t.num); printf("Enter teacher's sex (M/F): "); scanf(" %c", &cls.t.sex); printf("Enter teacher's name: "); scanf("%s", cls.t.name); printf("Enter teacher's age: "); scanf("%d", &cls.t.age); printf("Enter the number of students: "); scanf("%d", &cls.studentCount); cls.s = (Student *)malloc(cls.studentCount * sizeof(Student)); // 输入学生信息 for (int i = 0; i < cls.studentCount; i++) { printf("Enter student %d's num: ", i + 1); scanf("%d", &cls.s[i].num); printf("Enter student %d's sex (M/F): ", i + 1); scanf(" %c", &cls.s[i].sex); printf("Enter student %d's name: ", i + 1); scanf("%s", cls.s[i].name); printf("Enter student %d's age: ", i + 1); scanf("%d", &cls.s[i].age); } clsOutput(&cls); free(cls.s); return 0; } ``` 这段代码实现了 Teacher 和 Student 类,并通过 Cls 类来管理一个老师和多个学生,最后在 `main` 函数中进行输入和输出。 [2024-10-14 18:58:55 | AI写代码神器 | 732点数解答]

相关提问