题解 | #表达式求值#

表达式求值

https://www.nowcoder.com/practice/9566499a2e1546c0a257e885dfdbf30d

#include<string.h>
#include<ctype.h>
int p = 0;
int result(char* str)
{
	char std[1001] = { 0 };
	strcpy(std, str);
	int len = strlen(std);
	int flag = '+';
	int top = -1;
	int ret = 0;
	int stack[1000] = { 0 };
	while (p < len)
	{
		int num = 0;
		while (std[p] >= '0' && std[p] <= '9')
		{
			num = num * 10 + std[p] - '0';
			p++;
		}
		if (std[p] == '(' || std[p] == '[' || std[p] == '{')
		{
			p++;
			num = result(str);
		}
		switch (flag)
		{
		case '+': stack[++top] = num;break;
		case '-': stack[++top] = -num; break;
		case '*': stack[top] =stack[top]*num; break;
		case '/': stack[top] =stack[top]/num; break;
		}
		if (std[p] == ')' || std[p] == ']' || std[p] == '}')
		{
			p++;
			break;
		}
		flag = std[p];
		p++;
	}
	for (int i = 0; i <= top; i++)
	{
		ret = ret + stack[i];
	}
	return ret;
}
int main()
{
	char str[1001] = { 0 };
	scanf("%s", str);
	int p = 0;
	int put = result(str);
	printf("%d\n", put);
	return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:30
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务