1 条题解
-
0
C :
#include<stdio.h> #include<math.h> void f1(int a,int b,int c); void f2(int a,int b,int c); void f3(int a,int b,int c); int main() { int s; unsigned int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a==0) printf("not a quadratic\n"); s=b*b-4*a*c; if(s>0) f1(a,b,c); else if(s==0) f2(a,b,c); else f3(a,b,c); return 0; } void f1(int a,int b,int c) { double k,x1,x2; k=sqrt(b*b-4*a*c); x1=(-b+k)/(double)(2*a); x2=(-b-k)/(double)(2*a); printf("distinct real roots:%.4lf %.4lf\n",x1,x2); } void f2(int a,int b,int c) { double x; x=-b/(double)(2*a); printf("two equal roots:%.4lf\n",x); } void f3(int a,int b,int c) { double k,x1,x2; k=sqrt(4*a*c-b*b); x1=-b/(double)(2*a); x2=k/(double)(2*a); printf("complex roots:%.4lf+%.4lfi %.4lf-%.4lfi\n",x1,x2,x1,x2); }
C++ :
#include <stdio.h> #include <math.h> int main() { void t1(int a, int b, int c); void t2(int a, int b, int c); void t3(int a, int b, int c); int a, b, c, delta; double ans0, ans1, sqrt_delta, realpart, imagpart; scanf("%d %d %d", &a, &b, &c); /* 计算delta的值(b*b-4*a*c)并分类讨论 */ delta = b * b - 4 * a * c; if (delta > 0) { t1(a, b, c); } else if (delta == 0) { t2(a, b, c); } else { t3(a, b, c); } return 0; } void t1(int a, int b, int c) { int delta; double sqrt_delta, ans0, ans1; delta = b * b - 4 * a * c; sqrt_delta = sqrt(delta); ans0 = (-b - sqrt_delta) / (2.0 * a); ans1 = (-b + sqrt_delta) / (2.0 * a); printf("distinct real roots:%.4f %.4f\n", ans0, ans1); } void t2(int a, int b, int c) { double ans0; ans0 = (-b) / (2.0 * a); printf("two equal roots:%.4f\n", ans0); } void t3(int a, int b, int c) { int delta; double realpart, imagpart; delta = b * b - 4 * a * c; realpart = -b / (2.0 * a); imagpart = sqrt(-delta) / (2.0 * a); printf("complex roots:%.4f+%.4fi %.4f-%.4fi\n", realpart, imagpart, realpart, imagpart); }
Pascal :
var a,b,c:longint; d:double; procedure fa; begin writeln('not a quadratic'); end; procedure fb; begin writeln('two equal roots:',-b/(2*a):0:4); end; procedure fc; begin writeln( 'distinct real roots:', (-b-sqrt(d))/(2*a):0:4 ,' ', (-b+sqrt(d))/(2*a):0:4 ); end; procedure fd; begin writeln( 'complex roots:', (-b)/(2*a):0:4,'+',sqrt(-d)/(2*a):0:4,'i ', (-b)/(2*a):0:4,'-',sqrt(-d)/(2*a):0:4,'i' ); end; begin readln(a,b,c); d:=b*b-4*a*c; if( a<1e-8 ) then fa else if( (d>0) and (d<=1e-8) ) then fb else if( d>1e-8 ) then fc else if(d<0) then fd; end.
- 1
信息
- ID
- 1323
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者