① c语言,求根公式
你的if语句那的括号有问题
#include<stdio.h>
#include<math.h>
intmain(){
doublea,b,c,d,x1,x2;
scanf("%f%f%f",&a,&b,&c);
if(a==0){
if(b==0){
if(c==0)
printf("该式为恒等式 ");
else
printf("该式不成立,请重新输入a,b,c ");
}else{
x1=c/b;
printf("x1=x2=%f ",x1);
}else
d=b*b-4*a*c;
if(d<0){
d=-d;
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f,虚根 ",x1,x2);
}else{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);
}
return0;
}
② 关于C语言中sqrt函数的运用!求解题!
k是int sqrt()返回的是float 你没有强制类型转换
③ c语言求根这个程序哪里错了
需要包含头文件:
#include <math.h>
在linux 用gcc编译的话需要加参数 -lm
④ C语言表编程:用二分法求一元三次方程的根 要求:又主函数调用求根子函数
二分法的基本思路是:任意两个点x1和x2,判断区间(x1,x2)内有无一个实根,如果f(x1)与f(x2)符号相反,则说明有一实根。接着取(x1,x2)的中点x,检查f(x)和f(x2)是否同号,如果不同号,说明实根在(x,x2)之间,如果同号,在比较(x1,x),这样就将范围缩小一半,然后按上述方法不断的递归调用,直到区间相当小(找出根为止)!
比如用二分法求f(x)=x^3-6x-1=0的实根。
代码如下(已调试):
#include "math.h"
main()
{
float x,x1,x2;
float F(float x,float x1,float x2);
printf("请输入区间[x1,x2]\n");
scanf("%f%f",&x1,&x2);
printf("x=%f\n",F(x,x1,x2));
}
float F(float x,float x1,float x2)
{
float f,f1,f2;
do
{
f1=pow(x1,3)-6*x1-1.0;
f2=pow(x2,3)-6*x2-1.0;
}while(f1*f2>0); //确保输入的x1,x2使得f1,f2符号相反
do
{
x=(x1+x2)/2; //求x1,x2的中点
f=pow(x,3)-6*x-1.0;
if(f1*f>0) //当f与f1符号相同时
{x1=x;f1=f;}
else if(f2*f>0) //当f与f2符号相同时
{x2=x;f2=f;}
}while(fabs(f)>1e-6); //判断条件fabs(f)>1e-6的意思是f的值非常0
return x;
}
输入:1 5
则输出:x=2.528918
输入:-10 10
则输出:x=2.528918
⑤ C语言方程求根问题不懂
这个问题如果要完整地讲还是比较复杂的,简单一点的话你就可以记住浮点数的表示和运算结果都有舍入误差,并不一定是完全精确的。
举个例子,double型的数据,a=0.1,
b=0.6,
c=0.9,
理论上讲disc=0,但如果你不开编译优化的话会算出disc=-5.55e-17,这样原本两个实根就被判定成虚根了。
当然,反过来disc很小(非0)被判定成0也是有可能的。不过不论哪种情况,只有disc<0和disc=0被混淆才是比较严重的问题,因为disc>=0的两种状态即使区分不清楚也总是对应两个实根。
⑥ C语言求根函数是什么
在math.h头文件 sqrt 采纳的意见和我的有区别么 哎
⑦ 简单问题c语言 求根函数,为什么无论输入什么输出的根都一样
sqrt的返回值类型是double型,你输出的时候用%d当然结果是错的了,可以试试类型转换,把最后一个printf语句改成如下:
printf("%d\n",(int)sqrt(n));
⑧ C语言sqrt()的用法
C语言中sqrt函数的使用方法:
C语言中sqrt函数是指的开方运算函数,得到的结果是函数变量(可以是数值,也可以是变量名)的算术平方根。在VC6.0中的math.h头文件的函数原型为doublesqrt(double)。
说明:sqrt系SquareRootCalculations(平方根计算),通过这种运算可以考验CPU的浮点能力。
程序例:
#include
#include
intmain(void)
{
doublex=4.0,result;
result=sqrt(x);//result*result=x
printf(“Thesquarerootof%fis%f ”,x,result);
return0;
}
VC2008后为重载函数,原型为floatsqrt(float),doublesqrt(double),doublelongsqrt(doublelong)
注意没有sqrt(int),但是返回值可以为int。
注意事项:
1.sqrt函数运行的结果是算术平方根,即不能运算出负数值,也不能输出虚数结果。如需要得到算术平方根中的负数值,则应该在sqrt函数前添加负号。
2.sqrt函数的参数必须是非负数值,如果是负数值,则输出会报错,即数值无效;如果参数是未定义的非数字变量,则按回车后也会报错,即变量名有误。
3.sqrt函数的计算精度与C语言设置的精度有关,可以通过设置更改精度。
⑨ C语言一元三次方程求根!
z[0]=z[1]=z[2]=-c/d;
这个是除以b吧
⑩ C语言中sqrt是什么意思有什么用处
C语言中sqrt是求一个数的算术平方根。需要包含头文件math.h。
sqrt(2)= 1.414213