当前位置:首页 » 编程语言 » 求二次方程的实数和复数解c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

求二次方程的实数和复数解c语言

发布时间: 2023-06-04 08:28:10

c语言,求一元二次方程的解

对于如下的一元二次方程:

ax*x+bx+c=0

设计C语言程序,输入一元二次方程的三个系数a、b、c,求解出该方程的两个根,并且允许用户在程序中多次输入不同的系数,以求解不同的一元二次方程的解。

编程思路分析:

对于该方程,令delta=b^2-4*a*c,从数学的角度来讲,我们需要根据delta的值来判断该方程的根情况:

当delta>=0时,其两个根为实数解,分别为(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);

当delta<0时,其两个根为复数解,实部皆为-b/(2*a),虚部分别为sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。

其中,sqrt(delta)代表对delta作开根号运算。

在代码设计中,可定义一个结构体Complex存储该方程的根,在该结构体中包括实部和虚部两个变
在程序中,定义两个Complex类型的根x1和x2,当delta>=0时,两个根的虚部为0,否则,分别求解两个根的虚部值。
具体编程如下:

#include"stdio.h"
#include"math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{floata,b,c,x1,x2,d;
printf("请输入a:");
scanf("%f",&a);
printf("请输入b:");
scanf("%f",&b);
printf("请输入c:");
scanf("%f",&c);
d=b*b-4*a*c;if(d<0)
printf("方程没有实数解。 ");
if(d==0){x1=(-b)/(2*a);
printf("x1=%f ",x1);}
if(d>0){x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);}}
请输入a:12
请输入b:34
请输入c:4
x1=-0.122985,x2=-2.710348
Pressanykeytocontinue

为迭代序列。

㈡ c语言求解一元二次方程

1、本题要先判断a,如果a=0,则不是一元二次方程。
2、首先要判断d是否小于0,则只能有虚数解,d小于0时,就不能去开平方,否则会出错。
3、按照以上思路重新修改你的程序。

㈢ 用C语言求二次方程的解

修改如下:

//---------------------------------------------------------------------------

# include<stdio.h>
# include<math.h>
int main(){
double a,b,c;
printf("Please input a,b,c:\n");
scanf("%lf%lf%lf",&a,&b,&c); /*注意这里*/
if(b*b-4*a*c<0)
printf("NO result!\n");
else
printf("x1=%lf\nx2=%lf\n",(sqrt(b*b-4*a*c)-b)/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a)); /*注意这里*/
return 0;
}
//---------------------------------------------------------------------------

㈣ 用c语言求解复数域一元二次方程

#include<stdio.h>
#include<math.h>
int main(){
int a,b,c;
int t;
//t就是b^2-4ac判断它和0的大小决定是解否是复数
printf("推出请按Ctrl+c,输入非数字后果自付.\n");
//Ctrl+c是 windows下的文件结束符.在命令行下不是拷贝快捷键
while(1){
a=b=c=t=0;
//初始化
scanf("%d %d %d",&a,&b,&c);
//输入数据
if(a==0){printf("input error!\n");continue;}
//如果输入二次项系数为零显示告诉用户
t=b*b-4*a*c;
if (t<0){
printf("x1=%.6lf+%.6lfi\n",-b/2.0/a,sqrt(-t)/2/a);
printf("x1=%.6lf-%.6lfi\n",-b/2.0/a,sqrt(-t)/2/a);

}else {
printf("x1=%.6lf+0i\n",-b/2.0/a+sqrt(t)/2/a);
printf("x1=%.6lf+0i\n",-b/2.0/a-sqrt(t)/2/a);
}
}
return 0;}

㈤ 关于二次方程的C语言程序

这个问题很简单
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,d;
float x1,x2;
scanf("%f %f %f",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)
{
printf("on!\n");
}
else
if(d==0)
{
x1=(-b/(2*a));
printf("%f\n",x1);
}
else
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("X1=%f\nX2=%f\n",x1,x2);
}
}

㈥ C语言解一元二次方程(包含虚数解)

表示虚数一般不用j表示,而是用i表示。输出的时候后面带上i就可以了。

判别式变量d为负时,用sqrt(-d)

形如ax²+bx+c=0的方程的完整程序如下:

#include<stdio.h>
#include<math.h>
voidmain()
{
floata,b,c,dlt;
printf("请输入a、b、c:");
scanf("%f%f%f",&a,&b,&c);
if(a)
{
dlt=b*b-a*c*4;
if(dlt>0)
printf("x1=%f x2=%f",(-b+sqrt(dlt))/(a*2),(-b-sqrt(dlt))/(a*2));
elseif(dlt<0)
printf("x1=%f+%fi x2=%f-%fi",-b/(a*2),abs(sqrt(-dlt)/(a*2)),-b/(a*2),abs(sqrt(-dlt)/(a*2)));
elseprintf("x=%f",-b/(a*2));
}
else
{
if(b)c?printf("x=%f",-c/b):printf("x=%f",abs(-c/b));
elsec?printf("方程无实数解"):printf("方程的解为任意实数");
}
}

㈦ 编写求解一元二次方程的C语言程序(红色部分有标注)

#include <stdio.h>
#include <math.h>
int main()
{
double a=1,b=0,c=0,x1,x2,delta;
printf("Input a,b,c: ");
scanf("%lf%lf%lf",&a,&b,&c);//(这里为红色部分)

if(a==0.0 && b==0.0 && c==0)
{
printf("系数a,b,c不能构成方程! ");
return 0;
}
if(a==0)
{
x1=x2=-c/b;
printf("x1=x2=%.4f ",x1);
return 0;
}
delta =b*b - 4*a*c; //此处填写delta的计算表达式(这里为红色部分)
if( delta >= 0)//此处填写表达式 如果delta>=0
{
delta=sqrt(delta);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
printf("x1=%.4f x2=%.4f ",x1,x2);
}
else
{
delta = (0-delta);//delta反号;(这里为红色部分)
delta=sqrt(delta);//delta开方;(这里为红色部分)
x1=-b/(2*a);//实部
x2=delta/(2*a);//虚部
printf("x1=%.4f+%.4fi x2=%.4f-%.4fi ",x1,x2,x1,x2);
}
getchar();
return 0;
}

结果如下:

方程2