1 条题解

  • 0
    @ 2025-4-7 21:28:47

    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
    上传者