#include <stdio.h>
#include <stdlib.h>
int main(){
char letter;
float n1, n2, sum;
printf("What operation do you want to use \n\nA)Addidtion\nB)Subtraction\nC)Multiplacation\nD)Division\n");
scanf("%c", &letter);
printf("Please enter a number: ");
scanf("%f", &n1);
printf("Please enter a second number: ");
scanf("%f", &n2);
if(letter == 'A' ||'a'){
sum = n1 + n2;
printf("The sum of %.2f plus %.2f is %.2f", n1, n2, sum);
}else if(letter == 'b' || 'B'){
sum = n1 - n2;
printf("The sum of %.2f minus %.2f is %.2f", n1, n2, sum);
}
return 0;
}
减法不起作用你能帮我解决这个问题吗?我不能,当我运行程序时我输入b然后输入12然后输入2并且它给了我14?它应该是10
答案 0 :(得分:8)
if(letter == 'A' ||'a')
没有做你想做的事。
if(letter == 'A' || letter == 'a')
是你想要的。
||
操作将其操作数评估为真值,如果其中一个评估为1
,则评估为true
。无论letter == 'A'
是否属实,至少'a'
- != 0
- “都会带来真相”。
答案 1 :(得分:5)
if(letter == 'A' ||'a')
相当于
if(letter == 'A' || 97) // 'a' == 97
在if语句中,数字!= 0被评估为真。
因此,您的情况相当于
if(true) {
sum = n1 + n2;
printf("The sum of %.2f plus %.2f is %.2f", n1, n2, sum);
} else {
//Not reachable statement. The compiler should warn you.
}
答案 2 :(得分:0)
除了错误的if
声明之外,我希望您的程序输出无论如何以某种方式“纠正”它在所有情况下打印的短语。当被要求减法时,它可能会计算总和,但重复的印刷短语应该是正式的。