我试图解决这个问题,但是我遇到了一个小问题。我有一系列 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;
}
真的很感激对此的一些帮助,在这么小的错误上已经挣扎了一段时间。
答案 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
试试这个。代码已编译并正常工作。