我试图在C中执行从左到右的评估。没有任何优先顺序。所以5 + 3 * 2应该是16.我知道如何用2个数字和一个运算符做到这一点,但是,我无法弄清楚如何为像2 + 4-5 + 2这样的表达式做同样的事情。从左到右评估
这是我有2个数字:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 20
int main(void)
{
char exp[SIZE];
int ans,c, i=0;
int length;
printf("Enter your expression: ");
fgets(exp, 20, stdin);
length = strlen(exp);
--length;
for(int j=0; j<length; j++)
{
while (exp[i]!='\n')
{
// putchar(exp[i]);
i++;
switch (exp[i])
{
case '+':
ans = (exp[i]-'0') + (exp[2]-'0');
printf("The answer is %d\n", ans);
break;
case '-':
ans = (exp[0]-'0') - (exp[2]-'0');
printf("The answer is %d\n", ans);
break;
case '*':
ans = (exp[0]-'0') * (exp[2]-'0');
printf("The answer is %d\n", ans);
break;
case '/':
ans = (exp[0]-'0')/(exp[2]-'0');
printf("The answer is %d\n", ans);
break;
default:
break;
}
}
}
exit(0);
}
任何帮助表示赞赏。
提示:使你的第一个数字你'ans',然后继续做与'ans'计算。 – nneonneo