| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:关于简易计算器的问题
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:17 
关于简易计算器的问题
这一段程序要做到的效果是对任意个数的数据进行基本运算,可是没成功,求赐教!
#include<stdio.h>
int main()
{
    float a,b,s;
    char op = '$';
    scanf("%f",&a);
    if(op != '=')
    {
        scanf("%c",&op);
        scanf("%f",&b);
        switch(op)
        {
            case '+':s = a + b;break;
            case '-':{if(a > b)
                       s = a - b;
                      else
                                s = -(b - a);            
                      } ;break;
            case '*':s = a * b;break;
            case '/':{if(b == 0)
                         printf("出错");
                  else
                     s = a / b;
                      };break;
        }
        a = s;
        b = 0;
    }
    else
      printf("%f",a);
}
搜索更多相关主题的帖子: 计算器 include 
2015-09-08 14:17
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 
//一个BUG很多的解决方案
#include<stdio.h>
int main()
{
    float a,b,s=0.0;
    char op = '$';
    scanf("%f",&a);
    scanf("%c",&op);
    scanf("%f",&b);
    switch(op){
        case '+':
            s = a + b;
            break;
        case '-':
            s = a - b;
            break;
        case '*':
            s = a * b;
            break;
        case '/':
            if(b == 0){
                printf("出错!\n");
                return 0;
            }
            else{
                s = a / b;
                break;
            }
               
    }
    printf("%g\n",s);
   
    return 0;
}
2015-09-08 21:15
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 2楼 hjx1120
不是呢,这个只能两个数据进行运算,可是当有很多数据时就不行了,那怎么办?

从前风闻有你,现在我亲眼看见你
2015-09-08 21:59
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
有很多数据时就不行了?
2015-09-09 06:47
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 4楼 tlliqi
就比如计算2+4+5+6=时就不行,上面的只能计算2+4=

从前风闻有你,现在我亲眼看见你
2015-09-09 12:26
C小白白
Rank: 2
等 级:论坛游民
帖 子:3
专家分:15
注 册:2015-9-8
收藏
得分:5 
#include<stdio.h>
int main()
{
    float a,b,s;
    char op = '$';
    scanf("%f",&a);

while(op!='=')
{
     scanf("%c",&op);
        scanf("%f",&b);
        switch(op)
        {
            case '+':s = a + b;break;
            case '-':{if(a > b)
                       s = a - b;
                      else
                                s = -(b - a);            
                      } ;break;
            case '*':s = a * b;break;
            case '/':{if(b == 0)
                         printf("出错");
                  else
                     s = a / b;
                      };break;
        }
        a = s;
   
    }
   
      printf("%f",s);
}
试了下加个while循环,但停止输入数字时要连续输入两个以上的‘=’才能输出结果,这我也还没想不明白。。
2015-09-09 14:13
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
收藏
得分:10 
我虽说调好了输入一个=就可以了,但楼上的那个我也不知问题出在哪儿

#include<stdio.h>
#include <stdlib.h>

int main()
{
    float a,b,s;
    char op = '$';
    scanf("%f",&a);
        scanf("%c",&op);
    while(op!= '=')
    {
        scanf("%f",&b);
        switch(op)
        {
            case '+':s = a + b;break;
            case '-':{if(a > b)
                       s = a - b;
                      else
                                s = -(b - a);            
                      } ;break;
            case '*':s = a * b;break;
            case '/':{if(b == 0)
                         printf("出错");
                  else
                     s = a / b;
                      };break;
        }
        a = s;
        b = 0;
        scanf("%c",&op);
    }
 printf("%f",s);
    system("pause");
    return 1;
}
2015-09-09 16:54
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 7楼 lowrie
兄台,你的这个能运行吗?我的为啥没有反应呢?还有楼上的那个也是的

从前风闻有你,现在我亲眼看见你
2015-09-09 21:54
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 6楼 C小白白
因为循环语句判断的是上一次输入的符号,输入“a”,“op”,“b”之后进行判断“op”,这时判断的“op”,是第一次的,“op”是在循环语句第一句!不是最后一句!比如
4+5= 程序判断的是“op != “+””,而不是判断是不是“=”

从前风闻有你,现在我亲眼看见你
2015-09-09 23:08
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 7楼 lowrie
因为循环语句判断的是上一次输入的符号,输入“a”,“op”,“b”之后进行判断“op”,这时判断的“op”,是第一次的,“op”是在循环语句第一句!不是最后一句!比如
4+5= 程序判断的是“op != “+””,而不是判断是不是“=”
 你的在循环语句最后加了一句scanf("%c",&op)这样就直接判断的是“=”了

从前风闻有你,现在我亲眼看见你
2015-09-09 23:12
快速回复:关于简易计算器的问题
数据加载中...
 
   



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

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