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

時間 2021-07-12 17:41: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語言程式,實現分數的約分,編寫c語言程式,實現分數的約分

perject 見習魔法師 給的就是啊,不過演算法屬於最基本的。支援 芙瑤凌 經理 四級 提到的輾轉相除法,稍加改動如下 turboc2編譯通過的噢,關於輾轉相除法見參考資料 昨晚提交的程式有個問題啊,不好意思 汗顏 現在就改過來 include include main printf n i n ...

C語言有3 4的矩陣,用c語言編寫程式找出其中值最大的元素,並輸出最大值 最大值所在的行號和列號

言寶 沒出現一次a i j 比max大的情況,用a i j 替換掉max,那麼把所有的數值迴圈一遍後,留下的就是最大的,因為沒有被比它更大的替換掉,所以沒有比max更大的數 小八 max表示最大值 a i j 表示橫下標為i 列下標為j 的二維陣列a 的值假設陣列的值大於max就執行這句max a ...

編寫C語言程式,從已排序的陣列中刪去某數後,該陣列仍然

戶哲茂 include void fun int arr,int n,int dat void main void int i for i 0 i 9 i printf d a i printf r n fun a,9,3 for i 0 i 9 i printf d a i printf r n ...