用C语言while 与 do while设计一个简单的计算器程序 5

该程序接收用户从键盘输入的一个无括号简单表达式形式,以等号代表结束(运算符限定为+、-、*、/之一)。计算后表达式的值(默认所有运算符优先级相同,从左至右运算)并输出。可... 该程序接收用户从键盘输入的一个无括号简单表达式形式,以等号代表结束(运算符限定为+、-、*、/之一)。计算后表达式的值(默认所有运算符优先级相同,从左至右运算)并输出。

可能的输入输出示例:(较简形式)

输入: 22/5-3*2=

输出: 2.800000
展开
 我来答
starj1
2018-11-12 · TA获得超过1577个赞
知道小有建树答主
回答量:765
采纳率:47%
帮助的人:298万
展开全部
      static void Main(string[] args)
        {
            Console.Write("输入计算式:");
            string sInput = Console.ReadLine();          
            System.Text.RegularExpressions.Regex regT =
                new System.Text.RegularExpressions.Regex(@"(?<be>\d+(\.\d+)?)(?<op>[+\-*/])(?<on>\d+(\.\d+)?)");
            System.Text.StringBuilder sbT = new StringBuilder(sInput);
            sbT.Replace(" ", "");
            System.Text.RegularExpressions.Match m = regT.Match(sbT.ToString());
            while (m.Success)
            {
                double dblBe = double.Parse(m.Groups["be"].ToString());
                double dblOn = double.Parse(m.Groups["on"].ToString());
                double dblR = 0;
                switch (m.Groups["op"].ToString())
                {
                    case "+":
                        dblR = dblBe + dblOn;
                        break;
                    case "-":
                        dblR = dblBe - dblOn;
                        break;
                    case "*":
                        dblR = dblBe * dblOn;
                        break;
                    case "/":
                        if (dblOn != 0)
                        {
                            dblR = dblBe / dblOn;
                        }
                        else
                        {
                            Console.WriteLine("除数不能为零");
                            Console.ReadKey();
                            System.Threading.Thread.CurrentThread.Abort();
                        }
                        break;
                }
                sbT.Replace(m.Value, string.Format("{0:G}", dblR), 0, m.Length);
                m = regT.Match(sbT.ToString());
            }
            Console.WriteLine("计算结果:" + sbT.ToString());
            Console.ReadKey();
        }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式