用C语言写 输入全班30个学生每人6门功课的成绩,计算个人平均成绩,并按名次排序输出
时间: 2024-02-13 22:04:33 浏览: 246
C语言学生成绩标准管理系统设计方案报告.doc
好的,下面是用C语言实现输入全班30个学生每人6门功课的成绩,计算个人平均成绩,并按名次排序输出的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 30
#define MAX_GRADES 6
typedef struct {
char name[20];
int grades[MAX_GRADES];
float avg;
} student;
int compare(const void* a, const void* b) {
float diff = ((student*)b)->avg - ((student*)a)->avg;
if (diff > 0) return 1;
if (diff < 0) return -1;
return 0;
}
int main() {
student students[MAX_STUDENTS];
int n = 0;
// 输入成绩
while (n < MAX_STUDENTS) {
if (scanf("%s", students[n].name) == EOF) break;
for (int i = 0; i < MAX_GRADES; i++) {
scanf("%d", &students[n].grades[i]);
}
n++;
}
// 计算平均成绩
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 0; j < MAX_GRADES; j++) {
sum += students[i].grades[j];
}
students[i].avg = (float)sum / MAX_GRADES;
}
// 按平均成绩排序
qsort(students, n, sizeof(student), compare);
// 输出名次
for (int i = 0; i < n; i++) {
printf("%d. %s %.2f\n", i + 1, students[i].name, students[i].avg);
}
return 0;
}
```
这个程序使用了结构体来存储每个学生的姓名、成绩和平均成绩,使用qsort函数来按照平均成绩排序。你可以将每个学生的成绩依次输入,然后按下回车键结束输入。程序会自动计算每个学生的平均成绩并按照平均成绩排序后输出名次。
阅读全文