xhtxhtxht 发表于 2021-7-20 08:30:32

请删帖。

本帖最后由 xhtxhtxht 于 2023-1-25 15:31 编辑

请删帖。

SHRS23 发表于 2021-7-21 01:31:34

算完kmn之后打印的是abc的值

MZZ666 发表于 2021-7-21 08:50:29

学得够快 我还没到指针

xhtxhtxht 发表于 2021-7-21 20:35:34

谢谢
我后来发现了是y1,y2,y3分开乘才行。公式写错了。
解决了!

xhtxhtxht 发表于 2021-7-21 20:36:53

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

int main(int argc, char ** argv)
{
    //处理输入
    if(argc != 7) {
      printf("\
对于如\n\
      (x1,f(x1))\n\
      (x2,f(x2))\n\
      (x3,f(x3))\n\
的三个点,请输入 x1 f(x1) x2 f(x2) x3 f(x3) 作为程序的参数\n\
程序会给出穿过这三个点的二次函数解析式");
      return 1;
    }

    float x1, x2, x3, y1, y2, y3;
    x1 = atof(argv);
    y1 = atof(argv);
    x2 = atof(argv);
    y2 = atof(argv);
    x3 = atof(argv);
    y3 = atof(argv);
    printf("%.2f %.2f %.2f %.2f %.2f %.2f \n",x1, y1, x2, y2, x3, y3);
    //处理
    float k, m, n, a, b, c;
    k = x1 * x1 - (x2 + x3) * x1 + x2 * x3;
    m = x2 * x2 - (x1 + x3) * x2 + x1 * x3;
    n = x3 * x3 - (x1 + x2) * x3 + x1 * x2;
    printf("k = %.2f;m %.2f;n %.2f\n",k, m, n);
   
    a = y1 / k + y2 / m + y3 / n;
    b = -(y1 * (x2 + x3) / k + y2 * (x1 + x3) / m + y3 * (x1 + x2) / n);
    c = y1 * x2 * x3 / k + x1 * y2 * x3 / m + x1 * x2 * y3 / n;
    //以上是根据拉格朗日插值公式得出的结论
   
    printf("此二次函数的解析式为:f(x) = %.2fx^2 + %.2fx + %.2f\n", a, b, c);
}

更改后

xhtxhtxht 发表于 2021-7-21 20:37:24

输入三个点坐标自动生成函数表达式
页: [1]
查看完整版本: 请删帖。