c语言程序问答,c语言程序设计

用户提问

题目描述

求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.

提交题目

推荐答案

#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;

}

运行样例:

辅助答案

用户:亡灵法师

2018年10月26日

可以去博客CSDN查,里边我们遇到的编程问题差不多都可以找到,很好的一个学编程的地方,我也才刚学C没多久,大一新生一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值