用c语言随机产生 30个学生的C语言成绩(成绩范围在[0,100]之间),按照从大至小的顺序排序,分别显示排序前和排序后的结果,每行输出: 10个;并统计年出优秀(≥90分)及不及格(<60分)的人数。
时间: 2024-03-06 08:50:49 浏览: 143
好的,我可以为您编写这样的程序。下面是代码实现和注释:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 30 // 学生数量
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) { // 如果前一个数比后一个数小,交换两个数的位置
swap(&arr[j], &arr[j + 1]);
}
}
}
}
int main() {
int arr[N];
int excellent = 0; // 优秀的人数
int failed = 0; // 不及格的人数
srand(time(NULL)); // 设置随机数种子
// 随机生成学生的成绩
for (int i = 0; i < N; i++) {
arr[i] = rand() % 101; // 生成0-100之间的随机数
}
// 输出排序前的成绩
printf("排序前的成绩为:\n");
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
if (i % 10 == 9) { // 每行输出10个
printf("\n");
}
// 统计优秀和不及格的人数
if (arr[i] >= 90) {
excellent++;
} else if (arr[i] < 60) {
failed++;
}
}
bubbleSort(arr, N); // 对成绩进行从大到小排序
// 输出排序后的成绩
printf("\n排序后的成绩为:\n");
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
if (i % 10 == 9) { // 每行输出10个
printf("\n");
}
}
// 输出优秀和不及格的人数
printf("\n优秀的人数为:%d\n", excellent);
printf("不及格的人数为:%d\n", failed);
return 0;
}
```
这个程序使用了冒泡排序算法对学生的成绩进行排序,然后统计了优秀和不及格的人数。您可以通过编译和运行此程序来获得排序前和排序后的成绩以及优秀和不及格的人数。
阅读全文