您的位置 首页 知识

c语言解一元二次方程带虚根(一元二次方程程序代码)

c语言一元二次方程求解(包含复根)?

编写函数root(double a,double b,double c)和main(),在主函数中输入一元二次方程的系数x,y,z,然后调用root函数求解此方程的根(实根和复根)并输出。

代码:

#include <stdio.h>

#include <math.h>

void root(double a,double b,double c);

void main(){

double x,y,z;

printf(“请输入一元二次方程x-y-z的值:”);

scanf(“%lf,%lf,%lf”,&x,&y,&z);

root(x,y,z);

}

void root(double a,double b,double c){

double p,x1,x2;

p=b*b-4*a*c;

if(p>0){

x1=(-b+sqrt(p))/(2*a);

x2=(-b-sqrt(p))/(2*a);

printf(“方程有两个不同的实根:x1=%.2lf,x2=%.2lfn”,x1,x2);

}

else if(p==0){

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

printf(“方程有两个相同的实根:x1=x2=%.2lfn”,x1);

}else{

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

x2=sqrt(fabs(p))/(2*a);

printf(“方程有两个不同的虚根:x1=%.2lf+%.2lfi,x2=%.2lf-%.2lfin”,x1,x2,x1,x2);

}

}

测试1:

测试2:

测试3:

我自己编了一个C语言解一元二次方程的程序 ,哪位帮忙看看那里出错了

  • main(){ float a,b,c,x1,x2; printf("请输入a,b,c"); scanf("%f,%f,%f",&a,&b,&c); x1=(-b+sqrt(b*b-4*a*c))(2*a); x2=(-b-sqrt(b*b-4*a*c))(2*a); printf("%f,%f",x1,x2);}
  • 没语法错误,就是少了头文件#include stdio.h#includemath.hmain(){ float a,b,c,x1,x2; printf("请输入a,b,c"); scanf("%f,%f,%f",&a,&b,&c); x1=(-b+sqrt(b*b-4*a*c))(2*a); x2=(-b-sqrt(b*b-4*a*c))(2*a); printf("%f,%f",x1,x2);}你这个没用判断有没有实根,所以输入时要格外注意。如果需要功能更强大的解1元2次方程的方法,请追问。别问了不采纳,如果可行请采纳

关于C语言解一元二次方程的问题

  • 为啥b,c的值都为0呢问题补充: #include "stdio.h"#include "math.h"int main(){double a,b,c;double delta,x1,x2;printf("Please input 3 real numbers for a,b,cn");scanf("%lf%lf%lf",&a,&b,&c);printf("a=%f b=%f c=%fn",a,b,c);delta=b*b-4*a*c;x1=(-b-sqrt(delta))(2*a);x2=(-b+sqrt(delta))(2*a);printf("x1=%fx2=%fn",x1,x2);return 0;}
  • double的输入你使用了 %lf 输出也使用 %lf 啊将两个printf中的 %f 换成 %lf

C语言计算一元二次方程结果一直为-inf,不知道是哪里出错了,求大神解答

  • #define _CRT_SECURE_NO_WARNINGS #includestdio.h#includemath.hint main(void) { double a, b, c;//系数 double x1, x2;//结果 double d ;//判定式 printf("请输入一元二次方程的三个系数(用空格隔开)"); scanf_s("%lf %lf %lf", &a, &b, &c); d = b * b – 4 * a*c; if (a = 0) { printf("不是一元二次方程n");//a等于0时为一元一次方程 }else if (d 0) {//判定式等于0时为虚数解 printf("虚数解n"); }else if (d == 0) {//判定式等于0时为重解 x1 = -b / (2 * a); printf("重解 x=%lfn", x1); }else{ x1 = (-b + sqrt(d)) / (2 * a); x2 = (-b – sqrt(d)) / (2 * a); printf("x1=%f,x2=%fn", x1, x2); } return 0; } #define _CRT_SECURE_NO_WARNINGS #includestdio.h#includemath.hint main(void) {double a, b, c;系数double x1, x2;结果double d ;判定式printf("请输入一元二次方程的三个系数(用空格隔开)");scanf_s("%lf %lf %lf", &a, &b, &c);d = b * b – 4 * a*c;if (a = 0) {printf("不是一元二次方程n");a等于0时为一元一次方程}else if (d 0) {判定式等于0时为虚数解printf("虚数解n");}else if (d == 0) {判定式等于0时为重解x1 = -b (2 * a);printf("重解 x=%lfn", x1);}else{x1 = (-b + sqrt(d)) (2 * a);x2 = (-b – sqrt(d)) (2 * a);printf("x1=%f,x2=%fn", x1, x2);}return 0;}
  • #define _CRT_SECURE_NO_WARNINGS#include cstdio #include cmathint main(void) { double a, b, c; //系数 double x1, x2; //结果 double d; //判定式 printf("请输入一元二次方程的三个系数(用空格隔开)"); scanf("%lf %lf %lf", &a, &b, &c); d = b * b – 4 * a * c; if (0==a) { // 这里错了,你写成 "a=0"了,建议以后 写 "0 == a" printf("不是一元二次方程n"); //a等于0时为一元一次方程 } else if (d 0) { //判定式等于0时为虚数解 printf("虚数解n"); } else if (d == 0) { //判定式等于0时为重解 x1 = -b / (2 * a); printf("重解 x=%lfn", x1); } else { x1 = (-b + sqrt(d)) / (2 * a); x2 = (-b – sqrt(d)) / (2 * a); printf("x1=%f,x2=%fn", x1, x2); } return 0;}

返回顶部