#include<stdio.h> #include<math.h> int root(); main() { int s; float t1,t2,t3; double *p1,*p2,j1,j2; p1=&j1; p2=&j2; printf("请输入一元二次方程的3个系数(空格隔开回车结束)"); scanf("%f%f%f",&t1,&t2,&t3); s=root(t1,t2,t3,p1,p2); if(s==0) printf("该一元二次方程无解!\n"); else if(s==1) { printf("该一元二次方程有两个相同的解!\n"); printf("两个相同的解为p1=p2=%f\n",*p1); } else if(s==2) { printf("该一元二次多项式有两个不同的解!\n"); printf("方程的解为p1=%f\n",*p1); printf("方程的解为p2=%f\n",*p2); }
} root(float a ,float b,float c,double *x1,double *x2) { if(b*b-4*a*c>=0&&a!=0) { *x1=(-b+sqrt(b*b-4*a*c))/(2*a); *x2=(-b-sqrt(b*b-4*a*c))/(2*a); return(2); } else if(b*b-4*a*c>=0&&a==0) { *x1=-c/b; *x2=-c/b; return(1); } else return(0); }
就是得不出结果 不知道是哪里错了
----------------解决方案--------------------------------------------------------
/* Note:Your choice is C IDE */ #include<stdio.h> #include<math.h> int root(); main() { int s; int t1,t2,t3; float *p1,*p2,j1,j2; p1=&j1; p2=&j2; printf("请输入一元二次方程的3个系数(空格隔开回车结束)"); scanf("%d%ld%d",&t1,&t2,&t3); s=root(t1,t2,t3,p1,p2); if(s==0) printf("该一元二次方程无解!\n"); else if(s==1) { printf("该一元二次方程有两个相同的解!\n"); printf("两个相同的解为p1=p2=%f\n",*p1); } else if(s==2) { printf("该一元二次多项式有两个不同的解!\n"); printf("方程的解为p1=%f\n",*p1); printf("方程的解为p2=%f\n",*p2); }
} root(int a ,int b,int c,float *x1,float *x2) { if(b*b-4*a*c>=0&&a!=0) { *x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a); *x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a); return(2); } else if(b*b-4*a*c>=0&&a!=0) { *x1=(float)-b/2*a; *x2=(float)-b/2*a; return(1); } else return(0); }
还有一些情况懒得加了,现在运行没问题了,错在数据类型不符合
----------------解决方案--------------------------------------------------------