c语言 求ax^2+bx+c=0方程的根。a,b,c由键盘输入。

2024-12-31 13:43:13
推荐回答(5个)
回答1:

/*完整程序如下,在VC6.0上编译通过,绝对没问题*/
#include
#include
#include

void main()
{
int a, b, c;
double x1, x2;

printf("input a b c:");
scanf("%d%d%d", &a, &b, &c );

if ( a == 0 )
{
/*方程有一个实根*/
x1 = -c / b;
printf( "Answer:%.2f", x1 );
}
else
{
double k = b * b - 4 * a * c;

if ( k > 0 )
{
/*方程有两实根*/

x1 = ( -b - sqrt( k ) ) / ( 2 * a ); /*sqrt:开跟号; */
x2 = ( -b + sqrt( k ) ) / ( 2 * a );

printf("Answer:\n");
printf("\tx1 = %.2f\n", x1);
printf("\tx2 = %.2f\n", x2 );
}
else if ( k == 0 )
{
/*方程有两相等实根*/

x1 = x2 = ( -b ) / ( 2 * a );

printf("Answer:\n");
printf( "\tx1 = x2 = %.2f\n", x1 );
}
else
{
/*方程有两虚根*/

double p = -b / ( 2 * a );
double q = sqrt( 4 * a * c - b * b ) / ( 2 * a );

printf("Answer:\n");
printf("\tx1 = %.2f + %.2f * i\n", p, q);
printf("\tx2 = %.2f - %.2f * i\n", p, q);
}
}

getch();
}

回答2:

#includ
main()
{
int a,b,c;
float m,n,k,l,p,q;
char s;

s='i';
printf("input a b c:/n");
scanf("%d %d %d",&a,&b,&c);

if(a==0)
{
m=-c/b;
printf("the result is:%f",m);
}
if(a!=0)
{
k=b*b-4*a*c;
if(k>0)
{
m=(-b-sqrt(k))/(2*a); //sqrt:开跟号; m,n既为两实根
n=(-b+sqrt(k))/(2*a);
printf("the result is:m=%f n=%f",m,n);
}

if(k==0)
{
m=n=(-b)/(2*a); //两相等实根
printf("the result is:m=n=%f\n",m);
}
if(k<0)
{
l=4*a*c-b*b;
p=-b/(2*a);q=sqrt(l)/(2*a);
printf("the result is:m=%f+%f*%c\n",p,q,s);
printf("n=%f-%f*%c\n",p,q,s); //求出两虚根
}
}
getch();
}

大体上对 你在遍译一下 我这机器上没tc

回答3:

已经编好了,绝对可以运行的
那些运算的方法就是和数学上的计算方法一样,
你应该看得懂吧:)

#include
#include
main()
{
float a,b,c;
float x1,x2,k; //x1,x2为两实根

printf("Please input a b c:\n");
scanf("%d %d %d",&a,&b,&c);

if(a==0)
{ x1=-c/b;
printf("The result is:\n%f\n",x1);
}
else k=b*b-4*a*c;

if(k>0)
{
x1=(-b-sqrt(k))/(2*a); //sqrt:求平方根;
x2=(-b+sqrt(k))/(2*a);
printf("The result is:\n x1=%f x2=%f\n",x1,x2);
}
else if(k==0)
{
x1=x2=(-b)/(2*a); //有相等实根
printf("The result is:\nx1=x2=%f\n",x1);
}
else if(k<0)
{ x1=(-b-sqrt(-k))/(2*a); //求出两个虚根;
x2=(-b+sqrt(-k))/(2*a);
printf("the result is:\nx1=%f x2=%f\n",x1,x2);
}

}

回答4:

思路:
1.先用函数录入abc的值.
2.判断a的值是否为0,如果a=0,则再if(b!=0),x=-c/b,else....
3.if(a!=0),拿公式算!
反正就是把方程的解的所有可能都拿出来,然后判断方程到底是属于哪一类,再按照这一类的公式进行计算!

回答5:

#includ
main()
{
int
a,b,c;
float
m,n,k,l,p,q;
char
s;
s='i';
printf("input
a
b
c:/n");
scanf("%d
%d
%d",&a,&b,&c);
if(a==0)
{
m=-c/b;
printf("the
result
is:%f",m);
}
if(a!=0)
{
k=b*b-4*a*c;
if(k>0)
{
m=(-b-sqrt(k))/(2*a);
//sqrt:开跟号;
m,n既为两
实根
n=(-b+sqrt(k))/(2*a);
printf("the
result
is:m=%f
n=%f",m,n);
}
if(k==0)
{
m=n=(-b)/(2*a);
//两相等实根
printf("the
result
is:m=n=%f\n",m);
}
if(k<0)
{
l=4*a*c-b*b;
p=-b/(2*a);q=sqrt(l)/(2*a);
printf("the
result
is:m=%f+%f*%c\n",p,q,s);
printf("n=%f-%f*%c\n",p,q,s);
//求出两虚根
}
}
getch();
}
大体上对
你在遍译一下
我这机器上没tc