设计一个学生类Student:
1.数据成员包括:学号,姓名,性别,出生日期,院系、专业;其中,“出生日期”要声明为一个内嵌对象;2.成员函数基本功能有:
(a)可以从键盘输入学生的基本信息;
(b)定义一个函数setImfo(形参表),可以修改学生的基本信息;
(c)成员函数void showO显示学生信息;
3.Student类要包含:构造函数、内联成员函数、带默认参
数的构造函数、复制构造函数;
设计一个学生类student
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
#include <stdio.h> #include <string.h> // 定义日期结构体 typedef struct { int year; int month; int day; } Date; // 学生类定义 typedef struct { char id[20]; char name[20]; char sex[10]; Date birth; char department[20]; char major[20]; } Student; // 函数声明 void inputInfo(Student *student); void setInfo(Student *student, char name[], char sex[], Date birth, char department[], char major[]); void showInfo(Student student); inline char* getStudentName(Student student); Student createStudent(); Student createStudentWithDefaultValue(char name[], char sex[], Date birth, char department[], char major[]); Student copyStudent(Student student); // 主函数 int main() { // 创建学生对象,并从键盘输入学生信息 Student student; inputInfo(&student); // 显示学生信息 showInfo(student); // 修改学生信息 setInfo(&student, "Tom", "Male", student.birth, "Computer Science", "Software Engineering"); // 显示修改后的学生信息 showInfo(student); // 获取学生姓名 char *name = getStudentName(student); printf("Student name: %s\n", name); // 创建新的学生对象,并提供默认值 Student studentWithDefaultValue = createStudentWithDefaultValue("Jerry", "Male", student.birth, "Computer Science", "Software Engineering"); showInfo(studentWithDefaultValue); // 复制现有学生对象 Student copiedStudent = copyStudent(student); showInfo(copiedStudent); return 0; } // 从键盘输入学生信息 void inputInfo(Student *student) { printf("Please enter student information:\n"); printf("ID: "); scanf("%s", student->id); printf("Name: "); scanf("%s", student->name); printf("Sex: "); scanf("%s", student->sex); printf("Birth: (YYYY-MM-DD) "); scanf("%d-%d-%d", &(student->birth.year), &(student->birth.month), &(student->birth.day)); printf("Department: "); scanf("%s", student->department); printf("Major: "); scanf("%s", student->major); } // 修改学生信息 void setInfo(Student *student, char name[], char sex[], Date birth, char department[], char major[]) { strcpy(student->name, name); strcpy(student->sex, sex); student->birth = birth; strcpy(student->department, department); strcpy(student->major, major); } // 显示学生信息 void showInfo(Student student) { printf("Student ID: %s\n", student.id); printf("Student Name: %s\n", student.name); printf("Student Sex: %s\n", student.sex); printf("Student Birth: %d-%d-%d\n", student.birth.year, student.birth.month, student.birth.day); printf("Student Department: %s\n", student.department); printf("Student Major: %s\n", student.major); } // 获取学生姓名,内联成员函数 inline char* getStudentName(Student student) { return student.name; } // 构造函数 Student createStudent() { Student student; return student; } // 带默认参数的构造函数 Student createStudentWithDefaultValue(char name[], char sex[], Date birth, char department[], char major[]) { Student student; strcpy(student.name, name); strcpy(student.sex, sex); student.birth = birth; strcpy(student.department, department); strcpy(student.major, major); return student; } // 复制构造函数 Student copyStudent(Student student) { Student newStudent; strcpy(newStudent.id, student.id); strcpy(newStudent.name, student.name); strcpy(newStudent.sex, student.sex); newStudent.birth = student.birth; strcpy(newStudent.department, student.department); strcpy(newStudent.major, student.major); return newStudent; }
以上是一个使用C语言实现的设计学生类的程序。详细解释如下:
- 首先,定义了一个日期结构体
Date
,包含年、月、日三个成员变量。 - 然后,定义了一个学生类
Student
,包含学号、姓名、性别、出生日期、院系、专业等数据成员。 - 接着,分别实现了用于从键盘输入学生信息、修改学生信息、显示学生信息的三个函数
inputInfo
、setInfo
和showInfo
。 - 在
getStudentName
函数中用inline
关键字定义了一个内联成员函数,用于获取学生的姓名。 - 实现了构造函数
createStudent
用于创建一个学生对象,不带任何参数。 - 实现了带默认参数的构造函数
createStudentWithDefaultValue
,可以创建一个学生对象,并可以提供默认值。 - 实现了复制构造函数
copyStudent
,用于创建一个与现有学生对象相同的新对象。 - 在主函数
main
中,示例了如何使用这些函数进行学生对象的创建、信息输入、修改、显示和复制操作。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报- 首先,定义了一个日期结构体
悬赏问题
- ¥15 Windows下部署Asmjit
- ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
- ¥15 微信小程序 前端页面内容搜索
- ¥15 cpu是如何判断当前指令已经执行完毕,然后去执行下条指令的
- ¥15 安装visual studio2022时visualstudiosetup启动不了,闪退。问题代号0x0和0x1389
- ¥30 java spring boot2.5.3版本websocket连不上
- ¥15 angular js调外部链接查看pdf
- ¥15 openFOAM DPMFoam
- ¥15 将查询到的值,赋值到table指定行中
- ¥50 docker容器内部启动shell脚本多命令