中易网

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

答案:4  悬赏:80  
解决时间 2021-01-11 07:37
  • 提问者网友:愿为果
  • 2021-01-10 21:38
用C语言求方程的根,用3个函数分别求当大于0、等于0和小于0时的根并输出结果。从主函数中输入abc的值。
最佳答案
  • 二级知识专家网友:一把行者刀
  • 2021-01-10 22:07
#include
#include
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);
}
elseif(b*b-4*a*c>0)
{
one(a,b,c);

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

}
}

希望回答能帮到你,哪里不清楚再问。
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-01-11 00:42
你这代码问题很多。
一、你所有函数都定义了返回值类型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。
  • 2楼网友:大漠
  • 2021-01-11 00:16
#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));//修改处
}
intmain()
{
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;
}
  • 3楼网友:掌灯师
  • 2021-01-10 23:44

给你重写一个你对照看——#include "stdio.h"
#include "math.h"
void zero(float a,float b){
printf("x1 = %f ",-b/2/a);
printf("x2 = %f ",-b/2/a);
}
void one(float a,float b,float d){
printf("x1 = %f ",(-b+d)/2/a);
printf("x2 = %f ",(-b-d)/2/a);
}
void two(float a,float b,float d){
printf("x1 = %f%+fi ",-b/2/a,d/2/a);
printf("x2 = %f%+fi ",-b/2/a,-d/2/a);
}
int main(int argc,char *argv[]){
float a,b,c,dlt;
printf("Input a, b, c(R: all)... ");
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;
}
运行样例:

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