用c语言写出上述程序
时间: 2024-12-11 22:23:11 浏览: 12
以下是使用C语言编写上述问题程序的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体表示学生信息
typedef struct {
int chinese;
int math;
int english;
} Student;
// 比较函数,用于排序
int compare(const void* a, const void* b) {
const Student* student1 = (const Student*)a;
const Student* student2 = (const void*)b;
return student2->total - student1->total; // 降序排列
}
// 计算总成绩
void calculate_and_sort(int N, Student students[]) {
for (int i = 0; i < N; i++) {
scanf("%d %d %d", &students[i].chinese, &students[i].math, &students[i].english);
students[i].total = students[i].chinese + students[i].math + students[i].english;
}
// 使用qsort进行排序
qsort(students, N, sizeof(Student), compare);
// 输出排序后的成绩
for (int i = 0; i < N; i++) {
printf("%d\n", students[i].total);
}
}
int main() {
int N;
printf("请输入学生人数:");
scanf("%d", &N);
// 分配内存存储学生信息
Student* students = malloc(N * sizeof(Student));
if (!students) {
perror("Memory allocation failed.");
return 1;
}
calculate_and_sort(N, students); // 调用函数处理数据
free(students); // 释放内存
return 0;
}
```
在这个程序中,我们首先定义了一个Student结构体来存储学生的各科学习成绩,然后创建了一个`calculate_and_sort`函数来计算总成绩并排序。主函数负责读取学生人数、分配内存以及调用这个函数。最后别忘了在结束时释放内存。
阅读全文