我不知道为什么调试断言在我的程序上失败的答案

I don't get the answer for why debug assertion failed on my program

本文关键字:程序上 失败 答案 我的 为什么 调试 断言 我不知道      更新时间:2023-10-16

我在编码社区中非常新。这是我的第一年,从未被告知关于调试断言错误。我已经尝试搜索几种解决方案,但我似乎无法将它们与我的代码联系起来,但我没有找到答案。

我很想就"调试断言失败"获得一些帮助。表达式:字符串下标出超出范围。

#include <iostream>
#include <string>
using namespace std;
//Declaring variables and arrays
int no_of_subs;
int main ()
{
    cout << " Please enter the number of subjects n n ";
    cin >> no_of_subs;
// Local Variable
string grade;
for (int i=1; i <= no_of_subs; i++)
    for (int counterSubs = 0; counterSubs < no_of_subs; counterSubs++)
    {
        cout << " Please enter the grade obtained for each subject n n "
            << i++ << " : ";
        cin >> grade [counterSubs];
    }
    system ("PAUSE");
    return 0;

}

我的代码是关于GPA的。我想制作一个阵列,以存储学生为每个学科获得的成绩。我期望输出如下:

"请输入每个主题的等级

1:用户输入等级2:

此程序有很多错误。您似乎正在尝试从一个而不是0开始索引索引。此外,您似乎正在尝试将成绩读为一个空字符串,并将此空字符串的不存在元素设置为正在阅读的成绩。此外,您是在您的for语句中以及在您的成绩中阅读时,递增i,我认为这不是您想要的。

我认为您在这里有一些非常根本的误解。我还怀疑您正在尝试做作业,所以我将其留给您的TAS和您自己纠正这些作业。

您遇到的调试断言错误是我认为您的实现正在做的事情。通常,这个程序会崩溃。但是,由于您正在尝试访问字符串的不存在元素,因此您的实现可能会有一些有用的代码,而不是崩溃。因此,这不是C 的标准部分,也不是可以指望发生的事情。我很惊讶您的实施正在这样做。