帮我用类c语言设计一个算法要求如下是某班级有n个学生输入全班学生的学号和母婴们课程的考试成绩将该课程的成绩按由高到低的顺序排序求出平均成绩和不合格学生的人数最后设计main调用以上算法后按从高到低的次序输出学生的学号和相应的成绩输出平均成绩和不合格学生人数
下面是一个用类C语言设计的算法来实现你的要求:
#include <stdio.h>
#define MAX_STUDENTS 100
typedef struct {
int studentID;
float grade;
} Student;
void sortStudents(Student students[], int n) {
int i, j;
Student temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (students[j].grade < students[j+1].grade) {
temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
float calculateAverageGrade(Student students[], int n) {
float sum = 0;
int i;
for (i = 0; i < n; i++) {
sum += students[i].grade;
}
return sum / n;
}
int countFailingStudents(Student students[], int n) {
int count = 0;
int i;
for (i = 0; i < n; i++) {
if (students[i].grade < 60) {
count++;
}
}
return count;
}
void printStudents(Student students[], int n) {
int i;
printf("学号\t成绩\n");
for (i = 0; i < n; i++) {
printf("%d\t%.2f\n", students[i].studentID, students[i].grade);
}
printf("\n");
}
int main() {
int n, i;
Student students[MAX_STUDENTS];
printf("请输入学生人数:");
scanf("%d", &n);
if (n > MAX_STUDENTS) {
printf("学生人数超过最大限制!\n");
return 0;
}
for (i = 0; i < n; i++) {
printf("请输入学生%d的学号:", i+1);
scanf("%d", &students[i].studentID);
printf("请输入学生%d的成绩:", i+1);
scanf("%f", &students[i].grade);
}
sortStudents(students, n);
printf("\n按成绩由高到低排序后的学生信息:\n");
printStudents(students, n);
float averageGrade = calculateAverageGrade(students, n);
printf("平均成绩:%.2f\n", averageGrade);
int failingStudents = countFailingStudents(students, n);
printf("不合格学生人数:%d\n", failingStudents);
return 0;
}
你可以将上述代码保存到一个以.c为扩展名的文件中,然后使用C编译器进行编译和运行。在运行程序时,根据提示输入学生人数以及每个学生的学号和成绩,然后程序将按要求输出排序后的学生信息、平均成绩和不合格学生人数。
原文地址: https://www.cveoy.top/t/topic/jc78 著作权归作者所有。请勿转载和采集!