在范围内定义用户输入

Define User Input Within a Range

我有代码可以从用户那里接收浮点值并对其进行操作。现在我只想将用户输入值限制在 [-100,000 到 +100,000] 的范围内。

我可以通过使用限制库定义 INT_MIN 和 INT_MAX 来做到这一点吗?我在网上看到的所有内容都说明这里的最大值是 +32767,最小值是 -32768,如果我使用 LONG_MIN、LONG_MAX.

,数字会更大

有没有办法自定义范围?对浮点数使用整数方法会不会是错误的?

您无法指定 INT_MININT_MAX 的值。

不清楚您是如何接受输入值的,但是如果您从控制台读取它们,您可以在读取后检查每个值,如果不可接受,请再次请求,重复直到输入可接受的值(单词 "repeating" 暗示您需要一个循环)。

这些数字是常量,要改变它们并不容易。另外,它们适用于整数,不适用于浮点数

检查输入的正确方法是检查输入:

if (fabs(input) > 100.0){
    //exception handling - write a message about wrong input
}
//process the numbers

检查这个想法

#include <stdio.h>

float getNumber(float minimum, float maximum)
{
    int   result;
    int   chr;
    float value;

    result = 0;
    do {
        printf("Input a value between %g and %g > ", minimum, maximum);

        result = scanf("%f", &value);
        /* remove all characters from the stream until the `'\n'` is found */
        while (((chr = fgetc(stdin)) != EOF) && (chr != '\n'));
    } while ((result != 1) || (value <= minimum) || (value >= maximum));

    return value;
}

int
main()
{
    float value;

    value = getNumber(1.0, 10.0);
    printf("%f\n", value);

    return 0;
}

此程序将循环直到用户输入有效值。

有没有办法自定义范围?

不建议您更改宏 INT_MIN or INT_MAX 因为 limits.h(这些宏已定义)很可能在别处使用。

不过,你的问题的答案是:
使用 printf() 和 scanf()。做类似的事情:

#define ABS_LIMIT 100000  //create your own custom limits 
int absoluteLimit = 200000;//initialize out of acceptable range
                           //to force user input
while(fabs(absoluteLimit) >=  ABS_LIMIT)//will force accepted value to be in 
{                                       //in range of +/-100000
    printf("enter value:\n");
    scanf("%d", &absoluteLimit);
}  

这将输入限制为 +/- 100000,无需编辑 INT_MININT_MIN