流萤k423 2023-12-30 12:44 采纳率: 80.5%
浏览 4
已结题

C++计算平均分和不及格率

设计一个程序,计算某个班级的学生《C++程序设计》课程考试的平均分和不及格率。其中,试卷总分为100分,成绩低于60分为不及格。
要求:班级人数事先不确定,具体人数在程序运行后从键盘输入获得。并且,从堆空间上动态申请数组空间来存放整个班级学生的考试成绩。

提示:在堆空间上动态申请数组空间的格式:new type[size]; 同时返回一个指向数组空间开始位置的指针。释放堆空间数组的格式:delete [ ] pointer。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-30 14:12
    关注

    【以下回答由 GPT 生成】

    问题描述

    设计一个程序,用于计算某个班级学生《C++程序设计》课程考试的平均分和不及格率。其中,试卷总分为100分,成绩低于60分为不及格。

    请问如何设计这个程序,以满足以下要求:

    1. 班级人数事先不确定,具体人数在程序运行后从键盘输入获得。
    2. 从堆空间上动态申请数组空间来存放整个班级学生的考试成绩。
    3. 使用以下格式进行动态申请数组空间:new type[size],同时返回一个指向数组空间开始位置的指针。
    4. 使用以下格式释放堆空间数组:delete [] pointer

    解决方案

    步骤 1

    首先,通过用户输入获取班级人数。

    int numStudents;
    cout << "请输入班级人数: ";
    cin >> numStudents;
    

    步骤 2

    使用new运算符,在堆空间上动态申请一个整型数组,用来存储学生的考试成绩。申请的数组大小应为班级人数。

    int* scores = new int[numStudents];
    

    步骤 3

    通过循环,获取每个学生的考试成绩,并将其存储在相应的数组元素中。

    for (int i = 0; i < numStudents; i++) {
        cout << "请输入第 " << i + 1 << " 位学生的考试成绩: ";
        cin >> scores[i];
    }
    

    步骤 4

    使用循环,计算考试成绩低于60分的学生人数,以得到不及格人数。

    int numFailures = 0;
    for (int i = 0; i < numStudents; i++) {
        if (scores[i] < 60) {
            numFailures++;
        }
    }
    

    步骤 5

    通过循环,计算班级的总成绩。

    int totalScore = 0;
    for (int i = 0; i < numStudents; i++) {
        totalScore += scores[i];
    }
    

    步骤 6

    计算班级的平均分。需要注意,平均分应根据班级实际人数计算。

    double averageScore = static_cast<double>(totalScore) / numStudents;
    

    步骤 7

    计算不及格率,也需要根据班级实际人数计算。

    double failureRate = static_cast<double>(numFailures) / numStudents * 100;
    

    步骤 8

    输出计算结果。

    cout << "班级平均分: " << averageScore << endl;
    cout << "不及格率: " << failureRate << "%" << endl;
    

    步骤 9

    释放动态申请的数组空间,以防止内存泄漏。

    delete[] scores;
    

    完整代码

    下面是完整的C++代码:

    #include <iostream>
    using namespace std;
    
    int main() {
        int numStudents;
        cout << "请输入班级人数: ";
        cin >> numStudents;
    
        int* scores = new int[numStudents];
    
        for (int i = 0; i < numStudents; i++) {
            cout << "请输入第 " << i + 1 << " 位学生的考试成绩: ";
            cin >> scores[i];
        }
    
        int numFailures = 0;
        for (int i = 0; i < numStudents; i++) {
            if (scores[i] < 60) {
                numFailures++;
            }
        }
    
        int totalScore = 0;
        for (int i = 0; i < numStudents; i++) {
            totalScore += scores[i];
        }
    
        double averageScore = static_cast<double>(totalScore) / numStudents;
        double failureRate = static_cast<double>(numFailures) / numStudents * 100;
    
        cout << "班级平均分: " << averageScore << endl;
        cout << "不及格率: " << failureRate << "%" << endl;
    
        delete[] scores;
    
        return 0;
    }
    

    请确保按照步骤顺序编写代码,并注意释放动态申请的数组空间,以防止内存泄漏。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?