C++ C+中的嵌套循环+;和用户输入
我对编程非常陌生,我有一项任务需要完成以下几点:C++ C+中的嵌套循环+;和用户输入,c++,loops,nested-loops,C++,Loops,Nested Loops,我对编程非常陌生,我有一项任务需要完成以下几点: 询问总人数 得到他们每个人的名字 允许用户为每个人输入最多5分 如果某个人的分数低于5分,输入-100将停止该操作 到目前为止,我写了以下内容: #include <iostream> using namespace std; int main() { string personName; int totalPerson, personScoreCounter; double personGrade,
- 询问总人数
- 得到他们每个人的名字
- 允许用户为每个人输入最多5分
- 如果某个人的分数低于5分,输入-100将停止该操作
#include <iostream>
using namespace std;
int main() {
string personName;
int totalPerson, personScoreCounter;
double personGrade, personGradeTotal;
cout << "Input total amount of people: ";
cin >> totalPerson;
for (int person = 1; person <= totalPerson; person++)
{
cout << "Input name for person " << person << ": ";
getline(cin, personName);
cin.ignore();
while ( (personGrade != -100) && (personScoreCounter <= 5) )
{
cout << "Input up to 5 scores for " << personName << " (-100 to end): ";
cin >> personGrade;
if (personGrade >= 0 && personGrade <= 100) // valid range of scores
{
personGradeTotal += personGrade;
personScoreCounter++;
}
else
{
cout << "Input only scores from 0-100" << endl;
}
cout << "Input up to 5 scores for " << personName << " (-100 to end): ";
cin >> personGrade;
}
}
// calculate averages and other stuff in here.
return 0;
}
#包括
使用名称空间std;
int main(){
字符串personName;
int totalPerson、personScoreCounter;
双倍个人收入,个人收入总额;
cout>totalPerson;
对于(int person=1;person在而组中,您只想使用cout
行一次(开始时看起来不错)
您的第一个检查应该是==-100
或类似的,因为现在,如果您输入-100
,您将得到一条“仅输入0到100分”的消息
每次使用cin>>变量
后,应保留一个cin.ignore();
调用,因为这样会删除EoL字符
示例代码:
#include <iostream>
using namespace std;
int main() {
int totalPerson;
cout << "Input total number of people: ";
cin >> totalPerson;
cin.ignore();
for (int person = 1; person <= totalPerson; person++)
{
int personScoreCounter=0;
double personGrade = -1, personGradeTotal=0;
string personName;
cout << "Input name for person " << person << ": ";
std::getline(cin, personName);
while ( (personGrade != -100) && (personScoreCounter < 5) )
{
cout << "Input up to 5 scores for " << personName << " (-100 to end): ";
cin >> personGrade;
cin.ignore();
if (personGrade == -100) {
break;
} else if (personGrade >= 0 && personGrade <= 100) {
personGradeTotal += personGrade;
personScoreCounter++;
} else {
cout << "Input only scores from 0-100" << endl;
}
}
// calculate averages and other stuff in here.
double avg = personGradeTotal / personScoreCounter;
cout << "Avg = " << avg << endl;
}
return 0;
}
#包括
使用名称空间std;
int main(){
整人;
cout>totalPerson;
cin.ignore();
对于(int person=1;person您也可以尝试cin.getline()而不是getline(std::cin,…):
这也允许在输入中使用空格。
可能与cin.ignore()有关<代码> >人物> <代码> >或代码>人物记分器>代码>,这是未定义的行为。谢谢克里斯,先生,我将等待你的回答。@ CysB2244,你也可以考虑将你的代码从<代码>输入到5个名字:< <代码> >代码>进入分数>(计数器)。对于名称:
或类似内容,其内容为“为MyName:(-100到end)输入分数1”,为MyName:(-100到end)输入分数2,…请注意,与@user657267一样,您应该定义(而不仅仅是声明)可以在没有赋值的情况下使用的变量。例如,在personGradeTotal
上使用+=
运算符,但不首先给出personGradeTotal
值,这是个坏消息(我想-用语言律师式的问题检查)。
int max_length = 30;
std::cin.getline(personName, max_length, '\n'); // \n is option termination.