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