3.随机产生30个学生的C语言成绩(成绩范围在,100]之间),统计并输出不及格(<60分)的人数,并按照从大到小的顺序将数组所有元素进行排序,分别显示排序前和排序后的结果,每行输出10个。
时间: 2023-06-15 12:07:50 浏览: 37
以下是实现上述功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_STUDENTS 30
#define MIN_GRADE 1
#define MAX_GRADE 100
#define PASS_GRADE 60
void print_array(int arr[], int len);
void bubble_sort(int arr[], int len);
int main() {
int grades[NUM_STUDENTS];
int num_fails = 0;
// 生成随机成绩
srand(time(NULL));
for (int i = 0; i < NUM_STUDENTS; i++) {
grades[i] = rand() % MAX_GRADE + MIN_GRADE;
if (grades[i] < PASS_GRADE) {
num_fails++;
}
}
// 输出不及格人数
printf("不及格人数:%d\n", num_fails);
// 输出排序前的成绩数组
printf("排序前:\n");
print_array(grades, NUM_STUDENTS);
// 对成绩数组进行排序
bubble_sort(grades, NUM_STUDENTS);
// 输出排序后的成绩数组
printf("排序后:\n");
print_array(grades, NUM_STUDENTS);
return 0;
}
// 打印数组
void print_array(int arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
if ((i + 1) % 10 == 0) {
printf("\n");
}
}
printf("\n");
}
// 冒泡排序
void bubble_sort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
这个程序首先使用 `srand()` 和 `rand()` 函数生成随机成绩,然后遍历整个成绩数组,统计不及格人数。接下来,程序使用 `print_array()` 函数分别输出排序前和排序后的成绩数组,并使用 `bubble_sort()` 函数对成绩数组进行排序。