随机产生 30 个学生的c 语言成绩(成绩范围在[0.1001之间),按照从大到小的 顺序排序,分别显示排序前和排序后的结果,每行输出 10个:并统计输出优秀(三90 分)及不及格(<60分)的人数。 编程输出如下图所示的杨辉三角形。
时间: 2024-03-25 13:37:10 浏览: 25
好的,我会尽力回答你的问题。
以下是针对你的问题的回答:
1. 随机产生 30 个学生的c 语言成绩(成绩范围在[0.1001之间),按照从大到小的 顺序排序,分别显示排序前和排序后的结果,每行输出 10个:并统计输出优秀(三90 分)及不及格(<60分)的人数。
你可以参考以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_OF_STUDENTS 30
int main() {
float scores[NUM_OF_STUDENTS];
int excellent_count = 0, failed_count = 0;
// 生成随机数种子
srand(time(NULL));
// 随机生成成绩
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
scores[i] = (float) (rand() % 1000) / 10.0;
}
// 排序前的结果
printf("排序前:\n");
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
printf("%.1f ", scores[i]);
if ((i + 1) % 10 == 0) {
printf("\n");
}
if (scores[i] >= 90.0) {
excellent_count++;
} else if (scores[i] < 60.0) {
failed_count++;
}
}
printf("\n");
// 从大到小排序
for (int i = 0; i < NUM_OF_STUDENTS - 1; i++) {
for (int j = i + 1; j < NUM_OF_STUDENTS; j++) {
if (scores[i] < scores[j]) {
float temp = scores[i];
scores[i] = scores[j];
scores[j] = temp;
}
}
}
// 排序后的结果
printf("排序后:\n");
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
printf("%.1f ", scores[i]);
if ((i + 1) % 10 == 0) {
printf("\n");
}
}
printf("\n");
// 输出统计结果
printf("优秀人数:%d\n", excellent_count);
printf("不及格人数:%d\n", failed_count);
return 0;
}
```
2. 编程输出如下图所示的杨辉三角形。
你可以参考以下代码实现:
```c
#include <stdio.h>
#define N 10
int main() {
int a[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
a[i][j] = 1;
} else {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
希望能够帮到你!如果你还有其他问题,可以继续问我。
阅读全文