3153 - 习题2-4-8 一元二次方程求根
求方程式ax2+bx+c=0的根。
Input
三个用空格隔开的整数a、b、c,分别表示一元二次方程的系数,并保证a不为0。
Output
方程式ax2+bx+c=0的根,若有两个不同的实根,则输出这两个实根,用空格隔开;若有一个实根,请直接输出;若没有实根,请输出“no answer”(请注意不需要输出引号)。所有的实数输出请使用C语言的默认舍入方式保留4位小数,注意行尾输出换行。
Examples
Input
8 -25 4
Output
0.1692 2.9558
Solution C
#include<stdio.h> #include<math.h> int main() { int a,b,c; float r1,r2,delt; scanf("%d%d%d",&a,&b,&c); if(a!=0) { delt=b*b-4*a*c; if(delt>=0) { r1=(-b+sqrt(delt))/(2*a); r2=(-b-sqrt(delt))/(2*a); if(r1==r2) printf("%.4f\n",r1); if(r1!=r2) printf("%.4f %.4f\n",r2,r1); } if(delt<0) printf("no answer\n"); } return 0; }
Solution C++
#include<stdio.h> #include<math.h> int main() { int a,b,c; float m,n,t; scanf("%d %d %d",&a,&b,&c); t=b*b-4*a*c; if(t>0) { m=(-b+sqrt(t))/(2*a); n=(-b-sqrt(t))/(2*a); printf("%.4f %.4f",n,m); } if(t=0) { m=(-b+sqrt(t))/(2*a); printf("%.4f\n",m); } if(t<0) { printf("no answer"); } return 0; }