#include<bits/stdc++.h>
using namespace std;
long a[60000],k,ans;
int main(){
char c[60000];
string s;
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]>'0'&&s[i]<'9'){
a[k]=a[k]*10+s[i]-'0';
}
if(!(s[i]>'0'&&s[i]<'9')){
k++;
c[k]=s[i];
}
}
ans=a[0];
for(int i=1;i<=k;i++){
if(c[i]=='+'){
ans+=a[i];
}
if(c[i]=='-'){
ans-=a[i];
}
}
cout<<ans;
return 0;
}
思路:
ans作为输出,a[]数组存放转化过来的数字,c[]数组存放加减号,正好对应起来最后一个遍历计算出来。
以上是代码,在本地编辑器上发现计算小数,大数都是正确的,但是呢,想本题的庞大数据量,即使复制下来沾到输入终端,最终计算就错了,我不是很明白为什么。是我的代码效率低?还是我方法不对。求解答