用c语言计算方程2x^2+3x+1=0的根x1,x2 看下哪有错
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/12 16:21:52
用c语言计算方程2x^2+3x+1=0的根x1,x2 看下哪有错
#include
void main()
{
float x1=0,x2=0,x=0;
for(x=-2.0;x
#include
void main()
{
float x1=0,x2=0,x=0;
for(x=-2.0;x
首先呢void main()的写法在VC++下是没问题啦
但是到GCC编译器里就不通过了
最好改成int main()
其实main函数的标准定义应该是int main(int argc,char *argv[])
————————————
上面是闲话
然后下面说说算法的问题
你这个算法里用到的是在区间里步长0.1进行扫描取近似值的方法
先扫描出第一个根x1,然后从x1出发继续扫描x轴上后面的实数
理论上是没有错,但是有点小问题
就是 一个浮点数是不能直接跟0比较大小的
你这个步长是0.1能不能正好算到0姑且不论
就算是这样的语句
float x=0;
程序中(x==0)可能依然为假,因为计算机内部存储数据都是二进制,C里用4个字节来存放浮点数.浮点数精度很高但是也不可能是无限的精度,总得有个误差.
所以一般要比较两个浮点数是否相等,是先定义一个很小的值作为参照.比如:
#define EPSILON 0.00001
然后假设有float a,b需要比较
那么写进if语句是这样
if (abs(a-b)
但是到GCC编译器里就不通过了
最好改成int main()
其实main函数的标准定义应该是int main(int argc,char *argv[])
————————————
上面是闲话
然后下面说说算法的问题
你这个算法里用到的是在区间里步长0.1进行扫描取近似值的方法
先扫描出第一个根x1,然后从x1出发继续扫描x轴上后面的实数
理论上是没有错,但是有点小问题
就是 一个浮点数是不能直接跟0比较大小的
你这个步长是0.1能不能正好算到0姑且不论
就算是这样的语句
float x=0;
程序中(x==0)可能依然为假,因为计算机内部存储数据都是二进制,C里用4个字节来存放浮点数.浮点数精度很高但是也不可能是无限的精度,总得有个误差.
所以一般要比较两个浮点数是否相等,是先定义一个很小的值作为参照.比如:
#define EPSILON 0.00001
然后假设有float a,b需要比较
那么写进if语句是这样
if (abs(a-b)
用c语言计算方程2x^2+3x+1=0的根x1,x2 看下哪有错
方程4x^2-7x-3=0的两根为x1,x2,不解方程求x2/(x1+1)+x1/(x2+1)的值
已知方程2x^2+3x-1=0的两根为x1,x2,不解方程求:(1)1/x1+1/x2,(2)x1+x2
若x1,x2│x1-x2│x2/x1+x1/x2是方程2x²;+5x-3=0的两个根
已知关于x的方程x2-2x+m=0有两个实根x1,x2,计算/x1/+/x2/
若x1和x2是方程x^2+5x-3=0的两根,求值:(1) |x1-x2| (2)1\x1^2+1\x2^2
1方程x^2+4x+3=0的两个根为x1=?,x2=?.x1+x2=?,x1*x2=?.
设方程2X²-3X+1=0的两个根为X1 X2 求:1.X1²+X2²2.X1分之一+X2
设x1.x2是方程2x²-x-3=0的两实根,则x1+x2+x1*x2
设方程x1,x2是方程2x+4x-3=0的两个根,则(x1+1)(x2+1)=_ x
x1 x2是方程2x的平方-3x-1=0的两个根
、已知x1、x2是方程2x2+3x-4=0的两个根,那么:x1+x2=