C语言中赋值语句的位置

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:13:13
/* 求ax*x+bx+c=0方程的解
(1)a=0, 不是2次方程
(2)b*b-4ac==0,有两个相同的实根
(3)b*b-4ac>0, 有两个不同的实根
(4)b*b-4ac<0, 有两个共轭的复根
disc 代表b*b-4ac
实数在计算和存储时会有一些小的误差 因此不能直接进行if(disc==0)。。。 办法:用disc的绝对值
(fabs(disc))是否小于1e-6 小于它认为是0 实部realpart 虚部imagpart*/
#include "stdio.h"
#include "math.h"
main()
{
float a,b,c,x1,x2,r,i,disc; /*r为realpart(实部) i为imagpart(虚部)不能写成4ac*/
printf("input a,b,c"); /*注意定义float*/
scanf("%f%f%f",&a,&b,&c);
disc=(b*b)-(4*a*c); /*????为什么这句话要写在这里*/
if(a<1e-6)
printf("this is not a quadratic\n");
else
{
if(fabs(disc)<=1e-6)
printf("has two equal roots:%f8.4\n",-b/(2*a)); /*不要写成2a 且要加括号*/
else if(disc>1e-6)
{
x1=(-b+sqrt(disc))/2*a;
x2=(-b+sqrt(disc))/2*a;
printf("has distinct real root:

可以放在第一层else语句里面啊!前一句是输入赋值a,b,c,后面的是使用disc。只要保证使用前进行了初始化或赋值了就行了。

因为a,b,c没有赋值之前,初始化时会报错。属于非法定义变量。