c语言,输入10个学生成绩。计算平均成绩ave,统计及格人数pass,计算高于平均分的学生人数better,将10个学生成绩排名
时间: 2024-03-20 16:44:44 浏览: 175
c代码-编程实现:输入10个学生的6门课成绩,分别求出每个学生的平均成绩。
好的,这是一个比较复杂的问题,我会尽力回答。以下是一个示例代码,可以实现你的要求:
```c
#include <stdio.h>
#define NUM_STUDENTS 10 // 学生数量
int main() {
int scores[NUM_STUDENTS]; // 学生成绩数组
int sum = 0; // 所有学生成绩的总和
int pass = 0; // 及格人数
int better = 0; // 高于平均分的学生人数
float ave; // 平均成绩
// 输入学生成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的成绩:", i+1);
scanf("%d", &scores[i]);
// 计算总和和及格人数
sum += scores[i];
if (scores[i] >= 60) {
pass++;
}
}
// 计算平均成绩
ave = (float) sum / NUM_STUDENTS;
// 计算高于平均分的学生人数
for (int i = 0; i < NUM_STUDENTS; i++) {
if (scores[i] > ave) {
better++;
}
}
// 输出统计结果
printf("平均成绩为:%.2f\n", ave);
printf("及格人数为:%d\n", pass);
printf("高于平均分的学生人数为:%d\n", better);
// 将学生成绩从高到低排序
for (int i = 0; i < NUM_STUDENTS-1; i++) {
for (int j = i+1; j < NUM_STUDENTS; j++) {
if (scores[i] < scores[j]) {
int temp = scores[i];
scores[i] = scores[j];
scores[j] = temp;
}
}
}
// 输出学生成绩排名
printf("学生成绩排名如下:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%d. %d\n", i+1, scores[i]);
}
return 0;
}
```
这段代码中,我们首先定义了一个长度为 10 的数组 `scores` 来保存学生成绩,并使用循环语句和 `scanf()` 函数来输入学生成绩并计算总和和及格人数。然后,我们计算平均成绩和高于平均分的学生人数,并使用另外一个循环语句来将学生成绩从高到低排序。最后,我们使用循环语句输出学生成绩排名。
希望这个示例代码可以帮到你!
阅读全文