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

来源:百度知道 编辑:UC知道 时间:2024/05/13 09:06:44
输入 a,b,c ,就一元二次方程 ax²+bx+c=0 的根。

输入:
假设 a,b,c均int。

输出:
要求输出的根为 double 型,保留 6 位小数。

例子 输入 输出
(1)0 0 0↵ Input error!↵
(2)0 0 10↵ Input error!↵
(3)0 10 0↵ x=0.000000↵
(4)10 0 0↵ x1=x2=0.000000↵
(5)10 20 0↵ x1=0.000000↵
x2=-2.000000↵
(6)10 0 20↵ x1=1.414214i↵
x2=-1.414214i↵
(7)2 2 2↵ x1=-0.500000+0.866025i↵
x2=-0.500000-0.866025i↵
↵代表回车,i是虚数符号
程序要用选择型只能用if语句
希望能尽快给我答案
尽量写明每一行的解释
那我这个程序有什么问题呢?
#include"stdio.h"
#include"math.h"
main()
{
int a,b,c;
double d,h,m,p,r;
scanf("%d %d %d",&a,&b,&c);
if((a==0)&&(b==0)) printf("Input error!\n");
if((a==0)&&(b!=0)) m=-c/b,printf("x=%.6f\n",m);
if(a!=0) d=b*b

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

x1=(-b+sqrt(m))/2*a;
x2=(-b-sqrt(m))/2*a;
m=b*b-4*a*c
好象没有这些吧