程序在执行程序的其余部分之前退出

Program exits before executing rest of the program

本文关键字:退出 余部 执行程序 程序      更新时间:2023-10-16

我正试图创建一个学生程序,但在我输入第四个名字后它就停止了,它不允许我输入成绩,也不允许在最后显示列表。。。

#include<iostream>
using namespace std;
int main()
{
string name[4];
double g1[4],g2[4],avg[4];
int cont;
for(cont=1;cont<=4;cont++)
{
cout<<"STUDENT "<<cont<<"n";
cout<<"Name: ";
cin>>name[cont];
cout<<"First Grade: ";
cin>>g1[cont];
cout<<"Second Grade: ";
cin>>g2[cont];
avg[cont]=(g1[cont]+g2[cont])/2;
}
cout<<"STUDENTS LIST"<<"n";
cout<<"--------------"<<"n";
for(cont=1;cont<=4;cont++)
{
cout<<name[cont]<<" "<<avg[cont]<<"n";
}
}

string name[4];是一个包含4个元素的数组。有效索引为0、1、2和3。循环跳过第一个元素,并在最后一个迭代中越界访问数组。这会导致未定义的行为。任何事情都有可能发生。

两个循环for(cont=1;cont<=4;cont++)是错误的,因为您只能对4元素数组使用标记0, 1, 2, 3

您应该使用for(cont=0;cont<4;cont++),并将cout<<"STUDENT "<<cont<<"n";更改为cout<<"STUDENT "<<(cont+1)<<"n";

另一种选择是向每个数组再添加一个元素。数组的第一个元素将不会被使用,但这可能有助于您的可读性。