[英]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++)
的兩個循環是錯誤的,因為您只能將索引0, 1, 2, 3
用於 4 元素 arrays。
您應該改用for(cont=0;cont<4;cont++)
並更改cout<<"STUDENT "<<cont<<"\n";
到cout<<"STUDENT "<<(cont+1)<<"\n";
.
另一種選擇是向每個 arrays 添加一個元素。 那時不會使用 arrays 的第一個元素,但這可能有助於您的可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.