本文目录一览:
- 1、C语言 二分法查找问题
- 2、c语言二分法程序如下,结果好像没问题,但提交系统总是说超时!谁能帮着修改一下,谢谢。
- 3、c语言二分法怎么用,求例子!!
- 4、求用c语言编写一个函数二分法求根的算法
C语言 二分法查找问题
#include
stdio.h
void
main()
{
float
x0,x1,x2,fx0,fx1,fx2;
do{
printf("enter
x1
x2:");
scanf("%f,%f",x1,x2);
fx1=(x1*(2*x1-4)+3)*x1-6;
fx2=(x2*(2*x2-4)+3)*x2-6;
}while(fx1*fx20);
/*如果f(x1),f(x2)同号,则在[x1,x2]区间无实根,重新输入x1,x2
*/
do{
x0=(x1+x2)/2;
/*求x1和x2间的中点:x0=(x1+x2)/2
*/
fx0=(x0*(2*x0-4)+3)*x0-6;
if((fx0*fx1)0){ /*如f(x0)与f(x1)不同号,把x0赋给x2,把f(x0)赋给f(x2)*/
x2=x0;
fx2=fx0;
}
else{ /*否则,把x0赋给x1,f(x0)赋给f(x1)*/
x1=x0;
fx1=fx0;
}
}while(fabs(fx0)=1e-5);/*判断f(x0)的绝对值是否小于某一个指定的值(如10的负5次方)*/
printf("x=%6.3f\n",x0);
/*输出x0*/
}
c语言二分法程序如下,结果好像没问题,但提交系统总是说超时!谁能帮着修改一下,谢谢。
我看了一下,好像你的算法思路不怎么对,我把排序和二分法查找给出
for(j=0;j=n-2;j++)
for(i=j+1;i=n-2;i++)
{
if(a[i]a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
} //排序结束 其实排序很多种方法,我喜欢这种
l=n-1;//l代表末标,s代表首标
s=0;
if(ma[s]||ma[l])
printf("不在这个区间\n1");
else
{
while(l!=s)
{
mid=(l-s)/2;
if(m==a[mid])
{
printf("第%d个数是\n",mid+1);
break;
}
if((l-s)==1m!=a[l]m!=a[s])
{
printf("没有符合的\n");
break;
}
if(ma[mid]) //在后面一半中
s=mid;
else // 在前面一半中
l=mid;
}
}
c语言二分法怎么用,求例子!!
二分法查找还是二分法求方程式解
#includestdio.h
#include math.h
float f( float a )
{
return a*a*a + a - 1;
}
float jie( float a, float b )
{
/* x*x*x + x -1 = 0; */
float m = (a+b)/2;
printf( "a=%f,b=%f\n", a, b);
printf( "fm=%f, fa=%f, fb=%f\n", f(m), f(a), f(b) );
if ( f(a)*f(b) 0 )
{
printf( "起始区间不正确\n" );
return m;
}
if ( fabs(f(m)) 0.0001 )
return m;
if ( f(m)*f(a) 0 )
return jie( m, b );
else
return jie( a, m );
}
int main()
{
float a, b, x;
printf( "输入起始区间: " );
scanf( "%f %f", a, b );
x = jie( a, b );
printf( "x^3+x-1=0; x= %.3f\n", x );
}
求用c语言编写一个函数二分法求根的算法
二分法计算函数f(x)=x*x*x*x+2*x*x*x-x-1;
本程序在turbo c或c++下编译
#include "stdio.h"
#include math.h
float f(float x)
{float y;
y=x*x*x*x+2*x*x*x-x-1;
return y;
}
void main()
{float a=0,b=0,h,y,x;
int k,n0;
printf("please input qujian a and b");
scanf("%f%f%d",a,b,n0); /*输入含根区间a,b,循环次数n0 */
for(k=0;k=n0;k++)
{ x=(a+b)/2;
h=(b-a)/2;
y=f(x);
if(h10e-6||fabs(y)10e-6)
{ printf("k=%d,x=%f,y=%f",k,x,y);
break; } /*输出分半次数k,函数的根x,及x对应的函数值.*/
else
{if(f(a)*f(x)0)
b=x;
else a=x;
}
}
}