devc++ 随机产生 30 个学生的c 语言成绩(成绩范围在[0.1001之间),按照从大到小的 顺序排序,分别显示排序前和排序后的结果,每行输出 10个:并统计输出优秀(三90 分)及不及格(<60分)的人数
时间: 2024-03-25 12:37:20 浏览: 51
好的,以下是代码实现:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
int main()
{
const int num = 30;
double scores[num];
int excellent = 0, fail = 0; // 优秀和不及格人数
srand(time(NULL)); // 以当前时间作为随机数种子
// 随机生成成绩并输出
cout << "生成的成绩为:" << endl;
for(int i = 0; i < num; i++)
{
scores[i] = rand() % 1001 / 10.0;
cout << scores[i] << " ";
}
cout << endl << endl;
// 排序
sort(scores, scores + num, greater<double>());
// 输出排序后的结果并统计人数
cout << "排序后的结果为:" << endl;
for(int i = 0; i < num; i++)
{
cout << scores[i] << " ";
if(scores[i] >= 90) excellent++;
else if(scores[i] < 60) fail++;
if((i+1) % 10 == 0) cout << endl;
}
cout << endl << endl;
// 输出优秀和不及格人数
cout << "优秀人数:" << excellent << endl;
cout << "不及格人数:" << fail << endl;
return 0;
}
```
代码说明:
1. 首先定义了常量`num`表示学生数量,定义了一个数组`scores`存储成绩,定义了`excellent`和`fail`分别表示优秀和不及格人数。
2. 通过`srand()`函数和`time()`函数生成随机数种子,使得每次程序运行时生成的随机数都不同。
3. 使用`rand()`函数生成随机数,并将其转换成[0, 100.0]之间的浮点数存入`scores`数组中,并输出。
4. 使用`sort()`函数对`scores`数组进行排序,从大到小排序。
5. 输出排序后的结果,并统计优秀和不及格人数。每输出10个成绩就换行一次。
6. 最后输出优秀和不及格人数。
注意事项:
1. 需要包含`<iostream>`头文件进行输入输出操作。
2. 需要包含`<cstdlib>`头文件进行随机数生成操作。
3. 需要包含`<ctime>`头文件获取当前时间。
4. 需要使用`using namespace std;`语句简化代码。
5. 使用`sort()`函数需要包含`<algorithm>`头文件。排序时需要使用`greater<double>()`函数作为第三个参数,表示从大到小排序。
阅读全文