C语言程序设计,课程记录由课程号、课程名称、学分组成,将课程记录存放在结构体数组中。请编程求出学分最高的课程记录(可能不止一门课程)并输出。要求:课程数、课程记录均由键盘输入。
时间: 2024-03-17 15:47:49 浏览: 51
好的,这里给出一个 C 语言的程序实现,用于求出学分最高的课程记录:
```c
#include <stdio.h>
#include <string.h>
#define MAX_COURSES 100
struct CourseRecord {
char id[10];
char name[20];
float credit;
};
int main() {
struct CourseRecord courses[MAX_COURSES];
int n;
printf("请输入课程数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 门课程的课程号、课程名和学分:", i + 1);
scanf("%s %s %f", courses[i].id, courses[i].name, &courses[i].credit);
}
float max_credit = 0;
for (int i = 0; i < n; i++) {
if (courses[i].credit > max_credit) {
max_credit = courses[i].credit;
}
}
printf("学分最高的课程记录如下:\n");
for (int i = 0; i < n; i++) {
if (courses[i].credit == max_credit) {
printf("%-10s %-20s %5.1f\n", courses[i].id, courses[i].name, courses[i].credit);
}
}
return 0;
}
```
这个程序首先定义了一个结构体 `CourseRecord`,用于存放课程记录。在 `main` 函数中,我们首先从键盘输入课程数 `n`,然后循环读入课程记录。接着,我们遍历课程记录数组,找到学分最高的课程,并记录下来。最后,我们再次遍历课程记录数组,找到所有学分等于最大学分的课程记录,并输出。
需要注意的是,这个程序中课程号和课程名称都是字符串类型,需要使用 `scanf` 函数的 `%s` 转换说明符来读取。同时,我们使用了格式化输出函数 `printf` 的 `-` 标志来左对齐输出字符串。
阅读全文