|
5啊哈币
- #include<stdio.h>
- #include<string.h>
- #include <stdlib.h>
- int main(void)
- {
- int a;
- int b;
- int c;
- int delta;
- printf("ax^2+bx+c=0:a=?");
- scanf("%d",&a);
- printf("b=?");
- scanf("%d",&b);
- printf("c=?");
- scanf("%d",&c);
- delta=b*b-4*a*c;
- if (delta<0)
- printf("无实根");
-
- else if (delta==0)
- printf("x1=x2=%d",-b/2*a);
-
- else
- int m,x;
- for (int m = delta; m > 0; m--)
- {
- int x = delta / m / m;
- if (m == 1)
- printf("x1= -%d+√%d ---------- %d ",b,delta,2*a);
- printf("x2= -%d-√%d ---------- %d ",b,delta,2*a);
- break;
- if (delta == m*m*x)
- {
- if (x == 1)//m为整数
- {
- int k,t,v,u,p,q;
- v=-b+m;
- p=-b-m;
- u=2*a;
- q=2*a;
- if (u<v)
- t=u;
- else
- t=v;
- for (int i=t;i>=-abs(t);i--)
- {
- if (i<-abs(v) || i<-abs(u))
- break;
- if (v%i==0 && u%i==0)
- {
- v/=i;
- u/=i;
- i=1;
- }
- }
- if (p<q)
- k=p;
- else
- k=q;
- for (int s=k;s>=-abs(k);s--)
- {
- if (s<-abs(p) || s<-abs(q))
- break;
- if (v%s==0 && u%s==0)
- {
- v/=s;
- u/=s;
- s=1;
- }
- }
- printf("x1=%d ---------- %d ",v,u);
- printf("x2=%d ---------- %d ",p,q);
- break;
- }
- else//delta=m*√x
- {
- int a1,b1,c1,i0,t0;
- a1=2*a;
- b1=-b;
- c1=m;
- if(a1<b1)
- t0=a1;
- else
- t0=b1;
-
- if(t0<c1)
- t0=t0;
- else
- t0=c1;
-
- for(i0=abs(t0);i0>=-abs(t0);i0--){
-
- if (i0<-abs(a1)||i0<-abs(b1)||i0<-abs(b1))
- break;
- if (a1%i0==0 && b1%i0==0 && c1%i0==0)
- {
- a1/=i0;
- b1/=i0;
- b1/=i0;
-
- }
-
- }
- printf("x1=%d+%d√x ---------- %d",b1,c1,a1);
- printf("x2=%d-%d√x ---------- %d",b1,c1,a1);
-
- break;
- }
- }
- }
- return 0;
- }
复制代码 |
|