Starkiller123 @ 2023-07-14 17:40:46
#include<bits/stdc++.h>
using namespace std;
stack<int>m;
char ch[100];
int x,y;
int main()
{
int i=1;
while(ch[i]!='@')
{
cin>>ch[i];
i++;
}
int a=0,b=0,c;
i=1;int j;
while(ch[i]!='@')
{
j=i;
while(ch[j]!='.'&&ch[j]!='@')
{
if(ch[j]<='9'&&ch[j]>='0')
{
a=ch[j]-'0';
c=b*10+a;
}
b=a;
j++;
}
m.push(c);
switch(ch[i])
{
case '+':x=m.top();m.pop();y=m.top();m.pop();m.push(x+y);break;
case '-':x=m.top();m.pop();y=m.top();m.pop();m.push(y-x);break;
case '*':x=m.top();m.pop();y=m.top();m.pop();m.push(x*y);break;
case '/':x=m.top();m.pop();y=m.top();m.pop();m.push(y/x);break;
}
i=j+1;
}
cout<<m.top();
return 0;
}
by wei_chen_wang @ 2023-07-15 14:49:20
@Starkiller123
int i=1;
while(ch[i]!='@')
{
cin>>ch[i];
i++;
}
改为:
int i = 0;
while (ch[i] != '@') {
i++;
cin >> ch[i];
}
by wei_chen_wang @ 2023-07-15 14:58:09
因为:
开始i=1,ch[i(也就是1)]=输入项,接着i++。
所以你的代码while判断的是ch[i+1(也就是2)],可你的ch输入的是[i]项。
结论:
int i=1;
while(ch[i]!='@')
{
cin>>ch[i];
i++;
}
ch数组输入的是i,while判断的是i+1,ch数组的[i+1]还未输入,所以while循环会一直执行。