当前位置: 首页 > 知识库问答 >
问题:

做...同时循环逻辑运算符[重复]

艾翼
2023-03-14

我从我的教科书上复制了一个简单的“计算器”示例,它接受2个值和一个运算符。但是,它不会检查输入的表达式是否有效。代码应该提示用户,直到输入正确的表达式。

我应该如何根据自己的风格来修正它?有什么更好的方法?

/*
Input: A simple expression with 2 values and 1 operator
Format: value1 (operator) value2
Ex: 5*5
Output: Answer
*/

#include <stdio.h>

int main (void)
{
float value1, value2;
char operator = ' ';

//Issue Area, the while section does not work
do
{
    printf ("Type in your expression:");
    scanf ("%f %c %f", &value1, &operator, &value2);
}
while ((operator != '+' || operator != '-' || operator != '*' || operator != '/'));

//This is fine, code is for an else...if example in textbook
if (operator == '+')
    printf ("%.2f\n",value1 + value2);
else if (operator == '-')
    printf ("%.2f\n",value1 - value2);
else if (operator == '*')
    printf ("%.2f\n",value1 * value2);
else if (operator == '/')
    printf ("%.2f\n",value1 / value2);

return 0;
}

共有1个答案

慕兴平
2023-03-14

你有:

do
{
   ... 
}
while ((operator != '+' || operator != '-' || operator != '*' || operator != '/'));

的条件中使用||是错误的。

假设运算符的值是'。然后,当计算为:

while ((false || true || true || true));

评估结果是

while (true);

无论运算符的值是什么,这些子表达式中至少有三个将计算为true。因此,条件将始终计算为true

您需要使用

do
{
   ... 
}
while ((operator != '+' && operator != '-' && operator != '*' && operator != '/'));

使代码更清晰的一种可能方法是:

do
{
   ... 
}
while (!isValidOperator(operator));

哪里

int isValidOperator(char operator)
{
   return (operator == '+' ||
           operator == '-' ||
           operator == '*' ||
           operator == '/' );
}

您可以在isValidOperator中使用以下命令缩短代码:

int isValidOperator(char operator)
{
   return (operator != '\0' && strchr("+-*/", operator) != NULL);
}

 类似资料:
  • 编写一个程序,不断提示用户从键盘输入整数。当输入的整数为-5或0或大于8时,程序终止。在循环控制条件中使用逻辑和。仔细测试您的程序,以确保满足所有循环终止条件。 公开课{ } 从这个开始,但没能完成。帮助。

  • JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。 虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。 让我们来详细看一下。 ||(或) 两个竖线符号表示“或”运算符: result = a || b; 在传统的编程中,逻辑或仅能够操作布尔值。如果参与运算的任意一个参数为 true,返回的结果就为 tr

  • 主要内容:逻辑非运算(NOT 或者 !),逻辑与运算符(AND 或者 &&),逻辑或运算符(OR 或者 ||),异或运算(XOR 运算符)逻辑运算符又称为布尔运算符,用来确定表达式的真和假。 MySQL中支持的逻辑运算符如下表所示。 MySQL 中的逻辑运算符 运算符 作用 NOT 或者 ! 逻辑非 AND 或者 && 逻辑与 OR 和 || 逻辑或 XOR 逻辑异或   下面分别讨论 MySQL 逻辑运算符的使用方法。 逻辑非运算(NOT 或者 !) 和 都是逻辑非运算符,返回和操作数相反的结

  • 主要内容:打脸某些 Python 教程,逻辑运算符的本质高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。 Python 也有类似的逻辑运算,请看下表: 表 1 Python 逻辑运算符及功能 逻辑运算符 含义 基本格式 说明 and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 or 逻辑或运算,等价于数学

  • 逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表 1 所示。 表 1 逻辑运算符的用法、含义及实例 运算符 用法 含义 说明 实例 结果 && a&&b 短路与 ab 全为 true 时,计算结果为 true,否则为 false。 2>1&&3<4

  • 问题内容: 我记得有一阵子关于逻辑运算符的内容,在的情况下,使用要比(或反之亦然)更好。 当我回到项目中时,我只需要在项目中使用它,但是我不记得建议使用哪个运算符,或者它是否正确。 哪个更好?为什么? 问题答案: 没有“更好的”,但是更常见的是。它们具有不同的优先级, 并且可以像通常期望的那样工作。 另请参阅:逻辑运算符( 以下示例从此处获取 ):