c语言程序设计
题目描述求ax^2+bx+c=0的根。分别考虑d=b^2-4ac大于零,等于零和小于零三种情况。a、b、c要求是浮点型。程序要对a、b、c的各种情况进行处理。如判断a是否...
题目描述
求ax^2+bx+c=0的根。分别考虑d=b^2-4ac大于零,等于零和小于零三种情况。
a、b、c要求是浮点型。程序要对a、b、c的各种情况进行处理。如判断a是否为0,b^2-4ac分别为大于0、小于0、等于0。
解答提示:
1)求一浮点数的平方根可以用库函数sqrt(x)。x要求是浮点数。如以下赋值语句:y=sqrt(x);表示求x的平方根,赋值给y。为了使用该函数,需要在main函数之前加上预处理语句:#include。
2)如何判断两个浮点数是否相等:
假设f1和f2是两个浮点数。若想写一个关系表达式,判断f1和f2是否相等,不能写成:if(f1==f2),而是要写成f1和f2的差的绝对值近似接近于0,如写成:if(fabs(f1-f2)<=1e-6)。其中1e-6表示10的-6次方,fabs函数用于求绝对值。原因:浮点数在内存中是以近似值存储的,所以不能执行是否相等的比较。
输入与输出要求:
输入3个浮点数,代表a,b,c。输出对应方程的根:
当该方程非一元二次方程时,输出“The equation is not quadratic.”。
当该一元二次方程有两个相等的实数根时,输出“The equation has two equal roots: xx.”。
当该一元二次方程有两个不相等的实数根时,输出“The equation has two distinct real roots: x1 and x2.”。
当该一元二次方程有两个不相等的虚数根时,输出“The equation has two complex roots: x1 and x2.”。
所有的实数均保留4位有效数字。
注意:1、运算中用到的所有数据要求用float型存储。
2、当有两个不同的根时,解为实数时先输出大的那个根,解为复数时先输出虚部为正的那个根。
输入样例
Sample1:
0 3 9
Sample2:
1.0 -6.0 9.0
Sample3:
2.1 -9 8
Sample4:
3.5 3.6 8.0
输出样例
Sample1:
The equation is not quadratic.
Sample2:
The equation has two equal roots: 3.0000.
Sample3:
The equation has two distinct real roots: 3.0273 and 1.2584.
Sample4:
The equation has two complex roots: -0.5143+1.4217i and -0.5143-1.4217i.
提交题目 展开
求ax^2+bx+c=0的根。分别考虑d=b^2-4ac大于零,等于零和小于零三种情况。
a、b、c要求是浮点型。程序要对a、b、c的各种情况进行处理。如判断a是否为0,b^2-4ac分别为大于0、小于0、等于0。
解答提示:
1)求一浮点数的平方根可以用库函数sqrt(x)。x要求是浮点数。如以下赋值语句:y=sqrt(x);表示求x的平方根,赋值给y。为了使用该函数,需要在main函数之前加上预处理语句:#include。
2)如何判断两个浮点数是否相等:
假设f1和f2是两个浮点数。若想写一个关系表达式,判断f1和f2是否相等,不能写成:if(f1==f2),而是要写成f1和f2的差的绝对值近似接近于0,如写成:if(fabs(f1-f2)<=1e-6)。其中1e-6表示10的-6次方,fabs函数用于求绝对值。原因:浮点数在内存中是以近似值存储的,所以不能执行是否相等的比较。
输入与输出要求:
输入3个浮点数,代表a,b,c。输出对应方程的根:
当该方程非一元二次方程时,输出“The equation is not quadratic.”。
当该一元二次方程有两个相等的实数根时,输出“The equation has two equal roots: xx.”。
当该一元二次方程有两个不相等的实数根时,输出“The equation has two distinct real roots: x1 and x2.”。
当该一元二次方程有两个不相等的虚数根时,输出“The equation has two complex roots: x1 and x2.”。
所有的实数均保留4位有效数字。
注意:1、运算中用到的所有数据要求用float型存储。
2、当有两个不同的根时,解为实数时先输出大的那个根,解为复数时先输出虚部为正的那个根。
输入样例
Sample1:
0 3 9
Sample2:
1.0 -6.0 9.0
Sample3:
2.1 -9 8
Sample4:
3.5 3.6 8.0
输出样例
Sample1:
The equation is not quadratic.
Sample2:
The equation has two equal roots: 3.0000.
Sample3:
The equation has two distinct real roots: 3.0273 and 1.2584.
Sample4:
The equation has two complex roots: -0.5143+1.4217i and -0.5143-1.4217i.
提交题目 展开
3个回答
展开全部
#include "stdio.h"
#include "math.h"
int main(int argc,char *argv[]){
float a,b,c,d;
printf("Please enter a, b, c(R:)...\n");
scanf("%f%f%f",&a,&b,&c);
if(a){
if((d=b*b-4*a*c)-0.0>1.0E-6){
printf("The equation has two distinct real roots: ");
d=(float)sqrt(d);
printf("%.4f and %.4f\n",(-b+d)/2/a,(-b-d)/2/a);
}
else if(0.0-d>1.0E-6){
printf("The equation has two complex roots: ");
d=(float)sqrt(-d);
printf("%.4f+%.4fi and %.4f-%.4fi\n",-b/2/a,d/a/2,-b/2/a,d/a/2);
}
else if(fabs(d-0.0)<=1.0E-6)
printf("The equation has two equal roots: %.4f\n",-b/2/a);
}
else
printf("The equation is not quadratic.\n");
return 0;
}
运行样例:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询