用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);
}
}
求问哪里有问题=-= 不知道怎么改了…… 展开
#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);
}
}
求问哪里有问题=-= 不知道怎么改了…… 展开
4个回答
展开全部
给你重写一个你对照看——
#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;
}
运行样例:
有问题续问。
展开全部
你这代码问题很多。
一、你所有函数都定义了返回值类型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。
一、你所有函数都定义了返回值类型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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
}
希望回答能帮到你,哪里不清楚再问。
#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);
}
}
希望回答能帮到你,哪里不清楚再问。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询