當前位置:首頁 » 編程語言 » 二分法c語言程序

二分法c語言程序

發布時間: 2022-06-11 07:40:51

『壹』 c語言!!!二分法

#include<stdio.h>

voidReverse(inta[],intn){
inti,t;
for(i=0;i<=n/2;++i){
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}

intResearch(inta[],intn,intx){
intmid,low=0,high=n-1;
while(low<=high){
mid=(low+high)/2;
if(a[mid]==x)returnmid+1;
if(a[mid]>x)low=mid+1;
elsehigh=mid-1;
}
return0;
}

voidShow(inta[],intn){
inti;
for(i=0;i<n;++i)
printf("%d",a[i]);
printf(" ");
}

intmain(void){
inta[]={1,3,4,7,8,9,11,34,67,100,111,222,333,444};
intindex,x=67,n=sizeof(a)/sizeof(int);
printf("倒序前: ");
Show(a,n);
Reverse(a,n);
printf("倒序後: ");
Show(a,n);
printf("請輸入你要查找的數:");
scanf("%d",&x);
index=Research(a,n,x);
if(index)printf("你找的%d,是數組中的第%d個數。 ",x,index);
elseprintf("對不起,沒有找到整數%d。 ",x);
return0;
}

『貳』 (二分法)C語言程序

1、打開Python開發工具IDLE,新建『search.py』。

『叄』 用C語言編寫二分法解方程程序

#include <stdio.h>
#include <math.h>
float getvalue(float x)
{
return x*x*x+4*x*x-10;
}

void main()
{

float a=1,b=1.5,c;
c=(a+b)/2;
while(fabs(getvalue(c))>0.00001 && fabs(a-b)>0.00001){
if(getvalue(c)*getvalue(b)<0) a=c;
if(getvalue(a)*getvalue(c)<0) b=c;
c=(a+b)/2;
}
printf("%0.3f\n",c);
}

『肆』 C語言中二分法的具體程序是什麼呢知道

#include
<stdio.h>
#include
<math.h>
//int
chashu(int
shu,int
*a);
main()
{
int
chashu(int
shu
,
int
p[11]
);
int
a[11];
int
shu;
int
i;
int
jieguo;
for
(i=1;i<=10;i++)
{printf("請輸入第%d個數\n",i);
scanf("%d",&a[i]);
}
printf("這是你輸入的數\n");
for
(i=1;i<=10;i++)
printf("%d\n",a[i]);
printf("請輸入你要查找的數\n");
scanf("%d",&shu);
jieguo=chashu(shu,a);
if
(
jieguo!=0
)
printf("所查找的數在第%d個\n",jieguo);
else
printf("你所查找的數不存在!!\n");
}
int
chashu(int
shu,
int
p[11])
{int
x1=1;
int
x2=10;
int
x0;
int
t;
t=0;
x0=(x1+x2)/2;
do
{
if
(shu==p[1])
{t=
1;
break;}
else
if
(shu==p[10])
{t=
10;
break;}
else
if
(p[x0]>shu)
{x1=x1;
x2=x0;
t=0;
x0=(x1+x2)/2;
}
else
if
(p[x0]<shu)
{x2=x2;
x1=x0;
t=0;
x0=(x1+x2)/2;
}
else
if
(p[x0]==shu)
{t=x0;
break;}
}
while
(x1<x2
&&
shu
<=p[10]
&&
shu>=p[1]...
#include
<stdio.h>
#include
<math.h>
//int
chashu(int
shu,int
*a);
main()
{
int
chashu(int
shu
,
int
p[11]
);
int
a[11];
int
shu;
int
i;
int
jieguo;
for
(i=1;i<=10;i++)
{printf("請輸入第%d
數\n",i);
scanf("%d",&a[i]);
}
printf("
輸入
數\n");
for
(i=1;i<=10;i++)
printf("%d\n",a[i]);
printf("請輸入
要查找
數\n");
scanf("%d",&shu);
jieguo=chashu(shu,a);
if
(
jieguo!=0
)
printf("所查找

第%d
\n",jieguo);
else
printf("
所查找


\n");
}
int
chashu(int
shu,
int
p[11])
{int
x1=1;
int
x2=10;
int
x0;
int
t;
t=0;
x0=(x1+x2)/2;
do
{
if
(shu==p[1])
{t=
1;
break;}
else
if
(shu==p[10])
{t=
10;
break;}
else
if
(p[x0]>shu)
{x1=x1;
x2=x0;
t=0;
x0=(x1+x2)/2;
}
else
if
(p[x0]<shu)
{x2=x2;
x1=x0;
t=0;
x0=(x1+x2)/2;
}
else
if
(p[x0]==shu)
{t=x0;
break;}
}
while
(x1<x2
&&
shu
<=p[10]
&&
shu>=p[1]);
if
(t
!=0
)
return
t;
else
return
0;
}
展開

『伍』 c語言二分法怎麼用,求例子!!

首先二分法必須讓數列有序,比如說我要在 1 2 3 4 5 6 7 8 9 10中找到5.

#include<stdio.h>

intmain()
{
intlow=0,high=9,m,k,sign=0;
inta[10]=
{
1,2,3,4,5,6,7,8,9,10
};
scanf("%d",&k);
while(high>=low)
{
intm=low+(high-low)/2;
if(a[m]>k)high=m-1;
elseif(a[m]<k)low=m+1;
else
{
printf("yes");
sign=1;
break;
}
}
if(sign==0)printf("no");
return0;
}

『陸』 誰能用c語言幫我寫個二分法的查找程序

#include<stdlib.h>
void
sort(int
a[],int
n){
/*排序函數,要使用二分法查找就必須對數組進行排序*/
int
i,k;
for(i=0;i<n;i++){
int
min=i;
for(k=i+1;k<n;k++)
if(a[min]>a[k])min=k;
if(i!=min){
a[min]+=a[i];/*這里是運用加減法交換兩個數*/
a[i]=a[min]-a[i];
a[min]-=a[i];
}
}
}
int
find(int
a[],int
n,int
key){/*二分法查找;參數:數組名,數組長度,查找關鍵字*/
int
min=0,max=n-1;/*二分法查找頭尾變數*/
while(min<max){/*如果最頭的變數值大於最尾變數的值,則查找不到,查找失敗*/
int
cen
=
(min+max)/2;
if(a[cen]==key)
return
cen;/*如果查到,則返回關鍵字在排序數組的下標*/
if(cen==min
||
cen==max)break;/*如果中間變數等於頭尾任一個變數,同樣查找失敗*/
if(a[cen]>key)
max=cen;
else
min=cen;
}
return
-1;
}
void
main(){/*主程序只是為了證明兩個函數的可行性,可以自己編寫*/
int
a[]={14,10,25,36,87,95,10,12,13,8},i;
sort(a,10);
i=find(a,10,11);
if(i!=-1)
printf("be
found");
else
printf("no
found");
getch();
}

『柒』 c語言二分法編程

題目不全,沒把方程給出來。

『捌』 C語言:二分法

這段代碼是求解方程f(x)=0在區間[-10,10]上的根的數值解。
方法的思想就是:一直選取區間中間的數值,如果發現中間的函數值與一側函數值,異號,那麼說明解在這個更小的區間中,採用eps=1e-5作為區間的極限大小,通過迭代的方法求解這個方程的數值解。

所以了解了上述思想,那麼else if(f(a)*f(c)<0) b=c; 說明的是 f(a)和f(c)異號,那麼使用b=(a+b)/2縮小迭代區間,繼續迭代;同理else a=c;說明f(a)和f(c)同號,那麼使用a(a+b)/2縮小迭代區間,繼續迭代!

『玖』 怎麼用C語言求二分法

二分法查找有一個前提,數據應該是排好序的,假設從小到大排列,則:
首先用中間那個數(也可以不是正中間,差一兩位沒有關系,只要保證不忽略數據就行)與查找值比較,大於查找值就跳到左邊。
然後重新設定新的數列。新的數列為,從最小的數值到中間那個數。
以這個新的數列為基礎,重復以上步驟。

『拾』 C語言:用二分法求方程的根,求具體可用程序;

樓主你好~

提供以下代碼。
Fedora10下gcc4.3.2編譯通過,手動測試通過。。

#include <stdio.h>
#include <math.h>

#define DEFAULT_UPPER (10)
#define DEFAULT_LOWER (-10)
#define DEFAULT_E (0.00000001)

#define _MID(x,y) ((x+y)/2)
#define _VALUE(x) (2*x*x*x-4*x*x+3*x-6)

double _e;

int getRoot(double lower, double upper, double *result);

main()
{
double root;
printf("Enter a deviation:");
scanf("%lf",& _e);
if(_e == 0.0)
_e = DEFAULT_E;
if(getRoot(DEFAULT_LOWER, DEFAULT_UPPER, &root))
printf("Root:%2.8lf\n", root);
else
printf("Root:No Solution.\n");
}

int getRoot(double lower, double upper, double *result)
{
*result = _MID(lower,upper);
if(upper - lower <= _e)
return 1;
if(_VALUE(lower)*_VALUE(*result) <= 0)
return getRoot(lower, *result, result);
else if(_VALUE(*result)*_VALUE(upper) <= 0)
return getRoot(*result, upper, result);
else
return 0;
}

很簡單的遞歸。

不過對於樓主的這道題,還要說一點,提示中的二分法求根,只能適用於在給定函數在給定區間中呈單調連續情況下才行得通哦~我也是按照給定的提示來寫的上述代碼。

如果連續函數在給定區間不單調,很有可能中值*下界值和中值*上界值都大於0,那麼會跳出認為沒有根,而事實上很有可能這個中值點靠近函數極點。

而真正用二分法求給定區間的思路是:
首先為函數求導,算出導函數的零點,然後再判斷零點性質,最後將函數區間分為單調遞增和單調遞減間隔的形式,對每一段進行二分法求根。

請追問~

熱點內容
android設置靜音 發布:2025-02-07 20:11:53 瀏覽:696
bin存儲 發布:2025-02-07 20:00:50 瀏覽:204
android載入界面 發布:2025-02-07 19:55:28 瀏覽:872
好礦雲伺服器 發布:2025-02-07 19:54:31 瀏覽:949
java電話簿 發布:2025-02-07 19:49:26 瀏覽:797
超級腳本製作 發布:2025-02-07 19:31:30 瀏覽:487
怎麼查看支付寶的賬號密碼 發布:2025-02-07 19:26:48 瀏覽:17
惠普伺服器查看ip指令 發布:2025-02-07 19:26:47 瀏覽:435
演算法設計模式 發布:2025-02-07 19:15:52 瀏覽:746
伺服器1u能連接幾台電腦 發布:2025-02-07 18:50:02 瀏覽:154