标题://switch语句实现简易计算器
只看楼主
迟晓华
Rank: 1
来 自:山东
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-11-1
 问题点数:0 回复次数:2 
//switch语句实现简易计算器
#include<stdio.h>
main()
{
    float a,b;
    char ch;
    printf("请输入一个表达式:");
    scanf("%f%c%f",&a,&ch,&b);
    if(ch!='+' || ch!='-' || ch!='*' || ch!='/')
    {
        printf("输入错误!\n");
    }
   
else    {
        switch(ch)
        {
           case '+':printf("%.2f+%.2f=%.2f\n",a,b,a+b);
                    break;
           case '-':printf("%.2f-%.2f=%.2f\n",a,b,a-b);
                    break;
           case '*':printf("%.2f*%.2f=%.2f\n",a,b,a*b);
                    break;
           case '/':printf("%.2f/%.2f=%.2f\n",a,b,a/b);
                    break;
         }
    }
}
程序能运行,但是运行的结果不对,不论输入什么,结果都是“输入错误!”,但如果将if语句去掉的话结果就是对的,这是为什么呢?
跪求大神们的解答!!!!

[此贴子已经被作者于2017-11-2 08:52编辑过]

搜索更多相关主题的帖子: switch printf 输入 case break 
2017-11-02 08:51
指紋、在旅行
Rank: 1
来 自:山东
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-11-1
得分:0 


[此贴子已经被作者于2017-11-13 22:17编辑过]

2017-11-02 09:35
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
如果ch不是加号不是减号不是除号也不是乘号就输出"输入错误" 粗粗一看一想很对。其实不对!
首先说一下 逻辑非 ||的注意事项, a=表达式1 || 表达式2 || 表达式3 || 表达式4
若表达式1为真,不再判断表达式2 3 4的真假与否, 返回TRUE,
如表达式1为假,判断表达式2 3 4...

这样改
if (ch != '+' && ch != '-' &&ch != '*' &&ch != '/')



早知做人那么辛苦!  当初不应该下凡
2017-11-02 10:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482043-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015178 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved