C - 如何通过直接输入一串数字和字符(符号)来创建计算器?

时间:2016-12-04 17:27:58

标签: c string calculator

INPUT 1 + 2-3 + 4 OUTPUT = 4

INPUT 1 + 2 + 3 + 4 OUTPUT = 10

输入-1-2-3-4 OUTPUT = -10

这是我的尝试,但我给出了错误的结果

代码片段:

for(i=0;i<strlen(res)+1;i++){
    if(res[i]=='-'||res[i]=='+'||res[i]=='\0'){
        num[z]='\0';
        dig=atoi(num);
        if(x==0){
            sum=dig;
            x++;
        }
        else{
            if(res[i]=='+')
                sum=sum+dig;
            else if(res[i]=='-')
                sum=sum-dig;
        }
        z=0;

    }
    else{
        num[z]=res[i];
        z++;
}
return sum;

3 个答案:

答案 0 :(得分:0)

我会在代码中添加print语句,以查看它出错的地方。但是,当你到达终止空(res[i]=='\0')时,看起来就像你没有将最终数字添加到sum

我正在假设num,x和z的声明和初始化程序,并且缺少}是缩进所暗示的地方。

答案 1 :(得分:0)

此行引用数组“num”,但不是正确的索引:

    dig=atoi(num);

如果您将其更改为:

,则应该修复
    dig=atoi(num[z-1]);

但是,对于数字超过一位数的计算,您的解决方案不起作用。

答案 2 :(得分:0)

  

但是,当你到达终止空(res[i]=='\0')时,看起来就像你没有将最终数字添加到sum

这是真的,但不是唯一的错误;如果遇到+-,则使用先前而不是下一个数字完成相应的加法或减法。因此,输入1+2-3+4实际上会计算1-2+3,其中2 您可以使用strtol简化整个循环的编码:

    char *beg, *end = res;
    for (sum = 0; dig = strtol(beg = end, &end, 0), end-beg; ) sum += dig;