C++ 递增在 If else 语句中不起作用

C++ Incrementing Not Working in If Else statement

本文关键字:语句 不起作用 else If C++      更新时间:2023-10-16

我正在尝试创建一个程序,允许用户输入五位评委给出的分数。但是,一旦到达第三个法官的分数,用于标记法官#的增量就停止工作,我相信这与它在if/else语句中有关。这是我的代码:

#include <iostream>
#include <string>
using namespace std;
string name;
string city;
double highestScore;
double lowestScore;
double totalScore;
void main()
{
    cout << "   Report to the media" << endl;
    cout << "Enter the diver name: ";
    getline(cin, name);
    cout << endl;
    cout << "Enter the diver's city: ";
    getline(cin, city);
    cout << endl;
    int count = 0;
    double score1, score2, score3, score4, score5;
    int judgeNum = 0;
    judgeNum ++;
    cout << "Enter the score given by judge #" << judgeNum << ": ";
    cin >> score1;
    if (score1 < 0 || score1 > 10)
            {
                cout << endl;
                cout << "Score must be between 1 and 10. Please re-enter score: ";
                cin >> score1;
            }
    cout << endl; 
    count ++;
    while (count <= 5)
    {
        judgeNum ++;
        count ++;
        cout << "Enter the score given by judge #" << judgeNum << ": ";
        if (judgeNum = 2)
        {
            cin >> score2;
            if (score2 < 0 || score2 > 10)
            {
                cout << endl;
                cout << "Score must be between 1 and 10. Please re-enter score: ";
                cin >> score2;
            }
        }
        else 
        {
            if (judgeNum = 3)
            {
                cin >> score3;
                if (score3 < 0 || score3 > 10)
                {
                    cout << endl;
                    cout << "Score must be between 1 and 10. Please re-enter score: ";
                    cin >> score3;
                }               
            }
            else 
            {
                if (judgeNum = 4)
                {
                    cin >> score4;
                    if (score4 < 0 || score4 > 10)
                    {
                        cout << endl;
                        cout << "Score must be between 1 and 10. Please re-enter score: ";
                        cin >> score4;
                    }
                }
                else 
                {
                    if (judgeNum = 5)
                    {
                        cin >> score5;
                        if (score5 < 0 || score5 > 10)
                        {
                            cout << endl;
                            cout << "Score must be between 1 and 10. Please re-enter score: ";
                            cin >> score5;
                        }
                    }
                }
            }
        }
        cout << endl;
    }
    cout << score1 << score2 << score3 << score4 << score5;
}

if (judgeNum = 2)将 judgeNum 设置为 2,然后检查 judgeNum 的新值是否为 "truthy"(非零(。由于新值为 2,因此它将始终为 2,并且 judgeNum 将始终在此处设置为 2,然后递增。

在 C、C++ 和大多数其他语言中,相等性是使用两个=来确定的,如 if (judgeNum == 2) 。首先尝试修复它。

除了 kdmurray91 的答案

正确的一个

using namespace std;
string name;
string city;
double highestScore;
double lowestScore;
double totalScore;
void main()
{
    cout << "   Report to the media" << endl;
    cout << "Enter the diver name: ";
    getline(cin, name);
    cout << endl;
    cout << "Enter the diver's city: ";
    getline(cin, city);
    cout << endl;
    int count = 0;
    double score1, score2, score3, score4, score5;
    int judgeNum = 0;
    judgeNum ++;
    cout << "Enter the score given by judge #" << judgeNum << ": ";
    cin >> score1;
    if (score1 < 0 || score1 > 10)
            {
                cout << endl;
                cout << "Score must be between 1 and 10. Please re-enter score: ";
                cin >> score1;
            }
    cout << endl; 
    count ++;
    while (count <= 5)
    {
        judgeNum ++;
        count ++;
        cout << "Enter the score given by judge #" << judgeNum << ": ";
        if (judgeNum == 2)
        {
            cin >> score2;
            if (score2 < 0 || score2 > 10)
            {
                cout << endl;
                cout << "Score must be between 1 and 10. Please re-enter score: ";
                cin >> score2;
            }
        }
        else 
        {
            if (judgeNum == 3)
            {
                cin >> score3;
                if (score3 < 0 || score3 > 10)
                {
                    cout << endl;
                    cout << "Score must be between 1 and 10. Please re-enter score: ";
                    cin >> score3;
                }               
            }
            else 
            {
                if (judgeNum == 4)
                {
                    cin >> score4;
                    if (score4 < 0 || score4 > 10)
                    {
                        cout << endl;
                        cout << "Score must be between 1 and 10. Please re-enter score: ";
                        cin >> score4;
                    }
                }
                else 
                {
                    if (judgeNum == 5)
                    {
                        cin >> score5;
                        if (score5 < 0 || score5 > 10)
                        {
                            cout << endl;
                            cout << "Score must be between 1 and 10. Please re-enter score: ";
                            cin >> score5;
                        }
                    }
                }
            }
        }
        cout << endl;
    }
    cout << score1 << score2 << score3 << score4 << score5;
}