首页 > 解决方案 > 在获取用户输入时,我将输入的最小和最大数字设置为他们自己的变量,但无论出于何种原因,它们开始 = 为 0

问题描述

在获取用户输入时,我将输入的最小和最大数字设置到他们自己的变量中,但无论出于何种原因,它们开始 = 为 0。

代码:

#include <iostream>

using namespace std;

int main()
{
    int num;
    string var;
    int sum = 0;
    int i;
    int largest = INT_MIN;
    int smallest = INT_MAX;
    int j = 0;
    int prime = 0;
    do {
        cout << "Please enter a series of numbers, press (Q or q) to process: ";
        cin >> num;
        if (cin.fail())
        {
            cin.clear();
            cin >> var;
            if (var != "Q" && var != "q")
            {
                cout << "Invalid input, try again" << endl;
            }

        }
        if (num > largest)
        {
            largest = num;
        }
        if (num < smallest)
        {
            smallest = num;
        }
        if (num == 0 || num == 1)
        {
            prime = prime;
        }
        else
        {
            for (i = 2; i <= num / 2; i++)
            {
                if (num % i == 0)
                {
                    j = 1;
                    break;
                }
            }
            if (j == 0)
            {
                prime++;
            }
        }
        sum += num;
        cout << "The corresponding element for the cumulative total sequence is: " << sum << endl;
        cin.ignore(sum, '\n');
    } while (var != "Q" && var != "q");
    cout << endl;
    cout << "Largest number: " << largest << endl;
    cout << "Smallest number: " << smallest << endl;
    cout << "How many prime numbers? " << prime << endl;
    cout << "Have a great day!" << endl;
}

这是正在运行的程序的示例。 程序示例

这里最小的数字应该是 8,问题是它从 0 开始。最大的数字也是一样的。 程序示例#2

标签: c++

解决方案


即使用户输入 q 或 Q,您的循环仍在测试“num”变量,在将修复它else break;之后添加 else 语句。if (var != "Q" && var != "q")对于未来,请始终记住,当“if”函数失败时,它将继续执行下一行,如果您需要不执行,则需要跳出循环或更改代码结构.


推荐阅读