一元二次方程根
如题,编写完之后,结果一直不对,求解,谢谢啦。#include <stdio.h>
#include <math.h>
float x1,x2,k,i,j;
int main ()
{
void f1 ();
void f2 ();
void f3 ();
float a,b,c;
printf ("请输入三个数字,以逗号隔开:\n");
scanf ("%lf,%lf,%lf",&a,&b,&c);
k=b*b-4*a*c;
printf ("方程的根为:\n");
if (k>0)
{
f1 (a,b);
printf("x1=%f\tx2=%f\n", x1,x2);
}
else if (k==0)
{
f2 (a,b);
printf("x1=%f\tx2=%f\n", x1,x2);
}
else
{
f3 (a,b);
printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
}
return 0;
}
void f1 (float x ,float y)
{
x1=(-y+sqrt(k))/(2*x);
x2=(-y-sqrt(k))/(2*x);
}
void f2 (float x ,float y)
{
x1=-y/(2*x);
x2=-y/(2*x);
}
void f3 (float x ,float y)
{
i=-y/(2*x);
j=sqrt(-k)/(2*x);
}
本帖最后由 Krant5 于 2016-7-19 19:01 编辑
#include <stdio.h>
#include <math.h>
float x1,x2,k,i,j;
void f1 (float x ,float y);
void f2 (float x ,float y);
void f3 (float x ,float y);
int main ()
{
float a,b,c;
printf ("请输入三个数字,以逗号隔开:\n");
scanf("%f,%f,%f",&a,&b,&c);
k=b*b-4*a*c;
printf ("方程的根为:\n");
if (k>0)
{
f1 (a,b);
printf("x1=%f\tx2=%f\n", x1,x2);
}
else if (k==0)
{
f2 (a,b);
printf("x1=%f\tx2=%f\n", x1,x2);
}
else
{
f3 (a,b);
printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
}
return 0;
}
void f1 (float x ,float y)
{
x1=(-y+sqrt(k))/(2*x);
x2=(-y-sqrt(k))/(2*x);
}
void f2 (float x ,float y)
{
x1=-y/(2*x);
x2=-y/(2*x);
}
void f3 (float x ,float y)
{
i=-y/(2*x);
j=sqrt(-k)/(2*x);
}
#include <stdio.h>
#include <math.h>
float x1,x2,k,i,j;
void f1 (float x ,float y);
void f2 (float x ,float y);
void f3 (float x ,float y);
int main ()
{
float a,b,c;
printf ("请输入三个数字,以逗号隔开:\n");
scanf ("%f,%f,%f",&a,&b,&c);
k=b*b-4*a*c;
printf ("方程的根为:\n");
if (k>0)
{
f1 (a,b);
printf("x1=%f\tx2=%f\n", x1,x2);
}
else if (k==0)
{
f2 (a,b);
printf("x1=%f\tx2=%f\n", x1,x2);
}
else
{
f3 (a,b);
printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
}
return 0;
}
void f1 (float x ,float y)
{
x1=(-y+sqrt(k))/(2*x);
x2=(-y-sqrt(k))/(2*x);
}
void f2 (float x ,float y)
{
x1=-y/(2*x);
x2=-y/(2*x);
}
void f3 (float x ,float y)
{
i=-y/(2*x);
j=sqrt(-k)/(2*x);
}
关键是scanf后面要用%f而不是%lf 输入时加上小数点。
C:\Users\Administrator\Desktop 疾风。意破天晴 发表于 2016-7-19 22:43
膜拜一下大神啊,谢谢啦 疾风。意破天晴 发表于 2016-7-19 22:42
关键是scanf后面要用%f而不是%lf 输入时加上小数点。
void f1 ();
void f2 ();
void f3 ();
大神,为什么开头我不能在主函数内调用定义无参函数?上一个案例定义空函数,就可以运行了因为换电脑了,文档找不到了,没法提交上来。现在正在学主函数的调用问题。求解,是不是以后都要在主函数内定义调用函数的参数?。 C语言的话:如果你要调用一个函数有两种情况1:是你把函数的声明与定义放在了一个头文件里,就是include""。
2:是你要在main函数前面先声明函数,然后再定义。
反正就是不管怎么样子,一定要在main函数前定义函数,如果你不写参数,那么编译器会默认是int类型参数,如果你不加,那就是默认为一个int类型参数。 疾风。意破天晴 发表于 2016-7-22 17:38
C语言的话:如果你要调用一个函数有两种情况1:是你把函数的声明与定义放在了一个头文件里,就是include" ...
感谢你的热心答复,祝你生活愉快{:7_123:} Krant5 发表于 2016-7-19 18:57
感谢你的热心帮助,真心谢过了,{:5_91:} 学C的路不大好走啊
页:
[1]