
已知二元一次方程的三个系数,用C语言编程求方程的一个根
4个回答
展开全部
设3个系数为a、b、c,均为double型变量,其值由键盘输入。先求出b*b-4*a*c之值,根据此值大于0、小于0、等于0的三种情况分别求根;还要考虑a为0,a、b均为0的具体情况。代码如下:
#include "stdio.h"
#include "math.h"
int main(int argc,char *argv[]){
double a,b,c,dlt,t;
printf("Please enter 3 coefficients a, b & c(R:)...\n");
scanf("%lf%lf%lf",&a,&b,&c);//输入3个实数系数
if(a){//平方项系数不为0则按二次方程解
t=sqrt(sqrt((dlt=b*b-4*a*c)*dlt))/a/2,b=-b/a/2;//求√|dlt|/2a赋t和-b/2a赋b
if(dlt>0)//dlt>0时有双实根
printf("x1 = %g x2 = %g\n",b+t,b-t);
else if(dlt<0)//dlt<0时有双复根
printf("x1 = %g+%gi x2 = %g-%gi\n",b,t,b,t);
else//dlt=0时有单实根
printf("x1=x2 = %g\n",b);
}
else if(!b)//a=0,b=0时无解(含无穷个解)
printf("No solution...\n");
else//a=0,b!=0时有一次方程解
printf("x = %g\n",-c/b);
return 0;
}
试运行样例如下图:
2013-08-10
展开全部
上面的程序都有问题啊! 例如,测验:(x - 3.3)^2=0,输入系数:1 -6.6 10.89如果程序得到x1=x2=3.3,就正确。 下面是C程序(可以求复根):#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,s,x1,x2;
printf("输入系数 a b c: "); scanf("%f %f %f",&a,&b,&c);
if(a==0)
{
printf("二次方程系数a不能为0!");
return;
}
printf("得到的方程是:%fx^2+%fx+%f=0\n",a,b,c);
s = b*b-4*a*c;
if(s==0 | s < 0.0000001)
{
x1 = -b/2/a;
printf("求出两个相同实数根: x1 = x2 = %f\n",x1);
return;
}
else if(s>0)
{
s = sqrt(s);
x1 = (-b+s)/2/a;
x2 = (-b-s)/2/a;
printf("求出两个不同实数根: x1 = %f, x2 = %f\n",x1,x2);
return;
}
else
{
s = sqrt(-s);
x1 = -b/2/a;
x2 = s/2/a;
printf("求出一对复数根: x1 = %f+%fi\n",x1,x2);
printf(" x2 = %f-%fi\n",x1,x2);
return;
}
} .
#include<math.h>
void main()
{
float a,b,c,s,x1,x2;
printf("输入系数 a b c: "); scanf("%f %f %f",&a,&b,&c);
if(a==0)
{
printf("二次方程系数a不能为0!");
return;
}
printf("得到的方程是:%fx^2+%fx+%f=0\n",a,b,c);
s = b*b-4*a*c;
if(s==0 | s < 0.0000001)
{
x1 = -b/2/a;
printf("求出两个相同实数根: x1 = x2 = %f\n",x1);
return;
}
else if(s>0)
{
s = sqrt(s);
x1 = (-b+s)/2/a;
x2 = (-b-s)/2/a;
printf("求出两个不同实数根: x1 = %f, x2 = %f\n",x1,x2);
return;
}
else
{
s = sqrt(-s);
x1 = -b/2/a;
x2 = s/2/a;
printf("求出一对复数根: x1 = %f+%fi\n",x1,x2);
printf(" x2 = %f-%fi\n",x1,x2);
return;
}
} .
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-10
展开全部
#include <stdio.h>
#include <math.h>int main()
{
double a, b, c;
double rst1, rst2;
double det;
printf("please input the arguments of the equation:");
scanf("%lf %lf %lf", &a, &b, &c);
det = b * b - (4 * a * c);
rst1 = ((-1) * b + sqrt(det)) / (2 * a);
rst2 = ((-1) * b - sqrt(det)) / (2 * a); printf("rst1 = %lf, rst2 = %lf\n", rst1, rst2);
return 0;
}
#include <math.h>int main()
{
double a, b, c;
double rst1, rst2;
double det;
printf("please input the arguments of the equation:");
scanf("%lf %lf %lf", &a, &b, &c);
det = b * b - (4 * a * c);
rst1 = ((-1) * b + sqrt(det)) / (2 * a);
rst2 = ((-1) * b - sqrt(det)) / (2 * a); printf("rst1 = %lf, rst2 = %lf\n", rst1, rst2);
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-10
展开全部
#include<stdio.h>
#include<math.h>
void main() {
int a,b,c;
double x1,x2,x;
scanf("%d,%d,%d",&a,&b,&c);
if((a == 0)&&(b == 0)) {
printf("Input error!\n");
return;
}
else
if(a == 0) {
x=-c/b;
printf("x = %.6lf",x);
}
else
if((b*b-4*a*c) >= 0) {
x1 = (-(double)b + sqrt((double)b*(double)b - 4*(double)a*(double)c))/(2*(double)a);
x2 = (-(double)b - sqrt((double)b*(double)b - 4*(double)a*(double)c))/(2*(double)a);
printf("x1 = %.6lf\nx2 = %.6lf\n",x1,x2);
}
else {
x1 = ((-(double)b)/(2*(double)a) + (((double)b*(double)b - 4*(double)a*(double)c)/(2*(double)a)));
x2 = ((-(double)b)/(2*(double)a) - (((double)b*(double)b - 4*(double)a*(double)c)/(2*(double)a)));
printf("x1 = %.6lfi\nx2 = %.6lfi\n",x1,x2);
}}
#include<math.h>
void main() {
int a,b,c;
double x1,x2,x;
scanf("%d,%d,%d",&a,&b,&c);
if((a == 0)&&(b == 0)) {
printf("Input error!\n");
return;
}
else
if(a == 0) {
x=-c/b;
printf("x = %.6lf",x);
}
else
if((b*b-4*a*c) >= 0) {
x1 = (-(double)b + sqrt((double)b*(double)b - 4*(double)a*(double)c))/(2*(double)a);
x2 = (-(double)b - sqrt((double)b*(double)b - 4*(double)a*(double)c))/(2*(double)a);
printf("x1 = %.6lf\nx2 = %.6lf\n",x1,x2);
}
else {
x1 = ((-(double)b)/(2*(double)a) + (((double)b*(double)b - 4*(double)a*(double)c)/(2*(double)a)));
x2 = ((-(double)b)/(2*(double)a) - (((double)b*(double)b - 4*(double)a*(double)c)/(2*(double)a)));
printf("x1 = %.6lfi\nx2 = %.6lfi\n",x1,x2);
}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询