如何使scanf()读入e或e ^ 2作为输入?

时间:2018-10-07 13:04:57

标签: c scanf

嗨〜我只是C语言的初学者。我有一些类似的代码:

#include<stdio.h>
#include<math.h>

...
scanf("%lf %lf", &A[I], &B[I])
...

我需要从键盘输入e或e ^ 2之类的数据。我尝试使用“ e”或“ exp(1)”,但是它们没有起作用。有人可以给我一些建议吗?任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:4)

scanf()的输入是字符串,C是通用的低级编程语言,不会将'e'解释为欧拉数2.7182818 ...或任何其他常见的数学常数。

此外,scanf()不是表达式求值器,因此将不会对诸如e ^ 2之类的表达式或诸如exp()之类的调用进行求值。

要执行预期的操作,将需要编写一个可识别特定常量和运算符的表达式求值器。这不是一项琐碎的任务。您可以改编的示例以及对过程的出色解释可以在http://www.arstdesign.com/articles/expression_evaluation.html中找到。有关表达式计算器实现的其他建议,请参见c expression Evaluator

答案 1 :(得分:1)

我也是编程的新手。 但是,我可能建议如下:

int main() {
    float n;
    scanf("%f",&n);
    n = pow(2.718281,n);
    printf("%f\n",n);
}

编辑 :我们不能在C中使用^作为幂运算符,而是使用pow()函数。

如果我写错了,请提出修改建议。