我如何通过输入避免负数,或者如果用户输入负数,程序会给出错误结果?

时间:2019-12-04 02:57:48

标签: c

  

每次用户都输入两个值。结果应始终为结果=(大号/小号)。   如果用户给出一个负值和一个正值作为输入,那么它将产生一个错误。   

#include<stdio.h>

int main()
{

int times=0;
float a,b,result;

while(times<5)
{
    printf("\nEnter two numbers : \n");
    scanf("%d %d",&a,&b);
    if(a =< 0 || b =< 0)
    {
        printf("INPUT ERROR\n");
    }
    else
    {
        if(a>=b)
        {
            result =a/b;
            printf("The result is = %.2f\n",result);
        }
        else
        {
            result =b/a;
            printf("The result is = %.2f\n",result);
        }
    }

    times++;
}
return 0;
}

我该如何解决此问题。谢谢!!!!

1 个答案:

答案 0 :(得分:0)

您的代码中有两个问题:运算符和处理输入。

如果要检查某项是否小于/等于某项,则应在使用<=运算符时使用>==<,该运算符至少(包括) C / C ++不存在。

在获取输入和float变量的用法时,应使用与printf中相同的占位符,对于float变量,该占位符为%f。如果您决定将其更改为int,则可以使用%d,但是结果也将是int

固定代码:

#include<stdio.h>

int main()
{
    int times = 0;
    float a, b, result;

    while (times < 5)
    {
        printf("\nEnter two numbers : \n");
        scanf("%f %f", &a, &b);
        if(a <= 0 || b <= 0)
        {
            printf("INPUT ERROR\n");
        }
        else
        {
            if(a >= b)
            {
                result = a / b;
                printf("The result is = %.2f\n", result);
            }
            else
            {
                result = b / a;
                printf("The result is = %.2f\n", result);
            }
        }
        times++;
    }
    return 0;
}

还有一个编译代码的技巧-使用额外的标志,它总是会向您显示错误,我真的很喜欢使用-Wall -Wextra -Werror -pedantic。它们提供有关“可疑”构造(-Wall)的信息,启用-Wall-Wextra)尚未启用的更多标志,将所有警告更改为错误(-Werror)并发出ISO C(-pedantic)要求的所有警告。