用C解出简单的方程

第一种就是一元一次方程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<stdio.h>
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<stdio.h>
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<stdio.h>
#include<math.h>        //引入数学函数
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解决。我刚开始就直接将公式抄进代码,但发现出错了。于是我对这个问题进行了深入的研究,并发表了这篇文章来进行总结。

                            

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值