c - 在 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。
解决方案
正如您在输入时已经说过的那样,20 ? 2
因为您有if( (value1>=0 && value1<=9) || (value2>=0 && value2<=9) )
错误将涉及值而不是运算符。必须删除该值的测试。
你只需要检查scanf的结果
如果它为 0,则第一个输入的值不是有效的浮点数
如果它是 1 只输入了一个有效的浮点数,它后面没有空格,那么运算符
如果是 2 只有一个有效的浮点数然后一个空格然后输入运算符,在运算符之后没有空格然后一个有效的浮点数
如果是 3,您知道 value1 和 value2 是有效值并且输入了运算符,您可以切换到测试运算符并计算结果
推荐阅读
- php - 转储函数在使用 TaggedValue 时忽略内联参数
- javascript - 错误 TS2503:找不到命名空间“WebMidi”
- pandas - KeyError:6 向 regplot 添加标签时
- android - 在 Android 启动画面的层列表中定位图像
- c++ - DirectXTK 在“SetWindow(HWND hwnd)”的“鼠标”中没有成员
- groovy - 如果在 Groovy 中返回,JaCoCo 会丢失行
- python - 无法在模板视图中使用“categories.products .all”访问数据。带有外键的 Django 模型
- python - 比较两个数据帧并返回不同的值
- wpf - 绑定到 ObservableCollection 的 DataGrid 在值更改后不会立即更新
- npm - 如何单击使用 webdriver io 移动的元素?