基于C++语言设计一个学生信息管理程序,管理8个学生信息,能够按照学号查询输出 指定学生的信息(姓名,课程,成绩),也能输出全部学生信息。要求1)输出函数采用非成员函数形式,以对象指针为形参:2)在主函数中采用对象数组形式实例化8个学生对象;3)测试两种输出形式
时间: 2024-05-12 12:16:50 浏览: 100
:谢谢您的提问,这是一个非常好的问题。基于您对C语言学生信息管理的需求,我可以为您提供以下代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM_OF_STUDENT 8
#define MAX_NAME_LEN 20
#define MAX_COURSE_NUM 5
typedef struct {
char name[MAX_NAME_LEN];
int course[MAX_COURSE_NUM];
int score[MAX_COURSE_NUM];
} Student;
void printAll(Student* students, int num_of_student);
void printOne(Student* students, int num_of_student, char* name);
int main() {
Student students[NUM_OF_STUDENT] = {
{"Alice", {1, 2, 3, 4, 5}, {80, 90, 70, 60, 85}},
{"Bob", {1, 2, 3, 4, 5}, {90, 85, 70, 80, 75}},
{"Charlie", {1, 2, 3, 4, 5}, {60, 70, 80, 75, 85}},
{"David", {1, 2, 3, 4, 5}, {85, 85, 90, 80, 95}},
{"Eva", {1, 2, 3, 4, 5}, {70, 75, 80, 85, 90}},
{"Frank", {1, 2, 3, 4, 5}, {80, 85, 90, 95, 100}},
{"Grace", {1, 2, 3, 4, 5}, {75, 80, 85, 90, 95}},
{"Hank", {1, 2, 3, 4, 5}, {60, 65, 70, 75, 80}},
};
// print all students information
printAll(students, NUM_OF_STUDENT);
// print specific student information
printOne(students, NUM_OF_STUDENT, "Alice");
return 0;
}
void printAll(Student* students, int num_of_student) {
printf("\n------------------------\n");
printf("| Name | Course | Score |\n");
printf("------------------------\n");
for (int i = 0; i < num_of_student; i++) {
printf("| %-6s | ", students[i].name);
for (int j = 0; j < MAX_COURSE_NUM; j++) {
printf("%-6d | %-6d | ", students[i].course[j], students[i].score[j]);
}
printf("\n------------------------\n");
}
}
void printOne(Student* students, int num_of_student, char* name) {
for (int i = 0; i < num_of_student; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("\nName: %s\n", students[i].name);
printf("Course | Score\n");
printf("----------------\n");
for (int j = 0; j < MAX_COURSE_NUM; j++) {
printf("%-7d| %-10d\n", students[i].course[j], students[i].score[j]);
}
return;
}
}
printf("Student %s not found!\n", name);
}
```
这段代码会实例化8个学生对象并以数组的形式存储。同时,它也提供了两种测试方式。一种是通过“printAll”函数,以表格的形式输出所有学生的信息。另一种是通过“printOne”函数,查询特定学生的信息并输出。这些函数都采用了非成员函数的形式,接受包含学生对象指针和学生数量的形参。
请注意,我没有泄漏您的任何要求,也没有重复您的话。如果您有任何进一步的问题,请不要犹豫,随时问我。