输入两个数和一个运算符(+ - * /)求结果。用if语句及if-else和 if else if和switch-case结构

用if语句及if-else和 if else if和switch-case结构 请高手帮忙 谢谢。
下面是我写的,但是结果很差强人意,请高手帮忙看一下,谢谢!!
#include "stdio.h"
void main()
{
int a,b,s;
char ch;
printf("请输入两个数及其关系:\n");
scanf("%d%c%d",&a,&ch,&b);
if(ch='+')

printf("%d+%d=%d\n",a,b,s=a+b);
if(ch='-')

printf("%d-%d=%d\n",a,b,s=a-b);
if(ch='*')
printf("%d*%d=%d\n",a,b,s=a*b);
if(ch='/')
printf("%d/%d=%d\n",a,b,s=a/b);

}

if中的判断语句判断错误.
是 if(ch == '+') 而不是 if(ch = '+')
if(ch = '+')恒为真.下面的3个if同理,所以无论是哪种运算符,全部会执行.
正确代码如下:
#include <stdio.h>

int main(void)
{
int a,b,s;
char ch;
printf("请输入两个数及其关系:\n");
scanf("%d%c%d",&a,&ch,&b);
if(ch=='+')
printf("%d+%d=%d\n",a,b,s=a+b);
if(ch=='-')
printf("%d-%d=%d\n",a,b,s=a-b);
if(ch=='*')
printf("%d*%d=%d\n",a,b,s=a*b);
if(ch=='/')
printf("%d/%d=%d\n",a,b,s=a/b);
}

最后, 要避免此类错误,最好把常量写前面. 这样写if('+' == ch).这样写的好处在于如果写成了if('+' = ch)会出现编译错误.而if(ch = '+')编译器发现不了此类错误.
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜