解题思路:
一元二次方程 ax²+bx+c=0 (a≠0) 其求根依据判定式△的取值为三种 ( △=b²-4ac ) 1. △>0,方程有两个不相等的实数根; x1=[-b+√(△)]/2a; //( △=b²-4ac ) x2=[-b-√(△)]/2a; 2. △=0,方程有两个相等的实数根; x1=x2=[-b+√(△)]/2a= -b/2a ; 3. △<0,方程无实数根,但有2个共轭复根。 x1=[-b+√(△)*i]/2a; //( △=b²-4ac ) x2=[-b-√(△)*i]/2a;
注意事项:
注意控制格式,保留三位小数输出 sqrt()开平方函数,参数为正数
参考代码:
#include"iostream" #include"cmath" //调用sqrt()开平方函数 #include"cstdio" //调用printf()控制格式化输出 using namespace std; float x1,x2,a,b,c,z; void func1(){ //大于零 x1=( -b+sqrt(z) )/( 2*a ); x2=( -b-sqrt(z) )/( 2*a ); } void func2(){ //等于零 x1=x2=( -b )/( 2*a ); } void func3(){ //小于零 z=sqrt(-z); printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n",-b/(2*a),z/(2*a),-b/(2*a),z/(2*a)); } int main(){ cin>>a>>b>>c; z=b*b-4*a*c; if(z>0){ func1(); }else if(z<0){ func3(); return 0; }else{ func2(); } printf("x1=%.3f x2=%.3f\n",x1,x2); return 0; }
0.0分
48 人评分
#include<stdio.h> #include<math.h> int main() { double a,b,c,d; scanf("%lf%lf%lf", &a,&b,&c); d=b*b-4*a*c; if(d>0){ printf("x1=%.3lf+%.3lf x2=%.3lf-%.3lf\n",-b/2*a, (sqrt(d))/2*a,-b/2*a, (sqrt(d))/2*a); } else if(d=0){ print("x1=%.3lf x2=%.3lf\n",-b/2*a,-b/2*a); } else{ printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi\n",-b/2*a, (sqrt(-d))/2*a,-b/2*a, (sqrt(-d))/2*a); } return 0; } 不知道为什么老是答案错误
#include"iostream" #include"cmath" //调用sqrt()开平方函数 #include"cstdio" //调用printf()控制格式化输出 using namespace std; 不如直接换成 #include <stdio.h> #include <math.h> 看起来还更简洁明了,,,毕竟没使用cin和cout。。。
与神明说 2018-11-16 08:28:50 |
才开始用c++写的,后来发现用c的输出方便一点,我就那也写了
A+B for Input-Output Practice (VI) (C++代码)浏览:445 |
这可能是一个假的冒泡法浏览:1071 |
小明A+B (C语言代码)浏览:1317 |
简单的a+b (C语言代码)浏览:601 |
程序员的表白 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:626 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1215 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:468 |
printf基础练习2 (C语言代码)浏览:653 |
1011题解浏览:819 |
温良 2019-08-11 22:00:51 |
2*a要加括号,不然就先算-b/2了
阿琛 2020-03-22 22:45:30 |
double 类型对应的好像是%f
seahorizon 2020-08-13 19:10:29 |
@wfc 是%lf
...曹大官子... 2021-01-22 15:56:49 |
兄弟,题目的要求是用自定义的函数哈
kktry 2021-03-31 17:49:21 |
#include<math.h> int main() { double a,b,c,d; scanf("%lf%lf%lf", &a,&b,&c); d=b*b-4*a*c; if(d>0){ printf("x1=%.3lf+%.3lf x2=%.3lf-%.3lf ",-b/(2*a), (sqrt(d))/(2*a),-b/(2*a), (sqrt(d))/(2*a)); } else if(d==0){ printf("x1=%.3lf x2=%.3lf ",-b/(2*a),-b/(2*a)); } else{ printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi ",-b/(2*a), (sqrt(-d))/(2*a),-b/(2*a), (sqrt(-d))/(2*a)); } return 0; }
kktry 2021-03-31 17:49:55 |
2*a要加括号,第二个else if == 不然就相当于赋值,printf打错了,其他没问题