C语言解一元二次方程的实现代码
《Programming Abstractions In C》今日完成进度:p67-p68,通过解一元二次方程来理解指针的其中一个用途:Pointers facilitate sharing data between different parts of a program。完整代码见:https://github.com/codists/Programming-Abstractions-In-C
/* * File: quadeq.c * -------------- * This program finds roots of the quadratic equation * * ax^2 + bx + c = 0 * 问题: * 1.如何获取输入的值? */ #include #include #include "genlib.h" #include "simpio.h" /* * 函数原型(Private function prototype) */ static void GetCoefficients(double *pa, double *pb, double *pc); static void SolveQuadratic(double a, double b, double c, double *px1, double *px2); static void DisplayRoots(double x1, double x2); /* */ void GetCoefficients(double *pa, double *pb, double *pc) { printf("Enter coefficients of quadratic equation:\n"); /* *1.一次性全部输入还是逐个输入? 答:逐个输入。 *2.因为a, b, c还要给下一个函数使用,所以传递的是指针(引用传递)。 * */ printf("请输入第1个系数a:\n"); scanf("%lf", pa); printf("请输入第2个系数b:\n"); scanf("%lf", pb); printf("请输入第3个系数c:\n"); scanf("%lf", pc); } static void SolveQuadratic(double a, double b, double c, double *px1, double *px2) { /* *1.如何解一元二次方程?答:求根公式,x=(-b ± √(b^2-4ac))/2a。 *2.数学运算:(1)求根?sqrt();(2)求幂?pow()。 *3.因为a, b, c没有涉及到修改,所以值传递,而x1, x2, 计算出来还要返回给一个函数使用,所以采用 *应用传递。 *4.特殊情况处理:(1)a==0,此时不是一元二次方程。(2)b^2-4ac