c++ - 运行时检查失败 #2 - 变量 'projectAverage' 周围的堆栈已损坏

标签 c++ arrays for-loop stack overflow

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
    double hw = 0, hwTotal = 0, hwAverage[3], id[3], project = 0, projTotal = 0, projectAverage[3], hwProj, finalExam[3], total[3];
    int i = 0, j = 0, k = 0;

    for (j = 0; j < 3; j++){
        cout << "Input student ID: ";
        cin >> id[i];
        for (i = 0; i < 4; i++){
            cout << "Input homework assignment grade: ";
            cin >> hw;

            hwTotal = hwTotal + hw;
        }

        hwAverage[j] = hwTotal / 4;

        for (i = 0; i < 2; i++){
            cout << "Input project grade: ";
            cin >> project;

            projTotal = projTotal + project;
        }

        projectAverage[j] = projTotal / 2;

        hwProj = (hwAverage[j] + projectAverage[j]) / 2;

        cout << "Input final exam grade: ";
        cin >> finalExam[j];

        total[j] = (finalExam[j] + hwProj) / 2;
    }

    cout << endl;

    for (k = 0; k < 3; k++){
        cout << "Student ID: " << id[k] << endl;
        cout << "Homework Average: " << hwAverage[k] << endl;
        cout << "Project Average: " << projectAverage[k] << endl;
        cout << "Final exam grade: " << finalExam[k] << endl;
        cout << "Final average: " << total[k] << endl;

        cout << endl;
    }

    return 0;
}

出于某种原因,当我运行这段代码时,我的输出如下所示:

  • Input student ID: 123
  • Input homework assignment grade: 100
  • Input homework assignment grade: 100
  • Input homework assignment grade: 100
  • Input homework assignment grade: 100
  • Input project grade: 100
  • Input project grade: 100
  • Input final exam grade: 100
  • Input student ID: 12
  • Input homework assignment grade: 40
  • Input homework assignment grade: 40
  • Input homework assignment grade: 40
  • Input homework assignment grade: 40
  • Input project grade: 40
  • Input project grade: 40
  • Input final exam grade: 40
  • Input student ID: 1
  • Input homework assignment grade: 20
  • Input homework assignment grade: 20
  • Input homework assignment grade: 20
  • Input homework assignment grade: 20
  • Input project grade: 20
  • Input project grade: 20
  • Input final exam grade: 20

  • Student ID: 123

  • Homework Average: 100
  • Project Average: 100
  • Final exam grade: 100
  • Final average: 100

  • Student ID: -9.25596e+061

  • Homework Average: 140
  • Project Average: 140
  • Final exam grade: 40
  • Final average: 90

  • Student ID: 1

  • Homework Average: 160
  • Project Average: 160
  • Final exam grade: 20
  • Final average: 90

  • Press any key to continue . . .

我得到一个堆栈溢出错误。我是 C++ 的新手,我正在制作一个程序,要求用户提供 10 个家庭作业成绩、2 个项目成绩和 10 个学生的期末考试成绩(我程序中的数字较低,以便我可以测试它更容易)。我本来打算分别对家庭作业成绩和项目成绩求平均,然后对这些平均值求平均值,然后将该平均值与期末考试成绩求平均值以获得总平均值(对所有平均值感到抱歉),但它似乎不起作用并且我不知道为什么。就像我说的,我是 C++ 的新手,甚至是数组的新手,所以你们认为你们中的任何人都可以给我一些关于我哪里出错的见解吗?非常感谢!

最佳答案

像 hwAverage 这样的数组有 10 个元素(从 [0] 到 [9]),但你引用了元素 [10]。

要么定义更多元素,要么使用不同的索引。

关于c++ - 运行时检查失败 #2 - 变量 'projectAverage' 周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170207/

相关文章:

c++ - WMI 数据问题

c++ - 错误 LNK2001:未解析的外部符号 web::websockets::client::websocket_callback_client

c++ - 使用 C++ 元编程模板重载运算符

c# - C++ 从 C# COM DLL 调用函数

javascript - 有人可以向我解释为什么这个循环没有给我想要的结果吗?

java - 如何创建动态多维ArrayList?

javascript - for 循环中 i 的行为不是我所期望的

javascript - array.filter 不返回 Reactjs 中父数组的嵌套数组

r - 如何加速这种双 for 循环?

c++ - for循环中的条件不执行