
用C语言while 与 do while设计一个简单的计算器程序 5
该程序接收用户从键盘输入的一个无括号简单表达式形式,以等号代表结束(运算符限定为+、-、*、/之一)。计算后表达式的值(默认所有运算符优先级相同,从左至右运算)并输出。可...
该程序接收用户从键盘输入的一个无括号简单表达式形式,以等号代表结束(运算符限定为+、-、*、/之一)。计算后表达式的值(默认所有运算符优先级相同,从左至右运算)并输出。
可能的输入输出示例:(较简形式)
输入: 22/5-3*2=
输出: 2.800000 展开
可能的输入输出示例:(较简形式)
输入: 22/5-3*2=
输出: 2.800000 展开
1个回答
展开全部
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();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询