| 
 | 
 
 
 楼主 |
发表于 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[1]);
 
 -     y1 = atof(argv[2]);
 
 -     x2 = atof(argv[3]);
 
 -     y2 = atof(argv[4]);
 
 -     x3 = atof(argv[5]);
 
 -     y3 = atof(argv[6]);
 
 -     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);
 
 - }
 
 
  复制代码 
更改后 |   
 
 
 
 |