首页 > 解决方案 > 为什么以这种方式使用 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;
}

标签: c++visual-studioif-statementvisual-c++

解决方案


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;
}

推荐阅读