二分法c语言,什么是c十十编程语言

http://www.itjxue.com  2023-01-20 03:00  来源:未知  点击次数: 

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语言中二分法的具体程序是什么呢?

举个例子:

//二分查找法//

#

include

void

main()

{

int

a[16],i,num,flag=0,top,bottom,mid;

//定义一个一维数组a[16]用来存放供查找用的数据,但只用a[1]——a[15]//

//num用来放要查找的数据,flag是表示是否找到的开关变量,top表示查找的起始位置,bottom表示查找的终止位置,mid表示top与bottom的中间位置//

char

goon;

//变量goon为'y'或'Y'时表示继续下一轮查找,否则终止程序//

printf("请输入第1个数字:\n");

scanf("

%d",a[1]);

//依次输入第二到第十五个数,并要求输入的数递减//

for(i=2;i=15;i++)

{

printf("请输入第%d个数字:\n",i);

scanf("

%d",a[i]);

if(a[i]=a[i-1])

{

printf("请再次输入,它应该比上一个数小:\n");

scanf("

%d",a[i]);

}

}

//输出刚才输入的数//

printf("你刚才输入的数是:\n");

for(i=1;i=15;i++)

printf("

%d",a[i]);

printf("\n");

//查找循环开始//

do

{

printf("现在请输入你要查找的数:\n");//输入想要查找的数//

scanf("

%d",num);

top=15;

bottom=1;

mid=15/2+1;

if(numa[1]

||

num

0)//如果在规定的范围内,开始二分法查找//

{

if(num==a[mid])//找到所需数据,退出本层循环//

{

printf("你所要查找的数字是第%d个。\n",mid);

flag=1;

}

else

if(numa[mid])//如果要查找的数据比a[mid]大,在前半数组查找//

{

top=mid+1;

mid=(top+bottom)/2;

}

else

//如果要查找的数据比a[mid]小,在后半数组查找//

{

bottom=mid-1;

mid=(top+bottom)/2;

}

}

if(flag==0)//如果未找到数据,输出找不到的信息//

printf("无法找到你要找的数字!\n");

printf("是否继续查找?(Y/N):\n");//询问是否开始下一轮查找//

scanf("

%c",goon);

}while(goon=='y'

||

goon=='Y');

}

C语言二分法查找

#include stdio.h//不用math头文件

void main()

{int high = 9,low = 0,m,k,a[10]={1,2,3,4,5,6,7,8,9,10};//hing和low赋初值

scanf("%d",k);

while (high=low)//=

{

m=(high+low)/2;

if(ka[m]) high=m-1;//比较的是数值而不是下标

else if(ka[m]) low=m+1;

else

{

printf("yes");

return;//这两句地方放错了

}

}

printf("no");

return;//if语句去掉

}

(责任编辑:IT教学网)

更多

推荐excel文章