为什么我的 while 语句没有结束?
Why doesn't my while statement end?
我创建了这个程序来计算人们测试的分数并计算成绩的数量。我想发生的是,当用户在程序询问"输入学生姓名"时输入"//"时,while 语句应该结束,或者这就是我认为应该发生的事情。实际发生的是我键入"//",然后程序要求分数,然后 while 语句结束。为什么会这样,我应该怎么做才能解决它?
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name, grade;
int score;
int count1 = 0;
int acount = 0;
int bcount = 0;
int ccount = 0;
int dcount = 0;
int fcount = 0;
while (name != "//") {
cout << "Enter Student Name n";
cin >> name;
cout << "Enter Student Score n";
cin >> score;
count1 += 1;
if (score >= 90) {
grade = "A";
acount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score >= 80) {
grade = "B";
bcount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score >= 70) {
grade = "C";
ccount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score >= 60) {
grade = "D";
dcount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score <= 59) {
grade = "F";
fcount += 1;
cout << name << " " << score << " " << grade << endl;
}
};
cout << "Summary Report n" << "Total Students Count: " << count1 << endl;
cout << "A student count: " << acount << endl;
cout << "B student count: " << bcount << endl;
cout << "C student count: " << ccount << endl;
cout << "D student count: " << dcount << endl;
cout << "F student count: " << fcount << endl;
return 0;
}
大部分事情已经在评论中说过了:
您的问题是,您希望循环持续检查其状况,但事实并非如此。
while(name != "//") // here the condition is evaluated
{
name = "//"; // here it is not
// the following code is executed, independent of the current name value
} // here the program jumps back to the loop condition, which is now false and it will not enter another time.
如评论中所述,可行的替代方案可能是:
while(true)
{
std::cin >> name;
if(name == "//")
break;
else
evaluateScore();
}
试试这个:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name, grade;
int score;
int count1 = 0;
int acount = 0;
int bcount = 0;
int ccount = 0;
int dcount = 0;
int fcount = 0;
while (true) { // keep running the loop
cout << "Enter Student Name n";
cin >> name;
if(name == "//") // if "//" found, break the loop
break;
cout << "Enter Student Score n";
cin >> score;
count1 += 1;
if (score >= 90) {
grade = "A";
acount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score >= 80) {
grade = "B";
bcount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score >= 70) {
grade = "C";
ccount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score >= 60) {
grade = "D";
dcount += 1;
cout << name << " " << score << " " << grade << endl;
}
else if (score <= 59) {
grade = "F";
fcount += 1;
cout << name << " " << score << " " << grade << endl;
}
};
cout << "Summary Report n" << "Total Students Count: " << count1 << endl;
cout << "A student count: " << acount << endl;
cout << "B student count: " << bcount << endl;
cout << "C student count: " << ccount << endl;
cout << "D student count: " << dcount << endl;
cout << "F student count: " << fcount << endl;
return 0;
}
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 为什么在这个代码结束循环中没有得到结束
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 为什么我的两个 cin 语句没有在程序结束时运行?
- while 循环 C++ 结束,但不继续到其余语句
- 为什么我的 while 语句没有结束?
- switch 语句结束和下一条语句之间的时间是否具有确定性(与路径无关)
- 对于语句结束两次
- 函数永远不会在 switch 语句中结束
- 用return语句结束析构函数安全吗
- C++ if 语句不会结束
- 谁能解释一下递归结束后这些语句是如何执行的
- For 循环结束自身并终止正在运行的程序,但在删除斜率计算语句时正常运行
- 警告 #1011:非 void 函数结束时缺少返回语句
- 在sentinel使用条件语句结束循环后显示最大值
- 临时的,在语句结束时不会被销毁
- 在没有返回语句的情况下到达函数结束
- 当一个返回对象的函数在没有返回语句的情况下结束时会发生什么
- libpqxx 结束准备的语句和结果