1

这是我的程序:

#include <iostream>
using namespace std;

int main(){
    int num;
    int numtotal = 0;
    int numcount = 0;
    int big = 0;
    int low = 0;

    cout<<"enter number or 0 to exit"<<endl;
    cin>>num;
    while(num != 0){
        numtotal = numtotal + num;
        numcount++;
        big = num;
        low = num;

        cout<<"enter number or 0 to extit"<<endl;
        cin>>num;

        if(num < low){
            low = num;
        }
        else if(num > big){
            big = num;
        }
    }

    cout<<"total of numbers: "<<numtotal<<endl;
    cout<<"totoal of numbers entered: "<<numcount<<endl;
    cout<<"biggest number: "<<big<<endl;
    cout<<"lowest number: "<<low<<endl;
}

“低”和“大”输出始终是用户输入的最后 2 个数字,例如:

( 5, 4, 3, 2)

biggest number: 2

lowest number: 0

我在这里做错了什么?谢谢你

4

3 回答 3

1

你总是用当前的数字覆盖循环中的大和小。

这可以通过初始化biglow一次(在循环的一侧)来解决,如下所示:

#include <limits>
int big = std::numeric_limits<int>::min();
int low = std::numeric_limits<int>::max();

并通过将循环更改为

while(num != 0) {
    numtotal += num;
    numcount++;

    cout << "enter number or 0 to exit" << endl;
    cin >> num;

    if(num < low)
        low = num;
    // note that this isn't in the else branch anymore
    // to also work if num is the biggest and lowest number
    if(num > big)
        big = num;
}
于 2019-03-20T20:47:28.157 回答
1

如果用户进入while 循环以达到您想要的结果,您不需要设置big和。lownum0

否则,如果您不这样做,您的输出最低数字将始终是0在用户仅输入正数的情况下,我认为您不希望这样:

#include <iostream>
using namespace std;

int main() {
    int num;
    int total = 0;
    int count = 0;

    cout << "Enter number or 0 to exit" << endl;
    cin >> num;

    int biggest = num;
    int lowest = num;

    while (num != 0) {
        total += num;
        count++;
        cout << "Enter number or 0 to exit" << endl;
        cin >> num;
        if (num != 0) {
            if (num < lowest) {
                lowest = num;
            } else if (num > biggest) {
                biggest = num;
            }
        }
    }

    cout << "Total of numbers: " << total << endl;
    cout << "Amount of numbers entered: " << count << endl;
    cout << "Biggest number: " << biggest << endl;
    cout << "Lowest number: " << lowest << endl;

    return 0;
}

示例用法:

Enter number or 0 to exit
5
Enter number or 0 to exit
4
Enter number or 0 to exit
3
Enter number or 0 to exit
2
Enter number or 0 to exit
0
Total of numbers: 14
Amount of numbers entered: 4
Biggest number: 5
Lowest number: 2
于 2019-03-20T21:07:30.260 回答
1

您总是将它们设置在循环的顶部。尝试将它们放在循环之外,如下所示:

    cout<<"enter number or 0 to exit"<<endl;
    cin>>num;

    // move them here
    big = num;
    low = num;


    while(num != 0){
        numtotal = numtotal + num;
        numcount++;

        cout<<"enter number or 0 to extit"<<endl;
        cin>>num;

        if(num < low){
            low = num;
        } else if(num > big){
            big = num;
        }
    }

于 2019-03-20T20:48:18.173 回答