Newguy


私信TA

用户名:772007765

访问量:82495

签 名:

已秃人士

等  级
排  名 28
经  验 14638
参赛次数 3
文章发表 92
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

#include <stdio.h>
#include  <ctype.h>
double factor_value();
double term_value();
double expression_value();
int main()
{
	char ch;
	while ((ch=getchar())!=EOF)
	{
		ungetc(ch,stdin);
		printf("%.3lf\n",expression_value());
		getchar();
	}
}
//输入:(2+3)*(5+7)+9/3
//输出: 63
double expression_value()  //求一个表达式的值   何为表达式:表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
{
	double result=term_value();    //求第一项的值
	int more=1;
	while (more)
	{
		char op=getchar();          //读取一个字符
		if (op=='+'||op=='-')
		{
			double value=term_value();
			if (op=='+')
				result+=value;
			else
				result-=value;
		}
		else                       //如果不是字符就退回
		{
			ungetc(op,stdin);       //把该参数的字符退回到缓冲区
			more=0;
		}
	}
	return result;
}

double term_value()      //求一个项的值       何为项:数学式子中的某一项式
{
	double result=factor_value();    //求第一个因子的值
	while (1)
	{
		char op=getchar();
		if (op=='*'||op=='/')
		{
			double value=factor_value();
			if (op=='*')
				result*=value;
			else
				result/=value;
		}
		else 
		{
			ungetc(op,stdin);
			break;
		}
	}
	return result;
}

double factor_value()  //求一个因子的值        何为因子:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。
{
	double result=0;
	char c=getchar();
	if (c=='(')
	{
		result=expression_value();       //'('里面还有表达式
		c=getchar();                    // 把')'拿走
	}
	else
	{
		while (isdigit(c))
		{
			result=10*result+c-'0';      //把字符转换为数字
			c=getchar();
		}
		ungetc(c,stdin);
	}
	return result;
}

描述:

计算一个带括号的整数表达式(结果保留三位小数)

样例输入

(75+10/4)*(50*(60+10))

(6*(6+6/(6*2)))

样例输出

271250.000

39.000

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区