c语言求高手帮忙找一下错!!!

2024-12-16 23:22:00
推荐回答(5个)
回答1:

#include
#include
float x1,x2,disc,p,q;
void greater_than_zero(float a,float b)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}

void equal_to_zero(float a,float b)
{
x1=x2=(-b)/(2*a);
}

void smaller_than_zero(float a,float b)
{
p=(-b)/2*a;
q=sqrt(disc)/(2*a);
}

void main()
{
float a,b,c;
printf("\n请输入a,b,c,的值:");
scanf("%f %f %f",&a,&b,&c);
printf("方程是%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
disc=b*b-4*a*c;
printf("方程的解是:\n");
if(disc>0)
{
greater_than_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc==0)
{
equal_to_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
}
楼上的别误导人了,楼主的错误是他根本不熟悉编程语言,C++对C是向下兼容的,除了个别地方有些差异,总体来说C的语法C++可以全部接受

要和LZ强调的是

每个函数定义的时候最好都有一个返回值,如果没有的话也使用void

再就是每个函数的参数声明不是写在函数名下面,而是写在函数名右边的括号里

再一个就是函数变量最好不要用全局的 一开始就定义那么多全局变量不太好

再再一个是 你使用什么功能就要引入相应的头文件,比如你使用了开平方的功能,那个sqrt是math.h库里的函数,所以也要引入相应的头文件

回答2:

看提示是因为你写的语法是c语言的,但你文件后缀为cpp,编译器把这样的程序当c++程序编译,因此有错,因为在c++中,函数不允许定义为:
greater_than_zero(a,b)
而应该写:
greater_than_zero( float a, float b)
其实就是c,现在也多这样写。
你可以把文件名改为.c再试

回答3:

修改了一下,你试试:
#include
#include
#include

float x1,x2,disc,p,q;

void greater_than_zero(float a, float b)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
return;
}

void equal_to_zero(float a, float b)
{
x1=x2=(-b)/(2*a);
return;
}

void smaller_than_zero(float a, float b)
{
p=(-b)/2*a;
q=sqrt(disc)/(2*a);
return;
}

int main()
{
float a,b,c;
printf("\n请输入a,b,c,的值:");
scanf("%f %f %f",&a,&b,&c);
printf("方程是%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
disc=b*b-4*a*c;
printf("方程的解是:\n");
if(disc>0)
{
greater_than_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc==0)
{
equal_to_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
return 0;
}

回答4:

二楼的,你说别人误导人,明明是你瞎说, 你若说的对,你为什么要把函数改成greater_than( float a, float b)
不是c++兼容c吗?
你能说别人什么地方说错了吗?

回答5:

c始终不是c++,当然要修改了