假设某班级n个同学的选课表,设计计算某位同学学分的函数 思路:动态内存分配+结构体数组+结构体指针变量 选课表组成:{学号,课程号,学分}。注:学号为字符串;一个学号可以对应多门课程 例如: {“1001”,”c language”,3.5; “1001”,”math”,6;”1001”,”english”, 5;”1002”,”c language”, 3.5}C语言,完整代码,包括主函数
时间: 2024-03-21 17:39:47 浏览: 15
以下是一个简单的实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COURSES 100
typedef struct {
char id[10];
char course[20];
float credits;
} Course;
int main() {
int n;
printf("请输入选课表中同学的人数:");
scanf("%d", &n);
Course *courses = malloc(MAX_COURSES * sizeof(Course));
memset(courses, 0, MAX_COURSES * sizeof(Course));
for (int i = 0; i < n; i++) {
printf("请输入第%d个同学的选课信息:\n", i+1);
printf("学号:");
scanf("%s", courses[i].id);
printf("课程名:");
scanf("%s", courses[i].course);
printf("学分:");
scanf("%f", &courses[i].credits);
}
char search_id[10];
printf("请输入要查询学分的同学的学号:");
scanf("%s", search_id);
float credits_sum = 0;
for (int i = 0; i < n; i++) {
if (strcmp(courses[i].id, search_id) == 0) {
credits_sum += courses[i].credits;
}
}
printf("%s的学分总数为:%.2f\n", search_id, credits_sum);
free(courses);
return 0;
}
```
这个程序通过动态内存分配来存储选课表,使用结构体数组来表示每门课程的学号、课程名和学分。主函数中先输入同学的人数,然后循环输入每个人的选课信息。最后,程序会询问要查询学分的同学的学号,然后遍历选课表,求出该同学的学分总数。程序结束时释放动态分配的内存。