您的位置:

二分法c语言for循环,c语言中二分法的使用方法

本文目录一览:

  • 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;

}

}

}