如何要求用户输入c语言的数学函数?

时间:2016-12-07 15:30:22

标签: c

我正在做一个大学项目,我必须创建一个数值积分计算器。我需要用户输入被积函数来替换下面的double f(double x)函数,这样我的程序就能用于任何具有非无穷限制的1-D积分。

以下是代码:

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

double f(double x)
{
    return x;
}

double traprule(double a, double b, double N)
{
    double h, sum, fn, fa, fb, I;

    sum = 0;
    h = (b - a) / N;

    for (int n = 1; n < N; n++)
    {
        fn = f(a + n * h);
        sum = sum + fn;
    }

    fa = f(a);
    fb = f(b);
    I = 0.5 * h * ((fa + fb) + 2 * sum);
    return I;
}

int main()
{
    scanf("%s", &f)
    double result;
    result = traprule(0, 10, 10);
    printf("%lg", result);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

C标准库不包含任何可以直接解析任意数学表达式的内容。这样的表达式解析器/求值程序的实现远远超出了Stack Overflow答案的范围,但是如果允许使用外部库(即,这个问题不是你的项目的问题),那么有开源选项,例如TinyExpr。您应该能够将用户的输入读入字符串(例如使用fgets)并将其传递给库。

(如果您不允许使用库,请阅读解析器并研究链接github页面上的图表和源代码,如果遇到问题,请提出更具体的问题。)