sunyining28 @ 2023-12-04 18:01:52
我是犯了什么非常低级的重大的错误吗 编译过了 我输入第一个样例 打了一个enter 然后他跟我说程序未响应 停止工作……
这是本蒟蒻的代码 请大佬指教(✿◡‿◡)
帮忙解决了悬赏一个关注 谢谢
#include<bits/stdc++.h>
using namespace std;
char c;
int num,x,y;
stack<int> s;
int main(){
while(cin>>c&&c!='@'){
if(c!='+'&&c!='-'&&c!='*'&&c!='/'&&c!='.') num=num*10+c-'0';
else{
x=s.top();
s.pop();
y=s.top();
s.pop();
if(c=='+') s.push(x+y);
else if(c=='-') s.push(y-x);
else if(c=='*') s.push(x*y);
else if(c=='/') s.push(y/x);
else{
s.push(num);
num=0;
}
}
}
cout<<s.top();
return 0;
}
by derekyang326 @ 2023-12-04 18:23:03
你不应该是直接输入一整个样例还使用一个字符来存,应该用字符串输入
by 2022xsj @ 2023-12-04 18:26:14
请注意:你的stack在最开始是空的! 我们拿样例一举例子:\ 3.5.2.-*7.+@
输入3\ 此时: num=3\ s -> {}(空)
输入.、 此时: 你首先取了s.top()\ 但是此时s -> {}(空) 这时s.top()指向了一个不存在的空间,这就导致程序发生错误,你可以看到控制台有一句这样的话:\
Process exited after 12.14 seconds with return value 3221225477
by sunyining28 @ 2023-12-11 11:57:06
@2022xsj 知道了知道了,谢谢大佬
by sunyining28 @ 2023-12-11 11:57:38
@derekyang326 好的,谢谢大佬