若 a,x,b 都是 double 类型,则对方程 $a \times x+b=0$ 求解的程序中可以直接用 x=-b/a 来求解。( )
这题考的是浮点运算里除法的定义域。拿到题先别急着套公式,脑子里过一遍a能不能为0,a为0时方程ax+b=0会怎样?这才是解题的起手式。
学生最容易犯的错就是看到ax+b=0就条件反射地写出x=-b/a,完全忽略了a可能是0的情况。题干特意强调a,x,b都是double类型,就是想考你计算机里除以零会产生inf或nan,而不是数学上无解。很多考生选了A,就是没意识到“直接”二字意味着程序必须对所有合法的double输入都成立,一旦a=0程序就会出错或给出错误结果。
本题考查《GESP 八级 C++ 大纲》中浮点运算规则与方程求解的数学条件。命题人专门用这道题卡住只会套公式的考生——他们背下x=-b/a却忘了数学里除以零的禁忌,这是八级对算法严谨性的高阶考察。题干强调a,x,b都是double类型,就是想考你计算机里除以零会产生inf或nan,而不是数学上无解。
拿到题先别急着写代码或套公式,脑子里过一遍a能不能为0。a为0时方程ax+b=0会怎样?移项得ax=-b,若a=0则0*x=-b,此时要么无解(b≠0)要么无穷解(b=0)。所以只有当a≠0时才能用除法,结论很明确——不能“直接”用公式。这类题的通法是:遇到等式变形,先检查除数是否可能为零,这是编程里所有除法运算的通用前置条件。