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("沒有這個數"); }**不懂可以問。 如下 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語言的設計目標是提供一種能以簡易... 藍秀楓 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 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 一步一步的寫的,希望...c語言編寫計算ab的程式,用C語言編寫一個程式,求a b的絕對值 的和
用C語言編寫類似計算器的程式,用C語言編寫一個類似計算器的程式
C語言編寫程式求1 1 99 1 100的值