第一种就是一元一次方程ax+b=c,求解x。
ax+b=c;
printf("%lf",x);
我一开始也是这样写,但是最后编译器会出错,我感觉好像是要用具体的数算出未知的数x。而这段代码等号左边既有已知的数又有未知的数,计算机就算不了了。
所以我们只能写成这样:
x=(c-b)/a;
printf("%lf",x);
完整的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{ //已知方程a*x+b=c,求解x
double a, b, c;
scanf("%lf%lf%lf", &a, &b, &c);
double x = (c - b) / a; //使用浮点数防止结果被整除
printf("%lf", x);
return 0;
}
第二种就是二元一次方程组a*x+b*y=m , c*x+d*y=n,求解x和y
也是同样的道理,分别用已知量表示x和y
这里我就不多说了,直接上代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{ //已知方程a*x+b*y=m , c*x+d*y=n
double a, b, c, d, m, n;
scanf("%lf%lf%lf%lf%lf%lf", &a, &b, &c,&d,&m,&n);
double y = (a * n - m * c) / (a * d - b * c);
double x = (m - b * y) / a; //这里可以引入y,因为现在y已知
printf("x=%lf\ny=%lf\n", x, y);
return 0;
}
第三个是一元二次方程a*x^2+b*x+c=0,求x的解
这里要用到我高中所剩不多的知识------求根公式
目前还有一个问题就是怎么开根号?
这里就要用到我们万能的互联网了。总所周知,我们程序员是最擅长学习的了,有不懂的问题就在网上搜索学习。这也是我觉得最困难和最开心的一件事,不停的努力克服困难并战胜它。这种滋味只有自己亲身体会到了才会发现它的魅力所在。
好了,不多废话。就是sqrt()函数,使用时需要引入数学函数。
这里还有一定值得注意,就是一元二次方程有时有无解的情况,需要我们进行讨论。
现在困难解决了,局势已然明朗:
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include //引入数学函数
int main()
{ //已知方程a*x^2+b*x+c=0 , 求解x
double a, b, c,x1,x2;
scanf("%lf%lf%lf", &a, &b, &c);
int deita = b*b - 4 * a * c;
if (deita < 0)
printf("此方程无解");
else
{
x1 = (-b + sqrt(deita)) / (2 * a);
x2 = (-b - sqrt(deita)) / (2 * a);
printf("x1=%lf\nx2=%lf", x1, x2);
}
return 0;
}
这篇文章的起因呢,是我们老师今天给我们一个鸡兔同笼的问题,用C解决。我刚开始就直接将公式抄进代码,但发现出错了。于是我对这个问题进行了深入的研究,并发表了这篇文章来进行总结。