Моя программа заключается в следующем:массив вызывает ошибку переполнения стека
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char choice;
int o,i,marks[i],ttlcredit=0;
double ttlGPA=0,finalGPA=0,credit[7][2],clsavg;
cout<<"Please enter what you want to calculate"<<endl;
cout<<"A for calculating Class Average GPA"<<endl;
cout<<"B for calculating a Specific GPA"<<endl;
cout<<"Your choice is? ";
cin>>choice;
cout<<endl;
if (choice == 'A'||choice == 'a')
{
cout<<"=========================================="<<endl;
cout<<" Class Average GPA"<<endl;
cout<<"=========================================="<<endl<<endl;
cout<<"Please enter the number of students in the class: ";
cin>>number;
for(i=0;i<number;i++)
{
cout<<"\nEnter student #"<<i+1<<"'s marks: ";
cin>>marks[i];
ttlGPA=ttlGPA+marks[i];
}
clsavg=ttlGPA/number;
cout<<"\nThe Average is: "<<clsavg<<endl;
}
else
{
}
}
Он наполовину завершен. Когда я построить и запустить на CodeBlocks, ошибка мгновенно появилась:
Я пытался найти источник ошибки, и я думаю, что это вызвано следующими причинами в коде:
int o,i,marks[i],ttlcredit=0;
Что делает меня думаю, так это потому, что когда я удаляю [i] с отмечает [i], я не буду получать эту ошибку.
Я думаю, что это переполнение стека, потому что я использую Microsoft Visual Studio, чтобы помочь мне отлаживать и это ошибка, они дали мне:
Unhandled exception at 0x0041419e in Project (1).exe: 0xC00000FD: Stack overflow.
Мой вопрос ...
- ли что основная причина проблемы?
- Как решить эту проблему?
'i' неинициализирован, когда выделяется' marks [i] '. Кроме того, это расширение компилятора (не стандартное C++), вы должны установить 'i' в правильное значение, прежде чем выделять' int marks [i]; '. –