用C语言求方程的根,用3个函数分别求当大于0、等于0和小于0时的根并输出结果。从主函数中输入abc的值。

#include<stdio.h>#include<math.h>floatzero(floata,floatb){floatx1,x2;x1=(-b)/(2*a);x2... #include <stdio.h>
#include <math.h>
float zero(float a,float b)
{
float x1,x2;
x1=(-b)/(2*a);
x2=(-b)/(2*a);
}
float one(float a,float b,float c)
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b+4*a*c))/(2*a);
}
float two(float a,float b,float c)
{
int x;
float x1,x2,p,q,i;
p=b\(2*a);
q=sqrt(-(b*b-4*a*c));
x=0;
}
void main()
{
float zero(float,float);
float one(float,float,float);
float two(float,float,float);
int a,b,c,x1,x2;
scanf("%f,%f,%f",&a,&b,&c);
if(b*b-4*a*c==0)
{
zero(a,b);
printf("%f,%f",x1,x2);
}
else if(b*b-4*a*c>0)
{
one(a,b,c);
printf("%f,%f",x1,x2);
}
else
{
two(a,b,c);
printf("%f,%f",x1,x2);
}
}
求问哪里有问题=-= 不知道怎么改了……
展开
 我来答
White_MouseYBZ
2018-03-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6712万
展开全部

给你重写一个你对照看——

#include "stdio.h"
#include "math.h"
void zero(float a,float b){
printf("x1 = %f\n",-b/2/a);
printf("x2 = %f\n",-b/2/a);
}
void one(float a,float b,float d){
printf("x1 = %f\n",(-b+d)/2/a);
printf("x2 = %f\n",(-b-d)/2/a);
}
void two(float a,float b,float d){
printf("x1 = %f%+fi\n",-b/2/a,d/2/a);
printf("x2 = %f%+fi\n",-b/2/a,-d/2/a);
}
int main(int argc,char *argv[]){
float a,b,c,dlt;
printf("Input a, b, c(R: all)...\n");
scanf("%f%f%f",&a,&b,&c);
if((dlt=b*b-4*a*c)==0)
zero(a,b);
else if(dlt>0){
one(a,b,sqrt(dlt));
}
else
two(a,b,sqrt(-dlt));
return 0;
}

运行样例:

有问题续问。

自我编程
2018-03-21 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部
你这代码问题很多。
一、你所有函数都定义了返回值类型float,但是函数结束都没有return。如果你函数结束想要的是x1 x2的值,要么直接定义x1x2全局变量不用返回值 或者 在函数里将x1x2的值放在数组中做为返回值返回(注意作为返回值的数组不能直接用局部变量,因为内存会自动释放,可以使用malloc申请数组内存)。
二、你的two(float a,float b,float c)函数根本没还给x1,x2值,“p=b\(2*a);”这里除号也写错了。
三、你函数都定义在main函数上面,main函数不需要申明函数。
四、main函数中你定义x1x2是int型,打印用的确是%f(float型),类型不符合。
你看我说的这些,自己再改改。编程最基本的就是debug。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
__winly
2018-03-20
知道答主
回答量:18
采纳率:0%
帮助的人:2.9万
展开全部
#include <stdio.h>
#include <math.h>
float zero(float a,float b)
{
float x1,x2;
x1=(-b)/(2*a);
x2=(-b)/(2*a);
}

float one(float a,float b,float c)
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b+4*a*c))/(2*a);
}

float two(float a,float b,float c)
{
int x;
float p,q;
p=(float)(b/2*a);//修改处
q=sqrt((abs)(b*b-4*a*c));//修改处

}

int main()
{
float zero(float,float);
float one(float,float,float);
float two(float,float,float);
int a,b,c,x1,x2;
scanf("%f,%f,%f",&a,&b,&c);
if(b*b-4*a*c==0)
{
zero(a,b);
printf("%f,%f",x1,x2);
}
else if(b*b-4*a*c>0)
{
one(a,b,c);
printf("%f,%f",x1,x2);
}
else
{
two(a,b,c);
printf("%f,%f",x1,x2);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cd3d6c4
推荐于2016-06-29 · TA获得超过315个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:280万
展开全部
#include <stdio.h>
#include <math.h>
void zero(float a,float b)
{
float x1,x2;
x1=(-b)/(2*a);
x2=(-b)/(2*a);
printf("%f,%f",x1,x2);
}
void one(float a,float b,float c)
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b+4*a*c))/(2*a);
printf("%f,%f",x1,x2);
}
void two(float a,float b,float c)
{
int x;
float x1,x2,p,q,i;
p=b/(2*a);
q=sqrt(-(b*b-4*a*c));
x=0;
printf("%f,%f",x1,x2);
}
void main()
{
void zero(float,float);
void one(float,float,float);
void two(float,float,float);
float a,b,c,x1,x2;
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c==0)
{
zero(a,b);
}
else if(b*b-4*a*c>0)
{
one(a,b,c);

}
else
{
two(a,b,c);

}
}

希望回答能帮到你,哪里不清楚再问。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式