| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1216 人关注过本帖
标题:关于一个简单地问题 模拟简单计算器
只看楼主 加入收藏
驿路梨花开
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于一个简单地问题 模拟简单计算器
程序模拟简单运算器的工作:输入一个算式(没有空格),遇到‘=’号说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例如,输入“1+2*10-10/2"后结果为10。

这是找来的代码
#include <stdio.h>
#include<conio.h>
void main()
{
   char ch,op=0;
   int a=0,b=0;
   do{
     ch=getche();
     if(ch>='0'&&ch<='9') a=a*10+ch-'0';这句话没有明白什么意思
     else
     {  switch(op)
        { case '+':  b+=a;break;
          case '-':  b-=a;break;
          case '*':  b*=a;break;
          case '/':  b/=a;break;
        }
       op=ch;
      
         b=a;
         a=0;这里的关系可能错了但是我是刚开始写搞不明白   
        
         
     }  
   }while(ch!='=');
   printf("%d\n",b);
}
不管输入什么结果最后输出都是最后输入的那个数比如1+1+3*5=输出5   1+2=输出2
各位大神求指导,谢谢
搜索更多相关主题的帖子: 计算器 include 优先级 
2013-04-16 11:21
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:15 
你这样写只能用两个数,多项式根本实现不了,因为乘除的优先级别高,这个你都没有进行判断,你要是学习数据结构,可以利用栈进行处理。现在说说你的程序: if(ch>='0'&&ch<='9') a=a*10+ch-'0';//将你所输入的数字字符转成整型;例如输入:6+9=
第一步:将六转换成整型a=6
第二步:判断加法号,会有b+=a;即b=a+b=6+0=6
第三步:将9转换成整型a又被赋值覆盖了6,所以a=9
第四步:b=a,即将a的值赋给b=9
第五步:=号输出b的值即为9

Maybe
2013-04-16 11:43
嗜血老妖
Rank: 3Rank: 3
来 自:江西
等 级:论坛游侠
威 望:2
帖 子:102
专家分:163
注 册:2013-3-25
收藏
得分:0 

仗剑走天涯,网络论英雄。
2013-04-16 12:24
不要脸的猫
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:41
专家分:126
注 册:2012-6-20
收藏
得分:5 
'0'的ASCII 码值是48,‘1’是49,一直到‘9’。用char类型的ch来存储输入的‘0’……‘9’,其实存储的是48……57,所以必须减‘0’

埋骨何须桑梓地,人生无处不青山
2013-04-16 12:52
快速回复:关于一个简单地问题 模拟简单计算器
数据加载中...
 
   



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

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