用户是如何通过结构体包含用户自命名实现可以自己添加评价标准,请写一下代码
时间: 2024-02-20 13:00:31 浏览: 22
下面是一个简单的示例代码,它演示了如何使用结构体包含用户自命名实现可以自己添加评价标准:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
#define MAX_EVALUATION_NAME_LEN 20
// 定义评价标准结构体
typedef struct {
char name[MAX_EVALUATION_NAME_LEN]; // 评价标准名称
int score; // 评价标准得分
} Evaluation;
// 定义学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
Evaluation evaluations[10]; // 评价标准数组
int evaluation_num; // 评价标准数量
} Student;
// 添加评价标准
void add_evaluation(Student* student, char* name, int score) {
int num = student->evaluation_num;
if (num >= 10) {
printf("评价标准已满,无法添加!\n");
return;
}
strcpy(student->evaluations[num].name, name);
student->evaluations[num].score = score;
student->evaluation_num++;
}
// 计算总分
int calculate_total_score(Student* student) {
int total_score = 0;
for (int i = 0; i < student->evaluation_num; i++) {
total_score += student->evaluations[i].score;
}
return total_score;
}
int main() {
Student students[MAX_STUDENT_NUM];
int student_num = 0;
// 添加学生
Student s1 = { 1, "张三", { {"语文", 80}, {"数学", 90} }, 2 };
students[student_num++] = s1;
Student s2 = { 2, "李四", { {"语文", 75}, {"数学", 85} }, 2 };
students[student_num++] = s2;
// 添加评价标准
add_evaluation(&s1, "英语", 85);
add_evaluation(&s2, "英语", 90);
// 输出学生信息及总分
for (int i = 0; i < student_num; i++) {
printf("学生%d:%s,总分:%d\n", students[i].id, students[i].name, calculate_total_score(&students[i]));
}
return 0;
}
```
在上面的代码中,我们通过定义一个 Evaluation 结构体来表示评价标准,然后在 Student 结构体中使用一个 Evaluation 数组来存储学生的评价标准。通过定义 add_evaluation 函数,用户可以在程序运行时动态地添加评价标准。最后,通过 calculate_total_score 函数,我们可以计算出学生的总分,包括动态添加的评价标准。