我认为我做得对,但我不明白为什么当我输入q
时程序才会关闭。我对编程一般都很陌生(不仅仅是c ++),并且非常感谢一些帮助。这是我在Array部分的一个项目,我在课堂上落后了。
#include <iostream>
#include <string>
using namespace std;
void inputData();
void displayPlayerData();
void calculateAverageScore();
void displayBelowAverage();
const int ARRAY_SIZE = 100;
string m_playerNames[ARRAY_SIZE];
string m_playerScores[ARRAY_SIZE];
int m_currentPlayer = 0;
int m_totalScore = 0;
int m_totalPlayers = 0;
double m_averageScore = 0;
int main()
{
inputData();
displayPlayerData();
calculateAverageScore();
displayBelowAverage();
return 0;
cin.ignore();
cin.get();
}
void inputData()
{
m_currentPlayer = 0;
while (m_currentPlayer < ARRAY_SIZE)
{
cout << "Enter Player Name (Q to quit)" << endl;
cin >> m_playerNames[m_currentPlayer];
if ((m_playerNames[m_currentPlayer] == "Q") || (m_playerNames[m_currentPlayer] == "q"))
{
break;
}
cout << "Enter Player Score" << endl;
cin >> m_playerScores[m_currentPlayer];
m_currentPlayer++;
}
m_totalPlayers = m_currentPlayer;
}
void displayPlayerData()
{
m_currentPlayer = 0;
cout << endl << "Players Summary:" << endl;
while (m_currentPlayer < m_totalPlayers)
{
cout << m_playerNames[m_currentPlayer] << ": " << m_playerScores[m_currentPlayer] << endl;
m_currentPlayer++;
}
}
void calculateAverageScore()
{
m_currentPlayer = 0;
m_totalScore = 0;
while (m_currentPlayer < m_totalPlayers)
{
m_totalScore += atoi(m_playerScores[m_currentPlayer].c_str());
m_currentPlayer++;
}
m_averageScore = m_totalScore / m_totalPlayers;
cout << endl << "Average score is " << m_averageScore << endl;
}
void displayBelowAverage()
{
m_currentPlayer = 0;
cout << endl << "Players not reaching average:" << endl;
while (m_currentPlayer <= m_totalPlayers)
{
if (atof(m_playerScores[m_currentPlayer].c_str()) < m_averageScore)
{
cout << m_playerNames[m_currentPlayer] << ": " << m_playerScores[m_currentPlayer] << endl;
}
m_currentPlayer++;
}
}
答案 0 :(得分:1)
最有可能的是,你打算用
来暂停程序cin.ignore();
cin.get();
所以你可以阅读输出。但是你在return
声明之后写了这个,那它做了什么?当您从return
main
时,您的计划结束。将return 0;
作为main
中的最后一个语句。
答案 1 :(得分:1)
这些行
if ((m_playerNames[m_currentPlayer] == "Q") || (m_playerNames[m_currentPlayer] == "q"))
{
break;
}
表示Q
或q
将退出while
中的inputData()
循环。发生这种情况时,inputData()
结束并控制返回main()
。但是程序在请求更多输入之前就已经死了,因为你在main()
中有死代码:
displayPlayerData();
calculateAverageScore();
displayBelowAverage();
return 0; // returns 0 and exits the program
cin.ignore(); // never runs
cin.get(); // never runs
尝试撤消main()
的最后三行:
cin.ignore();
cin.get();
return 0;