C语言假设某班级n个同学的选课表,设计计算某位同学学分的函数 思路:动态内存分配+结构体数组+结构体指针变量 选课表组成:{学号,课程号,学分}。注:学号为字符串;一个学号可以对应多门课程 例如: {“1001”,”c language”,3.5; “1001”,”math”,6;”1001”,”english”, 5;”1002”,”c language”, 3.5}代码
时间: 2024-03-12 16:46:03 浏览: 119
以下是一个实现计算某位同学学分的函数的示例代码:
```c
#include <stdio.h>
#include <stdlib>
#include <string.h>
// 选课表结构体
struct course {
char id[10]; // 学号
char name[20]; // 课程号
float credit; // 学分
};
// 计算学生学分的函数,参数为学号和选课表指针
float calculate_credit(char* id, struct course* courses, int n) {
float credit = 0;
// 遍历选课表,累加学生选修的课程学分
for (int i = 0; i < n; i++) {
if (strcmp(id, courses[i].id) == 0) {
credit += courses[i].credit;
}
}
return credit;
}
int main() {
int n = 4; // 学生数
// 动态分配选课表内存
struct course* courses = (struct course*) malloc(n * sizeof(struct course));
// 初始化选课表
strcpy(courses[0].id, "1001");
strcpy(courses[0].name, "c language");
courses[0].credit = 3.5;
strcpy(courses[1].id, "1001");
strcpy(courses[1].name, "math");
courses[1].credit = 6;
strcpy(courses[2].id, "1001");
strcpy(courses[2].name, "english");
courses[2].credit = 5;
strcpy(courses[3].id, "1002");
strcpy(courses[3].name, "c language");
courses[3].credit = 3.5;
// 计算学生学分
float credit = calculate_credit("1001", courses, n);
printf("学号为1001的学生学分为%.1f\n", credit);
// 释放选课表内存
free(courses);
return 0;
}
```
这个示例代码中,首先定义了一个选课表的结构体 `struct course`,包含了学号、课程号和学分三个属性。然后定义了一个计算学生学分的函数 `calculate_credit`,参数为学号和选课表指针,函数遍历选课表,累加学生选修的课程学分,最终返回学分总和。在 `main` 函数中,动态分配选课表内存,初始化选课表,调用计算学分函数,最后释放选课表内存。
阅读全文