[英]Calculator C: inputting both operator signs and integers to perform calculations
[英]C - How to create calculator by directly inputting a string of numbers and characters(signs)?
输入1 + 2-3 + 4输出= 4
输入1 + 2 + 3 + 4输出= 10
输入-1-2-3-4输出= -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;
我将在代码中添加打印语句,以查看出错的地方。 但是随便看来,当您到达终止null( res[i]=='\\0'
)时,您并没有将最终数字加到sum
。
我对num,x和z的声明和初始化程序进行了假设,而}
就是缩进所暗示的位置。
此行引用数组“ num”,但不是正确的索引:
dig=atoi(num);
如果将其更改为:
dig=atoi(num[z-1]);
但是,您的解决方案不适用于数字长度超过一位数的计算。
但是随便看来,当您到达终止null(
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.