这是我在学习用c语言编程时遇到的一个问题。
Enter an expression : 1+2.5*3
Output: 10.5
这就是我到目前为止想到的。
编辑
#include<stdio.h>
int main (void)
{
char c;
float f1=0.0f,f2=0.0f;
c = getchar();
while(c != '\n')
{
if(c!='+' && c!='-' && c!='*' && c!='/')
{
if (f1 == 0.0f)
{
f1 = c - '0';
c = getchar();
}
else
{
f2 = c - '0';
c = getchar();
}
}
switch (c)
{
case '+': c = getchar(); f2 = c - '0' ; f1 = f1+f2; break;
case '-': c = getchar(); f2 = c - '0' ; f1 = f1-f2; break;
case '*': c = getchar(); f2 = c - '0' ; f1 = f1*f2; break;
case '/': c = getchar(); f2 = c - '0' ; f1 = f1/f2; break;
// case '.':
default: break;
}
c = getchar();
}
printf("\n Value of the expression: %.2f", f1);
return 0;
}
这段代码只是在假设所有操作数都是一位数的情况下实现的。如何将其实现为多个数字/浮点数?我应该采取什么方法来解决这个问题。
我没有导师可以咨询(自学和第7章),我在这方面坚持了几个小时,所以任何帮助都将非常感谢。
谢谢你
NB公司
有人提到atoi()。。。但我在找别的东西/手册
最佳答案
f2 = c; // this will convert ascii charecter value of c into f2.
// How do i convert the character '2' into the digit 2 ?
这种方式:
f2 = c - '0';
字符
'0'
到'9'
保证在C中有顺序值。关于c - 评估C中的表达式(例如1 + 2.5 * 3),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12662681/