永发信息网

c语言程序纠正

答案:4  悬赏:10  手机版
解决时间 2021-05-11 04:05
  • 提问者网友:山高云阔
  • 2021-05-10 06:30

求一元二次方程的根的情况请耐心的改正我的程序谢谢了

#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,d,t,x1,x2,n,p,q;
float f1(float x,float y,float z);
float f2(float x,float y,float z);
float f3(float x,float y,float m);
printf("please input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
t=b*b-4*a*c;
d=sqrt(t);
if(t>0)
printf("x1 is %f,x2 is %f",f1(a,b,d));
if(t=0)
printf("x is %f",f2(a,b,d));
if(t<0)
printf("p is %f,q is %f",f3(a,b,c));
}
float f1(float x,float y,float z)
{
float x1,x2;
x1=(-y+z)/(2*x);
x2=(-y-z)/(2*x);
return(x1,x2);
}
float f2(float x,float y,float z)
{
float n;
n=(-y+z)/(2*x);
return(n);
}
float f3(float x,float y,float m)
{
float p,q;
q=(0.5*sqrt(-y*y+4*x*m))/x;
p=-0.5*y/x;
return(p,q);
}

摆脱了 帮我改改 明天要检查

最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-05-10 06:45

用传参的方法太麻烦了,用一下的方法可以避免代码重写:


#include<stdio.h>
#include<math.h>
#include<string.h>



void main ()
{
printf ("方程:a㎡+bm+c=0,求其根的情况。\n");
printf("请分别输入系数a和b,c的值:\n");
int a,b,c,D;
int x,x1,x2;
printf("a:\n");
scanf("%d",&a);
printf("b:\n");
scanf("%d",&b);
printf("c:\n");
scanf("%d",&c);
D=(b*b-4*a*c);
if(D>0)
{
printf("该方程有两个实根!\n");
x1=(-b+sqrt(D))/2*a;
x2=(-b-sqrt(D))/2*a;
printf("该方程的解为:x1=%d\nx2=%d\n",x1,x2);
}
if(D==0)
{
printf("该方程有且只有一个实根!\n");
x=-b/(2*a);
printf("该方程的解为:x=%d\n",x);
}
if(D<0)
{
printf("该方程没有实根!\n");
}
}

全部回答
  • 1楼网友:像个废品
  • 2021-05-10 08:52

#include <stdio.h> #include <math.h> float x1,x2,p,q; void main() { float a,b,c,d,t; void f1(float x,float y,float z); float f2(float x,float y,float z); void f3(float x,float y,float m); printf("please input a,b,c:"); scanf("%f%f%f",&a,&b,&c); t=b*b-4*a*c; d=sqrt(t); if(t>0) { f1(a,b,d); printf("x1 is %f,x2 is %f",x1,x2); } if(t==0) printf("x is %f",f2(a,b,d)); if(t<0) { f3(a,b,d); printf("p is %f,q is %f",p,q); } } void f1(float x,float y,float z) { x1=(-y+z)/(2*x); x2=(-y-z)/(2*x); } float f2(float x,float y,float z) { float n=0; n=-y/(2*x); return (n); } void f3(float x,float y,float m) { p=-0.5*y/x; q=(0.5*sqrt(-y*y+4*x*m))/x;

}

就上交这个答案吧!

  • 2楼网友:老鼠爱大米
  • 2021-05-10 08:06

第一:一个函数只能返回一个值。return(x1,x2);错误,虽然通过编译器不报错但也只返第一个值。

第二:printf("x1 is %f,x2 is %f",f1(a,b,d));有两个%f但 只有一个值返回输出。

如何解决返回两个两值?最简单的方法是在主函数前声明一个全局变量float x2. 这时printf("x1 is %f,x2 is %f",f1(a,b,d));可写成printf("x1 is %f,x2 is %f",f1(a,b,d),x2);

第三:注意你的输入格式:scanf("%f,%f,%f",&a,&b,&c); 用逗号隔开即可。

正确代码:

#include<stdio.h> #include<math.h> float x2; void main() { float a,b,c,d,t,x1,n,p,q; float f1(float x,float y,float z); float f2(float x,float y,float z); float f3(float x,float y,float m); printf("please input a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); t=b*b-4*a*c; d=sqrt(t);

if(t>0) {x1=f1(a,b,d); printf("x1 is %f,x2 is %f\n",x1,x2);} if(t=0) printf("x is %f\n",f2(a,b,d)); if(t<0) {x1=f3(a,b,d);printf("p is %f,q is %f\n",x1,x2);} }

float f1(float x,float y,float z) { float x1; x1=(-y+z)/(2*x); x2=(-y-z)/(2*x); return x1; }

float f2(float x,float y,float z) { float n; n=(-y+z)/(2*x); return(n); } float f3(float x,float y,float m) { float p; x2=(0.5*sqrt(-y*y+4*x*m))/x; p=-0.5*y/x; return p; }

不懂请回复 ~ ^ _ ^

  • 3楼网友:酒者煙囻
  • 2021-05-10 07:44

我直接根据你的逻辑改了. 虽然if(t<0)我觉得应该是没有实根. 如果需要修改的话.再追问.

//函数只能返回一个数. 不能返回两个数. 所以你的f1 f3函数要返回的两个值.其中一个可以改成形参传递.

//另外 if(t=0) 改成if(t==0). 因为=是赋值 ==才是判断.

#include<stdio.h> #include<math.h> void main() { float a,b,c,d,t,x1,x2,n,p,q; float f1(float x,float y,float z,float *x2); float f2(float x,float y,float z); float f3(float x,float y,float m,float *q); printf("please input a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); t=b*b-4*a*c; d=sqrt(t); if(t>0) { x1=f1(a,b,d,&x2); printf("x1 is %f,x2 is %f",x1,x2); } if(t==0) printf("x is %f",f2(a,b,d)); if(t<0) { p=f3(a,b,c,&q); printf("p is %f,q is %f",p,q); } } float f1(float x,float y,float z,float *x2) { float x1; x1=(-y+z)/(2*x); *x2=(-y-z)/(2*x); return(x1); } float f2(float x,float y,float z) { float n; n=-y/(2*x); return(n); } float f3(float x,float y,float m,float *q) { float p; *q=(0.5*sqrt(-y*y+4*x*m))/x; p=-0.5*y/x; return(p); }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯