用C语言求方程ax2+bx+c=0的根。

自定义函数fun1( )求解b2-4*a*c>0时的情况并输出结果;自定义函数fun2()求解b2-4*a*c=0时的情况并输出结果。从main函数输入a,b,c。
#include<stdio.h>
#include<math.h>
void fun1(int a,int b,int c)
{
?????
}
void fun2(int a,int b,int c)
{
????
}
int main()
int a,b,c,delta;
scanf("%d%d%d",&a,&b,&c);
delta=b*b-4*a*c;
if(delta>0)
fun1(a,b,c);
if(delta==0)
fun2(a,b,c);
return(0);
}
求???处所填。

#include<stdio.h>

#include<math.h>

int main ()

{

double a,b,c,d,p;

printf("请输入a,b,c 的值:"); 

scanf("%lf%lf%lf",&a,&b,&c);

if(a==0)

printf("不是二次方程");

else

{

d=b*b-4*a*c; 

if(d==0)

{

printf("有两个相等的根\nx=%7.2lf\n",-b/(2*a));

}

if (d>0)

printf("有两个不相等的根\nX1=%7.2lf\nX2=%7.2lf\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));

if(d<0) 

{

p=sqrt(-d/(2*a)); 

printf("有两个共轭复根\nX1=%7.2lfi-%7.2lf\nX2=%7.2lfi-%7.2lf\n",p,b/2,-p,b/2);

}

}        

return 0;

}

扩展资料:

scanf函数用法:

scanf("输入控制符",输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-13
//用函数调用求一元二次方程的根
#include <stdio.h>
#include <math.h>
void main()
{
void greater(double a, double b, double c);
void equal(double a, double b,double c);
void little(); //进行函数声明
int a,b,c;
double compare;
scanf("%d %d %d",&a,&b,&c);
compare=b*b-4.0*a*c;
if(compare>0)
greater(a,b,c);
if(compare==0)
equal(a,b,c);
if(compare<0)
little(); //调用函数
}
void greater(double a, double b, double c) //当函数有两个根时调用此函数
{
double x1,x2,compare;
compare=b*b-4*a*c;
x1=(-b+sqrt(compare))/(2.0*a);
x2=(-b-sqrt(compare))/(2.0*a);
printf("this equetion has two root:x1=%.3lf,x2=%.3lf\n",x1+0.0005,x2+0.0005);
}
void equal(double a, double b, double c) //当函数有一个根时调用此函数
{
double x;
x=-b/2.0*a;
printf("this equetion has only one root:x=%.3lf\n",x+0.0005);
}
void little()
{

printf("this equetion hasn't root!\n"); //当函数无根是调用,输出this equetion hasn't root!
}本回答被网友采纳
第2个回答  2012-05-16
第一个地方:
double y1 = (-b + sqrt(b * b - 4 * a * c))/(2 * a);
double y2 = (-b - sqrt(b * b - 4 * a * c))/(2 * a);
printf("x的值为%lf或者%lf",y1,y2);

第二个地方:
double y = (-b)/(2 * a);
printf("x的值为%lf",y);本回答被提问者采纳
第3个回答  2012-05-16
#include <stdio.h>
#include <math.h>

int main()
{
int i, nCase;
scanf("%d", &nCase);
for (i = 1; i <= nCase; i++)
{
int a, b, c, delta;
scanf("%d%d%d", &a, &b, &c);
delta = b * b - 4 * a * c;
printf("Case %d: ", i);
if ((a == 0 && b == 0) || delta < 0) {
printf("NULL\n");
}
else if (a == 0) {
printf("%.2lf\n", - c / (double)b);
}
else if (delta == 0) {
printf("%.2lf\n", - b / (2.0 * a));
}
else {
if (a < 0)
a = -a, b = -b, c = -c;
printf("%.2lf %.2lf\n",
(- b - sqrt(delta)) / (2.0 * a),
(- b + sqrt(delta)) / (2.0 * a));
}
}
return 0;
}
第4个回答  2012-05-16
int x;
x=b*b-4*a*c;

int y;
y=b*b-4*a*c;
你所写的函数是void型,更本就没有返回值。
相似回答