概述
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
gets(szExpression);
// 中缀表达式转后缀表达式,结果保存在expression中
for (int i = 0; i < strlen(szExpression); i++)
{
if (isspace(szExpression[i])) // 空白字符
{
if (bFindBegin)
{
expression[num].type = 1;
expression[num].element.int_element = atoi(pbegin);
num++;
bFindBegin = false;
}
continue;
}
if (isdigit(szExpression[i])) // 数字字符
{
if (!bFindBegin)
{
pbegin = &szExpression[i];
bFindBegin = true;
}
continue;
}
c = szExpression[i];
if (c == '+' || c == '-' || c == '*' || c == '/' || c == '(' || c == ')') // 操作符字符
{
if (bFindBegin)
{
expression[num].type = 1;
expression[num].element.int_element = atoi(pbegin);
num++;
bFindBegin = false;
}
if (c != ')')
{
if (!isEmpty(pSymboolStack)) // 存在操作符
{
if (c == '(') // 直接入栈
push(pSymboolStack, c);
else {
do
{
char topElement = top(pSymboolStack);
if (compare(topElement, c) >= 0 && topElement != '(') // 优先级不低于c且栈顶不等于'(',则出栈
{
expression[num].type = 2;
expression[num].element.char_element = topElement;
num++;
pop(pSymboolStack);
}
else
break;
} while (!isEmpty(pSymboolStack));
// c入栈
push(pSymboolStack, c);
}
} // 不存在操作符,直接入栈
else
push(pSymboolStack, c);
}
else // c == ')'
{
while( (c =top(pSymboolStack)) != '(')
{
expression[num].type = 2;
expression[num].element.char_element = c;
num++;
最后
以上就是温暖棒棒糖为你收集整理的多位数加减混合运算c语言,用C语言实现 多位整数的四则运算,用栈,例如56*(12+20)-102/2...的全部内容,希望文章能够帮你解决多位数加减混合运算c语言,用C语言实现 多位整数的四则运算,用栈,例如56*(12+20)-102/2...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复