首页 > 解决方案 > 在 if 语句 C 中包装 switch 语句?

问题描述

所以我希望我的程序在两个值之间进行算术计算:

1.首先,我希望我的程序检查输入的 2 个值是否是数字
2.如果这是正确的,我不希望它运行一个 switch 语句,这取决于运算符将进行计算
3.如果输入的运算符不是有效的一个(*,+,-,/)然后我不想返回错误,说明运算符无效
4.如果值不是数字,我不想显示输入的值无效

例如,如果我输入 K * 2 我希望程序说“错误无效值”
如果我输入 20 ?2 程序应返回“错误有效运算符”

我尝试使用 {} 和 () 来包装 switch 函数,但似乎没有任何效果

#include <stdio.h>

int main (void)
{
 float value1, value2;
 char Operator;

 printf("Enter your two values expression (x (+, -, *, /) y): ");
 scanf("%f %c %f", &value1, &Operator, &value2);


if( (value1>=0 && value1<=9) || (value2>=0 && value2<=9) )

switch(Operator)
{
    case '+':

        printf("The result is: %.2f \n", value1+value2);

    break;

    case '-':

        printf("The result is: %.2f \n", value1-value2);

        break;

    case '*':
    case 'x':
    case 'X':

        printf("The result of this multiplication is: %.2f \n", 
 value1*value2);

    break;

    case '/':

        if(value1==0 || value2==0)
        printf("Error 1 you can't divide by 0 \n");
        else
        printf("The result of this division is: %.2f \n", value1/value2);
    break;

    default:
        printf("Error please enter a valid operator \n");
        break;

}

else printf("Error please enter a valid value \n");



}

当我输入无效值时,程序返回“错误请输入有效运算符”而不是 else 语句“错误请输入有效值”

此外,如果第一个值正确但第二个不正确,假设:10*c 而不是返回“错误,请输入有效值”,它返回 0。

标签: c

解决方案


正如您在输入时已经说过的那样,20 ? 2因为您有if( (value1>=0 && value1<=9) || (value2>=0 && value2<=9) )错误将涉及值而不是运算符。必须删除该值的测试。

你只需要检查scanf的结果

  • 如果它为 0,则第一个输入的值不是有效的浮点数

  • 如果它是 1 只输入了一个有效的浮点数,它后面没有空格,那么运算符

  • 如果是 2 只有一个有效的浮点数然后一个空格然后输入运算符,在运算符之后没有空格然后一个有效的浮点数

  • 如果是 3,您知道 value1 和 value2 是有效值并且输入了运算符,您可以切换到测试运算符并计算结果


推荐阅读