C語言程式編寫 在有序的數列中查詢某數,若該數在此數列中,則輸出它所在的位置,否則輸出no found

時間 2021-07-12 17:42:31

1樓:匿名使用者

之前寫過一個程式類似的,你可以用作參考:

題目:試編寫一個程式完成:有15個數按從下到大的順序存放在一個陣列中.輸入一個數,要求折半查詢法找出該數是陣列中第幾個元素的值.如果該數不在陣列中,輸出“不在表。

*****下面是c**,其中陣列沒有設計為錄入,而是固定陣列*****

//輸出的序列是從0開始算的,也就是輸出的是所在陣列的索引

//注意陣列中沒有8

#include

int main()

int a=;

int n,first=0,end=14,mid;

scanf("%d",&n);

while(first<=end)//不要寫成firstmid=(first+end)/2;

if(a[mid]==n)

printf("your input number's index is %d(count from 0)",mid);

break;//忘記break會死迴圈

else if(n>a[mid])

first=mid+1;

else

end=mid-1;

if(first>end)

printf("your number is not in the array");

return 0;

2樓:匿名使用者

採用二分法查詢啊,不知道你說的有序是升序,還是降序~~~針對不同方式,**有些許差距

3樓:匿名使用者

#include

#define n 10

void main()

if(ch=='n')

printf("no found\n");}

4樓:

方法有兩種,一種是順序查詢,一種是折半查詢。

我講後一種吧。在有序數列中可以用折半查詢,就比如說有100個數,從小到大排列,要查詢某一個數的時候,先從第50個數先找,也就是折半,若所找的數比第50數大,就在這100數的右50個數找了,此時就找第(100+50)/2 ,即第75個數找,依次類推直到找到該數為止。下面是程式:

我不知道你的那個有序數列是什麼,先用幾個數字來替代吧#include

main()

;int left=0,right=9,a;

int find;

scanf("%d",&find);

while(leftnum[a])

left=a+1;

else

right=a-1;

}if(left

printf("沒有這個數");

}**不懂可以問。

c語言編寫計算ab的程式,用C語言編寫一個程式,求a b的絕對值 的和

如下 int a 0 int b 0 printf a scanf d a printf n printf b scanf d b printf n printf a b d a b 效果圖 執行結果圖 拓展資料 c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易...

用C語言編寫類似計算器的程式,用C語言編寫一個類似計算器的程式

藍秀楓 note your choice is c ide include stdio.h include stdlib.h include ctype.h int n 0 char record 20 float product float change float muli return sum...

C語言編寫程式求1 1 99 1 100的值

c 1 i 要寫成c 1f i 或者c float 1 i 否則會先按照整數計算,然後再賦值的。用c語言程式設計 求1 1 2 1 3 1 4 1 5 1 6 1 99 1 100 的值 include int main printf lf n sum 輸出結果return 0 一步一步的寫的,希望...