gpt4 book ai didi

c - 从左到右评估

转载 作者:行者123 更新时间:2023-11-30 17:04:15 25 4
gpt4 key购买 nike

我正在尝试在 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);

}

感谢任何帮助。

最佳答案

假设交替使用数字和运算符与单字符数字(这似乎是您所假设的),与原始实现类似的最小实现是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 20

int main(void) {
char exp[SIZE];
int ans, length, i;

printf("Enter your expression: ");
fgets(exp, 20, stdin);
ans = exp[0] - '0';
length = strlen(exp) - 1;
for (i = 0; i < length && exp[i] != '\n'; i++) {
switch (exp[i]) {
case '+':
ans += exp[i+1] - '0';
break;
case '-':
ans -= exp[i+1] - '0';
break;
case '*':
ans *= exp[i+1] - '0';
break;
case '/':
ans /= exp[i+1] - '0';
break;
default:
break;
}
}
printf("The answer is %d\n", ans);
return 0;
}

关于c - 从左到右评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35882904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com