1 条题解

  • 0

    题意分析:

    我们需要解决的问题是:给定多个测试用例,每个测试用例包含一个班级的学生人数和他们的成绩,计算并输出成绩高于平均分的学生百分比,结果四舍五入到小数点后三位。

    解题思路:

    读取输入数据:首先读取测试用例的数量 CC,然后逐个处理每个测试用例。 计算平均分: 对于每个测试用例,读取学生人数N NNN 个成绩。 计算这些成绩的总和,然后除以N N 得到平均分。 统计高于平均分的人数: 遍历所有成绩,统计高于平均分的学生人数。 计算百分比: 将高于平均分的人数除以总人数,乘以 100100,得到百分比。 输出结果: 将百分比四舍五入到小数点后三位,并按照指定格式输出。

    实现步骤:

    读取输入: 使用 cincin 读取测试用例的数量C C。 处理每个测试用例:使用循环处理每个测试用例。对于每个测试用例,读取学生人数N N。 使用数组或动态数组(如 vectorvector)存储 NN 个成绩,同时计算成绩总和。 计算平均分:将总和转换为double double类型后除以 NN,得到平均分。 统计高于平均分的人数:遍历成绩数组,统计成绩大于平均分的学生人数。 计算百分比:将高于平均分的人数除以总人数,乘以 100100,得到百分比。 输出结果:使用 coutcout 输出百分比,设置输出格式为固定小数点后三位(fixedfixedsetprecision(3)setprecision(3))。

    代码实现

    
    #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
    上传者