c++ - 为什么以这种方式使用 if 会阻止它运行
问题描述
所以在这里循环内的 if 是否可以以优化的方式编写 if 语句,还是应该只拆分两个条件?
#include <iostream>
using namespace std;
int main()
{
int grade, counter = 1, total = 0, average;
while (counter <= 10)
{
cout << "Enter grade /100: ";
cin >> grade;
if (grade < 0 && grade > 100) //HERE PLEASE
{
cout << "invalid grade value." << endl;
cout << "Reenter grade value */100*: ";
cin >> grade;
}
total = total + grade;
counter++;
}
average = total / 10;
cout << "\nThe class average is: " << average << endl;
return 0;
}
解决方案
if (grade < 0 && grade > 100)
没有小于1
和大于 的数字100
,因此条件false
每次都会返回。
如果您想要小于1
或大于100
,请尝试:
if (grade < 0 || grade > 100)
总的来说,您的代码应该是:
#include <iostream>
// using namespace std; is bad practice, so don't use it
int main()
{
int grade = 0, counter = 1, total = 0, average = 0;
while (counter <= 10)
{
std::cout << "Enter grade /100: ";
std::cin >> grade;
if (grade < 0 || grade > 100)
{
// use newline character instead of std::endl
std::cout << "invalid grade value." << '\n';
std::cout << "Reenter grade value */100*: ";
std::cin >> grade;
}
// a = a + b is equal to a += b
total += grade;
++counter;
}
average = total / 10;
std::cout << "\nThe class average is: " << average << '\n';
return 0;
}
推荐阅读
- visual-studio-code - 为什么 vscode 搜索的是 git 而不是项目
- java - 从 NER 获取全名
- python - 按下某个键时,窗口会显示上一帧
- html - HTML 在使用 javascript 的按钮单击时显示更多文本
- r - 如何通过 webhook 推动情节松弛?
- swiftui - swiftUI中的动画渐变填充
- r - 如何更改 h2o 数据框列名的接受语言的设置
- css - 如何在带有滚动条的小 div 中居中大尺寸 div
- firebase - 由于缺少“firebaseauth.googleapis.com 模拟器”,Firebase 触发功能被忽略
- spring-boot - 转换可完成的未来