1.求一元二次方程的根(if语句)
//求一元二次方程的根 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> int main() { int a, b, c; scanf("%d,%d,%d", &a, &b, &c);//输入的时候一定要记得“,”否则会执行无根的结果 double x1, x2; int d = b * b - 4 * a * c; if (a == 0) { //x1 = -c / b;//error,有整除的问题 3/2 == 1,故解决方案如下即强制转换类型 x1 = (double)-c / b;//强制转换类型 printf("值为x1=x2=%3.2f", x1);//2的意思为保留小数点后俩位 } else { if (d > 0) { x1 = (-b + sqrt(d)) / 2*a; x2 = (-b - sqrt(d)) / 2*a; printf("俩个根x1=%f,x2=%f", x1, x2); } else { if (d == 0) { x1 = -b/(2.0*a);//不使用2*a的原因是有整除的问题 printf("俩个根相同x1=x2=%f", x1); } else//d<0 { printf("无根"); } } } return 0; }
上面的程序代码缩进了三次,一般来说,一个程序的代码缩进不应超过五次,否词过于复杂,不便于看懂。所以,应优化一下代码,如下图所示!!!!
2.求一元二次方程的根(优化)(if语句)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c;
scanf("%d,%d,%d", &a, &b, &c);//输入的时候一定要记得“,”否则会执行无根的结果
double x1, x2;
int d = b * b - 4 * a * c;
if (a == 0)
{
x1 = (double)-c / b;//强制转换类型
printf("值为x1=x2=%3.2f", x1);//2的意思为保留小数点后俩位
}
else if (d > 0)
{
x1 = (-b + sqrt(d)) / 2 * a;
x2 = (-b - sqrt(d)) / 2 * a;
printf("俩个根x1=%f,x2=%f", x1, x2);
}
else if (d == 0)
{
x1 = -b / (2.0 * a);//不使用2*a的原因是有整除的问题
printf("俩个根相同x1=x2=%f", x1);
}
else
{
printf("无根");
}
return 0;
}