《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