[数的运算的再认识——学习心得体会]数的运算在小学数学阶段有着举足轻重的地位,而我们却经常利用大量的枯燥的练习来进行计算的教学,几位专家的讲座为我们指明了数的运算的教学方向。课程标准中指出:运算能力主...+阅读
我怀疑你代码的这段有问题:
else if(ch == ')')
{
optr = MathOptr(ch);
while(!Stack1Empty(&OptrStack) & Peek1(&OptrStack).stackprecedence >= optr.inputprecedence) //问题可能在这儿
Evaluate(&OpndStack, Pop1(&OptrStack));
Pop1(&OptrStack);//将栈中的左括号弹出
k++;
ch = str[k];
}
你的左括号的优先级最高,所以当遇到左括号的时候,你的循环并不能退出,Evaluate还会继续计算,然而Evaluate里面的Switch语句里面没有针对'('的分支,所以你看不到任何反馈。要确定是不是这个问题,你可以在Evaluate里面填一条default语句测试一下:
void Evaluate(Stack * OpndStack, DataType1 optr)//执行从运算符栈弹出的运算符optr所要求的运算
{
DataType opnd1,opnd2;
opnd1 = Pop(OpndStack);
opnd2 = Pop(OpndStack);
switch(optr.op)
{
case'+': Push(OpndStack, opnd1+opnd2);
break;
case'-': Push(OpndStack, opnd2-opnd1);
break;
case'*': Push(OpndStack, opnd2*opnd1);
break;
case'/': Push(OpndStack, opnd2/opnd1);
break;
default:
printf("Invalid operator: %c\n", optr.op);
}
}
如果是这儿的问题,我相信你也知道怎么改了。
--
aka day9981
以下为关联文档:
运用插板进行的乘法运算活动名称:学习乘法运算 目 标: 1、使幼儿知道乘法的含义,认识到“求几个相同加数的和”用乘法计算比较简便. 2、认识乘号,会读、写乘法算式。 3、培养幼儿观察比较的能力. 重 点:知...
急求二年级数学混和运算的论文“混合运算”一课是在小学生学习的加法、减法;乘法,除法,并且学习了用分步解决乘加、乘减两步计算的问题的内容.。根据二年级小学生年龄小,思维直观的特点,课堂上我利用多媒体课...
C语言中关于运算符的优先级问题请进left to right 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符,因此使 a = b...
C语言运算符优先级问题注意一下&这个运算符 这个运算符有如下两个特点: 1.该运算符是左结合的(也就是说运算步骤是从左向右进行) 2.一旦当该运算符的左边的表达式的值为假(值为0)时,就认为整个&表达式的...
C语言中运算符优先级别的问题C++中 a++ a--符号的顺序是自右向左.即-a++=-(a++) 但是出现付值时.b=a++ b的值与等号右边的a的原值相等. 其次无论什么顺序都是自右向左(注意(a++)+(a++)+(a++) 这时的如果a的...
c语言的运算符优先级问题&两边的优先级是一样的即(i++ == 4)和(++j == 4 || k++ == 4)优先级一样 所以先执行i++ == 4 i++ 是后自加 所以i++ == 4不成立 对于 if(a&b) 有个截止特性,就是a为0 则 不会判断...
求c语言中各类运算符的优先级别c/C++的优先级 优先级 操作符 结合性 1 :: 左 2 . ->; [] () 左 3 ++ -- ~ ! - + & * () sizeof new delete castname_cast<type>; 单目操作符 右 4 .* ->;* 左 5 * / % 左...
C语言四则运算程序高手帮帮忙#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> int scan() { char s[100]; int i,t,z=0; do { z=0; gets(s); for(i=0;s[i]!='\0';i++) if(s[...
C语言四则运算程序高手帮帮忙!#include #include #include #include int scan() { char s[100]; int i,t,z=0; do { z=0; gets(s); for(i=0;s[i]!='\0';i++) if(s[i]'9') break; if(i>=strlen(s)) for(t=...