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

2021-07-12 17:42:01 字數 1440 閱讀 7342

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語言編寫的打字母小遊戲,要求有多個字母掉落

去玩金山打字通裡的打字遊戲吧。樓上的你很彪悍呀 o 哇 額 要我說 這方面的還是 金山打字 最強 求c語言編寫的打字母小遊戲,要求有多個字母掉落 10 用bioskey 函式實現 函式名 bioskey 功 能 直接使用bios服務的鍵盤介面 函式原型 int bioskey int cmd 說明 ...

請用c語言編寫程式輸出100 999之間的所有迴文數

對於三位數來說,只要百位和個位相同就是迴文數,根據此思路,寫程式如下 include int main 希望接納。o 努力!include include include void check int i if strcmp p,q 注意strcmp,該函式返回false如果兩個字串相等,true如...

怎樣編求n 的程式,用C語言編寫程式 計算n!

在vc 下面,int和long長度一樣,都是32位的,double雖然是64位的,但是當作整型使用的話長度並不比int長,所以這裡還是使用int。int factorial int n 樓上的最多算到20!就該嗝屁了 正確的階層至少能處理20000!這點要靠大數乘法來做的 long f int n ...