程序在执行程序的其余部分之前退出
Program exits before executing rest of the program
我正试图创建一个学生程序,但在我输入第四个名字后它就停止了,它不允许我输入成绩,也不允许在最后显示列表。。。
#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";
。
另一种选择是向每个数组再添加一个元素。数组的第一个元素将不会被使用,但这可能有助于您的可读性。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何让LLDB在成功时退出,在失败时等待
- C++控制台应用程序阻止退出
- 程序在执行程序的其余部分之前退出
- 构造函数在退出函数时无法初始化一个参数
- 为什么异常不退出程序?
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 退出简单while循环时出现问题
- 使用vscode调试时,GDB意外退出
- pclose() 不会给我进程退出代码
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++从另一个函数退出函数
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- C++逗号分隔的输入数组代码过早退出
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 为什么 C++ 中的以下结构声明会导致退出 127?
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 进程退出,返回值3221226356写入系统( "cls" )。(已解决)