就是用堆栈做计算
#include "stdafx.h"
#include "stacknum.h"
#include "StackOperator.h"
int priority(char inner, char outer)
{
if(inner=='-' && outer== '*')
return 1;
else if(inner=='-' && outer=='/')
return 1;
else if (inner=='+' && outer=='*')
return 1;
else if (inner=='+' && outer=='/')
return 1;
else return 0;
}
int main(int argc, char* argv[])
int c;
int a,b;
char exp[100];
int i;
StackNum stackNum;
StackOperator stackOp;
printf("%4d", stackNum.IsEmpty());
printf("Enter an expression ");
scanf("%s", exp);
i = 0;
while(exp[i] != '\0') {
if(exp[i] >= '0' && exp[i] <= '9' )
stackNum.Push(exp[i] - '0');
else if (stackOp.IsEmpty())
stackOp.Push(exp[i]);
else {
char op = stackOp.Pop();
int res = 0;
res = priority(op, exp[i]);
if ( res == 1){
stackOp.Push(op);
stackOp.Push(exp[i]);
}
else {a=stackNum.Pop();
b=stackNum.Pop();
if( op='+')
stackOp.Push(a+b);
else if(op='-')
stackOp.Push(a-b);
else if(op='*')
stackOp.Push(a*b);
else stackOp.Push(a/b);
stackOp.Push(exp[i]);
}
}
i++;
}
char op = stackOp.Pop();
a=stackNum.Pop();
b=stackNum.Pop();
if( op='+')
stackOp.Push(a+b);
else if(op='-')
stackOp.Push(a-b);
else if(op='*')
stackOp.Push(a*b);
else stackOp.Push(a/b);
stackOp.Push(exp[i]);
c=stackNum.Pop();
printf("%d\n",c);
printf("Hello World!\n");
return 0;
}堆栈都是做好了的
C语言 程序运行到一半告诉我出现一个问题导致程序停止工作
另外,你的程序必须当做C++程序编译,否则通不过。C不允许在有实质语句之后定义变量,变量说明要全部放到相应段的最前面,也不支持\/\/注释。我是用DEVC++编译成功的,用WINTC编译失败。
c语言运行时显示:出现了一个问题导致程序停止正常工作
int i,j;\/\/[6][6]不是【7】【6】int grade[6][6]={80,90,75,82,0,0,90,75,88,95,0,0,68,78,88,82,0,0,72,85,63,86,0,0,95,88,90,85,0,0};char name[5][10]={"李一","成红","王强","张一","席二"};...
为什么C语言运行到一半就会弹出一个error?
C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。第一种:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软...
C语言里程序编译无误但运行会弹出程序已停止运行是为什么
造成内存溢出的原因可能有:1>栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。2>错误地址访问,常见的非法访问包括指针漂移,数组越界等,初学者也经常出...
求助大神为什么我用c语言编写的程序运行的时候显示程序停止工作?
scanf语句和printf语句都有错误。正确的代码如下:scanf("%lf",&fRadius);printf("圆的面积为: %lf\\n",fResult);是%lf,而不是%If,scanf语句中,,&fRadius在""后面,而不是在""里面。
c语言出现了一个问题,导致程序停止正常工作,请关闭程序
1、野指针,你使用的指针指向未知区域 2、scanf函数输入整形、字符……的时候缺少了& 3、缓冲区溢出,也就是说你使用数组时不经意间越界了
C语言编程的时候出现“程序已停止工作”的原因有哪些?
出于安全起见,操作系统将其紧急中止。就发生了“***.exe已停止工作”的效果。\\x0d\\x0a如果你正在学习数组,请检查:\\x0d\\x0a数组是否越界。定义为int a[10]的数组,如果写a[10]=0; 相当于对a数组里的第11个元素赋值。事实上,a数组里并没有第11个元素。如果该元素的位置指向一个程序...
c语言程序总运行不了,怎么回事啊?求高人指点。。。下面是我写的程序...
1、你传递的参数没有按照函数定义的参数类型。比如insert(int score[],int n,int x,int i)但是使用时if(insert(score[N],i,x,*n)==1) 。第一个参数本来是传递数组指针,结果你传递的是一个越界的数组元素,第一个参数应该改为score。第二个和第四个参数至少从名字上看是相反的,不知道是你...
c语言在运行到输入函数时出现了一个问题导致程序停止正常工作 代码如下...
2个问题,第一个,你在程序中用到了引用,引用是C++里面的,C没有,所以,你的头文件应该使用C++的 include<iostream> using namespacestd;第二个:在创建链表的函数creat()中,你的P1,P2要申请空间的,不申请空间怎么存储内容?因此p1=new LNode;p2=LNode;...
C语言编程的时候出现“程序已停止工作”的原因有哪些?
int * p = i; \/\/错误!这与在sccanf里没有加上“&”号的原因大致相同。指针问题属于程序逻辑错误,很多时侯编译器只会给你一个警告。要注意警告发生的位置自己是否有把握。如果你多次编译或忽视编译警告而进行链接,编译器会认为你对这些警告是有把握的,完全地信任了你,也就没有警告了。