If语句的注意点

求方程ax^2+bx+c=0的根,用3个函数分别求当b^2减4ac小于零大,小于零,等于零时的根。

请看下面这个代码:

#include<stdio.h>

#include<math.h>

void function_1(double a,double b,double c)

{

double i,j,x1,x2;

i=(-b)/2*a;

j=sqrt(b*b-4*a*c);

x1=i+j;

    x2=i-j;

printf("x1=%lf x2=%lf\n",x1,x2);

}

void function_2()

{

printf("无实数根\n");

}

void function_3(double m,double n,double t)

{

double i,j,x1,x2;

i=(-n)/2*m;

j=sqrt(n*n-4*m*t);

x1=i+j;

    x2=i-j;

printf("x1=%lf x2=%lf\n",x1,x2);

}

int main()

{

double a,b,c;

scanf("%lf%lf%lf",&a,&b,&c);

if(b*b-4*a*c>0)

{

function_1(a,b,c);

}

else if(b*b-4*a*c<0)

{

function_2();

}

else if(b*b-4*a*c==0);

{

function_3(a,b,c);

}

return 0;

}

它的输出结果有两个x1,x2其主要原因是else if后面有个;使if无限制作用了。而正确的是:

#include<stdio.h>

#include<math.h>

void function_1(double a,double b,double c)

{

double i,j,x1,x2;

i=(-b)/2*a;

j=sqrt(b*b-4*a*c);

x1=i+j;

    x2=i-j;

printf("x1=%lf x2=%lf\n",x1,x2);

}

void function_2()

{

printf("无实数根\n");

}

void function_3(double m,double n,double t)

{

double i,j,x1,x2;

i=(-n)/2*m;

j=sqrt(n*n-4*m*t);

x1=i+j;

    x2=i-j;

printf("x1=%lf x2=%lf\n",x1,x2);

}

int main()

{

double a,b,c;

scanf("%lf%lf%lf",&a,&b,&c);

if(b*b-4*a*c>0)

{

function_1(a,b,c);

}

else if(b*b-4*a*c<0)

{

function_2();

}

else if(b*b-4*a*c==0)

{

function_3(a,b,c);

}

return 0;

}

if语句的使用一定要注意,如果没有掌握好,便会用错并且找不到错误,而以上得到的才是想要的结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容