输入n(4<=n<=20)个学生的C语言课程的成绩,请从将分数从高到底进行排序显示,并分别统计100-90,89-60,60以下这三个分数段的学生人数。
时间: 2024-09-28 21:04:53 浏览: 61
C语言课程设计—学生成绩管理系统
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 首先,创建一个结构体`Student`来存储学生的信息,包括姓名和成绩。
```c
typedef struct {
char name[50];
int score;
} Student;
```
2. 定义一个函数用于读取输入并填充`Student`数组。
```c
void inputStudents(Student students[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名和成绩:", i + 1);
scanf("%s %d", students[i].name, &students[i].score);
}
}
```
3. 创建另一个函数用于排序并统计分数段。
```c
void sortAndCount(int startRange, int endRange, Student students[], int n) {
// 使用冒泡排序对学生按成绩降序排列
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score > students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
int count[3] = {0};
for (int i = 0; i < n; i++) {
if (students[i].score >= startRange && students[i].score <= endRange) {
count[startRange / 10]++; // 由于题目要求范围精确到10分,所以除以10
}
}
printf("\n成绩在%d-%d分段的学生有:%d\n", startRange, endRange, count[0]);
}
```
4. 主函数中调用上述函数,并处理总成绩的计算和输出。
```c
int main() {
int n;
printf("请输入学生数量(4 <= n <= 20):");
scanf("%d", &n);
Student students[n];
// 输入学生信息
inputStudents(students, n);
// 分数段统计与显示
sortAndCount(90, 100, students, n); // 90-100分段
sortAndCount(89, 90, students, n); // 89-90分段
sortAndCount(60, 89, students, n); // 60-89分段
sortAndCount(0, 60, students, n); // 60以下分段
return 0;
}
```
当你运行程序时,它会提示输入学生数量以及每个学生的姓名和成绩,然后按照题目要求对成绩进行排序并统计各分数段的学生人数。记得检查输入的有效性,以避免超出给定范围的问题。
阅读全文