1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| # include <stdio.h> # include <math.h>
double function1(double a,double b,double c); double function2(double a,double b,double c); int judge(double a); double jdelta(double a,double b,double c);
int main (void) { double a,b,c,delta; printf("一元二次方程计算器:\n"); printf("input a:"); scanf("%lf",&a); printf("input b:"); scanf("%lf",&b); printf("input c:"); scanf("%lf",&c); if ( judge(a) ) { printf("error!"); } else { delta = jdelta(a,b,c); printf("dleta=%f\n",delta); if (delta>0) { printf("方程有两个不等实根:"); function1(a,b,c); } else if (delta==0) { printf("方程有两个相等实根:"); function1(a,b,c); } else { printf("方程有两个复数根:"); function2(a,b,c); } } return 0; }
double function1(double a,double b,double c) { double x1,x2,delta; delta = b*b - 4*a*c; x1 = (-b + sqrt(delta))/(2*a); x2 = (-b - sqrt(delta))/(2*a); printf("x1=%.2lf,",x1); printf("x2=%.2lf\n",x2); return 0; }
double function2(double a,double b,double c) { double x1,x2,delta; delta = -(b*b - 4*a*c); x1 = -(b/(2*a))+sqrt(delta)/(2*a); x2 = -(b/(2*a))-sqrt(delta)/(2*a); printf("x1=%.2lfi,",x1); printf("x2=%.2lfi\n",x2); return 0; }
int judge (double a) { if (a==0) return 1; else return 0; }
double jdelta (double a,double b,double c) { double delta; delta = b*b - 4*a*c; return delta; }
|