1 条题解
-
0
题意分析:
我们需要解决的问题是:给定多个测试用例,每个测试用例包含一个班级的学生人数和他们的成绩,计算并输出成绩高于平均分的学生百分比,结果四舍五入到小数点后三位。
解题思路:
读取输入数据:首先读取测试用例的数量 ,然后逐个处理每个测试用例。 计算平均分: 对于每个测试用例,读取学生人数和 个成绩。 计算这些成绩的总和,然后除以得到平均分。 统计高于平均分的人数: 遍历所有成绩,统计高于平均分的学生人数。 计算百分比: 将高于平均分的人数除以总人数,乘以 ,得到百分比。 输出结果: 将百分比四舍五入到小数点后三位,并按照指定格式输出。
实现步骤:
读取输入: 使用 读取测试用例的数量。 处理每个测试用例:使用循环处理每个测试用例。对于每个测试用例,读取学生人数。 使用数组或动态数组(如 )存储 个成绩,同时计算成绩总和。 计算平均分:将总和转换为类型后除以 ,得到平均分。 统计高于平均分的人数:遍历成绩数组,统计成绩大于平均分的学生人数。 计算百分比:将高于平均分的人数除以总人数,乘以 ,得到百分比。 输出结果:使用 输出百分比,设置输出格式为固定小数点后三位( 和 )。
代码实现
#include <iostream> #include <iomanip> using namespace std; int main() { int C; cin >> C; for (int i = 0; i < C; ++i) { int N; cin >> N; int sum = 0; int grades[1000]; // 假设最大班级人数为1000 // 读取成绩并计算总和 for (int j = 0; j < N; ++j) { cin >> grades[j]; sum += grades[j]; } // 计算平均分 double average = static_cast<double>(sum) / N; // 统计高于平均分的人数 int count = 0; for (int j = 0; j < N; ++j) { if (grades[j] > average) { count++; } } // 计算百分比并输出,保留3位小数 double percentage = static_cast<double>(count) * 100.0 / N; cout << fixed << setprecision(3) << percentage << "%" << endl; } return 0; }
- 1
信息
- ID
- 1351
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 1
- 上传者