代码如下:
//第三个程序--选择结构求解一元二次方程
//谭浩强老师主编《C语言程序设计》第四章例题
#include<stdio.h>
#include<math.h> //程序中要调用平方根函数sqrt
int main()
{
double a, b, c, disc, x1, x2, p, q; //disc是判别式sqrt(b*b-4ac)
scanf_s("%If%If%If",&a,&b,&c); //这里发现原本例子中的scanf函数已经被弃用
//输入双精度浮点型变量的值要用格式声明“%If”
disc = b * b - 4 * a * c;
if (disc < 0)
printf("This equation hasn't real roots\n");
else
{p = -b / (2.0 * a);
q = sqrt(disc) / (2.0 * a);
x1 = p + q; x2 = p - q;
printf("real roots:\nx1=%7.2f\nx2=%7.2\n", x1, x2);
}
return 0;
}
错误是:运行输入2 4 1后回车(数字间有空格),但结果仍然是无实根,按照正确计算应该是有实根的。
求大佬帮助,谢谢!
问题已经解决:错在忘记了一个转换符“f”