【问题标题】:C Program Skipping if Statements Even When Conditions Are Met即使满足条件,C 程序也会跳过 if 语句
【发布时间】:2015-08-08 22:11:28
【问题描述】:

试图解决我对硬件的这个问题,但我遇到了一个小问题。我有一系列 if 语句,但即使满足条件,程序也会跳过每个 if 语句。例如:用户想要执行 5 - 2,而不是转到第二个 if 语句来检查用户何时输入减号,程序只是跳过每一个 if 语句.

问题是:

考虑一个从键盘读取两个实数的 C 程序 后跟一个字符,其中该字符可以是 运算符 +、-、*、/ 或 % 提供加法、减法、 乘法、除法或余数。然后结果 显示在屏幕上。例如,如果用户键入: 2.0 3.0 % 那么您的代码将显示: 2 % 3 = 2 注意:在上面的示例中,输入是实数,但余数只执行 整数运算。因此,这两个实数必须类型转换为 允许按余数计算。在无效运算符的情况下 输入(例如 $)然后将错误消息打印到标准 输出,例如输入无效!

我的代码是:

#include <stdio.h>
int main(void){

  double num1, num2, plus, minus, divide, mult, op;

  printf("Enter two numbers and an operation you would like to perform on those number: \n");
  scanf("%lf %lf %lf", &num1, &num2, &op);
  if(op=='+')
  {
    plus=(num1 + num2);
    printf("%lf + %lf = %lf", num1, num2, plus);
  }
  else if(op=='-')
  {
    minus=num1-num2;
    printf("%lf - %lf = %lf", num1, num2, minus);
  }
  else if(op=='/')
  {
    divide=num1/num2;
    printf("%lf / %lf = %lf", num1, num2, divide);
  }
  else if(op=='%')
  {
    int num1, num2, remain;
    remain= (num1%num2);
    printf("%d %% %d = %d", num1, num2, remain);
  }
  else
  {
    printf("Invalid entry!");
  }

  return 0;
}

非常感谢您对此的帮助,为这样一个小错误苦苦挣扎了一段时间。

【问题讨论】:

  • 你将 op 声明为双精度,它应该是一个字符。

标签: if-statement statements


【解决方案1】:

试着放线

  printf("op=%lf\n",op);

scanf 语句的正下方,查看op 对不同操作的价值。这解决了为什么 if 语句被跳过的谜团。

然后,按照@l-l 的建议,尝试将op 声明为char op;

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    
    int main(void)
    {
        double num1, num2, plus, minus, divide, mult, op;
        char operation;   
        printf("Enter first number");
        scanf("%lf", &num1);
        printf("Enter second number");
        scanf("%lf", &num2);
        printf("Enter operation");
        scanf(" %c", &operation);
    
         if(operation=='+')
        {
            plus=(num1 + num2);
            printf("%lf + %lf = %lf", num1, num2, plus);
        }
         if(operation=='-')
        {
            plus=(num1 - num2);
            printf("%lf - %lf = %lf", num1, num2, plus);
        }
         if(operation=='/')
        {
            plus=(num1 / num2);
            printf("%lf / %lf = %lf", num1, num2, plus);
        }
         if(operation=='*')
        {
            plus=(num1 * num2);
            printf("%lf * %lf = %lf", num1, num2, plus);
        }
        return 0;
    }
    

    试试这个。代码编译并运行良好。

    【讨论】:

      猜你喜欢
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多