我正在尝试用C构建一个小的二次计算器,但无论我的输入是什么,我都得到以下结果....
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
float a, b, c;
printf("Enter a:");
scanf("%f", &a);
printf("Enter b:");
scanf("%f", &b);
printf("Enter c:");
scanf("%f", &c);
float discriminant = sqrt(b*b - 4*a*c);
float root1 = (-b + discriminant) / (2*a);
float root2 = (-b - discriminant) / (2*a);
printf("Root 1: %f\n", root1);
printf("Root 2: %f\n", root2);
}
答案 0 :(得分:2)
float discriminant = sqrt(b*b - 4*a*c)
此行有潜在危险,因为它有时会执行负数的平方根。如果您希望能够处理复杂的根,那么您必须为此自定义构建解决方案。
您可以更改的是仅验证输入不会导致输入为负。