c++简单加减法计算器异常

我也不知道是哪里出了错但是运行输入数据后就会执行异常求大佬指教#include<iostream>usingnamespacestd;intmain(){intb[100... 我也不知道是哪里出了错

但是运行输入数据后就会执行异常
求大佬指教
#include<iostream>
using namespace std;
int main()
{
int b[100],c[100];
char a[100];
int i=0,j=0,k=0;
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
do
{
cin.get(a,100);
if (a[i] != '+'&&a[i] != '-'&&a[i] != '\n')
b[j] = b[j] * 10 + a[i] - '0';
if(a[i]=='+')
{
c[k++]='+';
j++;
}
if(a[i]=='-')
{
c[k++]='-';
j++;
}
i++;
}while(a[i]!='\n');
int sum;
sum=b[0];
for(i=1,j=0;i<=k;i++,j++)
{
switch(c[j])
{
case '+':sum+=b[i];break;
case '-':sum-=b[i];break;
}
}
cout<<sum<<endl;
return 0;
}
展开
 我来答
人人顺风顺水
2019-04-15 · TA获得超过164个赞
知道小有建树答主
回答量:315
采纳率:77%
帮助的人:114万
展开全部
#include<iostream>
using namespace std;
int main()
{
int b[100];
char a[100], c[100];
int i = 0, j = 0, k = 0;

memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));

cin.get(a, 100);
while (a[i] != '\0')
{
if (a[i] >= '0' && a[i] <= '9')
b[j] = b[j] * 10 + a[i] - '0';
else if (a[i] == '+')
{
c[k++] = '+';
j++;
}
else if (a[i] == '-')
{
c[k++] = '-';
j++;
}
i++;
}

int sum = b[0];
for (i = 1, j = 0; i <= k; i++, j++)
{
switch (c[j])
{
case '+':sum += b[i]; break;
case '-':sum -= b[i]; break;
}
}
cout << sum << endl;
return 0;
}

代码可以处理合法的表达式,更好的写法可以参照《编译原理》

追问

这么输出得答案不对啊

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式