【问题标题】:Using loop asked user to input numbers使用循环要求用户输入数字
【发布时间】:2018-12-10 15:28:12
【问题描述】:

我尝试了很多不同的方法,但仍然不起作用

#include<iostream>
using namespace std;
int main(){
    float i=1,no,max=0,min=no;
    while(i>0){
        cout<<"Enter a number:";
        cin>>no; 
        if(no!=0) {                         
            if(no>max){
                max=no;
            }
            if(no<min){
                min=no;
            }
        }
        if(no==0){
            cout<<"max:"<<max<<endl;
            cout<<"min:"<<min<<endl;
            return 0;
        }
    }
}

【问题讨论】:

  • 在第 4 行:float min=no; 在此分配时no 是什么?

标签: c++


【解决方案1】:

首先在这里:

float i = 1, no, max = 0, min = no;

no 在您开始使用时未初始化。行为未定义。

其次,您的while 循环是一个无限循环,因为您永远不会更改i 的值或使用break

建议:

  • 始终初始化您的内置类型。在这里您可能需要一些不同的逻辑,因为您正在尝试找到最小值并且仅使用 0 进行初始化是行不通的,但我不会破坏您的练习
  • 确保您的循环在某个时间点终止
  • 使用double 而不是float
  • 正确缩进您的代码

【讨论】:

  • 注意return 0;no==0 的情况下。因此,一旦他输入0,他的循环就会正确终止。乍一看,我也错过了。 @HMS 如您所见,即使是经验丰富的程序员也无法阅读非结构化代码。所以,也许这是你应该从中学到的第一课:)
  • @sebrockm 缩进非常具有误导性,我错过了return 部分。感谢您非常感谢您的反馈!
【解决方案2】:
#include <iostream>
using namespace std;
int main(){
    cout<< "Enter a number- Enter 0 to see result: ";
    int num = 0, max = 0, min=0;
    for( int i = 1; i <= 100; ++i){
        cin>> num;
        if(i==1){
            max=num;
            min=num;
        }
        else{
        if( num > max )
            max = num;
        else if( num == 0 )
            break;      
        else if( num < min )
              min = num;
    }

    }
    cout<<"min:"<< min <<"  max:"<< max;
    return 0;
}

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 2022-09-23
    • 2015-06-14
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多