这是我在学习用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/

10-12 15:21