C节目即使在条件合并时也会发表声明

时间:2015-05-27 02:17:52

标签: if-statement statements

我试图解决这个问题,但是我遇到了一个小问题。我有一系列 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;
}

真的很感激对此的一些帮助,在这么小的错误上已经挣扎了一段时间。

2 个答案:

答案 0 :(得分:2)

尝试放行

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

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

然后,如@l-l所示,请尝试将op声明为char op;

答案 1 :(得分:0)

autocm BufEnter * if expand('%:p') !~ '://' | :lchdir %:p:h | endif

试试这个。代码已编译并正常工作。