簡體   English   中英

程序在執行程序的rest前退出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM