-
就是這樣!
#include
int digit(int min,int max,int x);
void main (void)
int max,min,x;
printf("輸入要查詢的數字 x:,");
scanf("%d",&x);
max=9;
min=0;
digit(min,max,x);
scanf( "%d", &x );
int digit(int min,int max,int x)int m=(max+min)/2;
int a[10]=;
if( x> a[m])
digit(m,max,x);
return 0;
if( x < a[m] )
digit(min,m,x);
return 0;
if(x=a[m])
printf("x 是序列中的 %d 個數字",m);
return 0;
分析原因:因為數字迴圈自稱,是不是在棧裡,m變了?
新增除錯資訊後看結果:(不存在“和”後新增返回 0“) 輸入要查詢的數字 x:5
x 是序列中的第 5 個數字。
x < a[m]x 是序列中的第六個數字。
x > a[m]x 是序列中的第四個數字。
識別結果:由於迴圈呼叫本身,堆疊中變數 m 的值發生了幾次變化,所以就用我給你的程式吧!
-
最主要的是if(x=a[m]),if中的值不等於0,所以會引起多個printfs,應該改成。
if(x==a[m])
printf("x 是序列中的 %d 個數字",m);
-
將 return 新增到前兩個 if 塊的方法中
-
在 C 語言中,僅僅因為程式沒有報告錯誤並不意味著它一定是正確的。 有時,程式可能存在邏輯錯誤或執行時錯誤,導致程式無法執行或輸出不符合預期。 以下是程式無法執行的一些常見原因:
1.程式陷入無限迴圈:程式在某處有乙個無限迴圈,使程式無法繼續向下執行。 如果程式似乎沒有結束,您可以檢查程式是否有無限迴圈。
2.記憶體洩漏:當程式使用動態記憶體分配函式(如malloc和calloc)開啟記憶體空間時,沒有及時釋放分配的記憶體空間,導致記憶體洩漏。
記憶體洩漏將導致系統記憶體資源的浪費,並最終導致程式無法繼續執行。
3.陣列越界:當程式訪問陣列元素時,超出了陣列的合法索引範圍,導致程式崩潰或輸出不符合預期。
4.崩潰或異常:程式在執行過程中崩潰或異常,導致程式無法順利執行。 這種情況需要除錯工具來查詢問題並修復它。
以上是導致程式執行失敗的一些常見原因,您可以根據實際情況檢查您的程式是否存在上述問題。 此外,如果您不確定程式出了什麼問題,請考慮使用偵錯程式來幫助您找出問題所在並修復它。
引用月份[12][10]; 錯。 如果沒有元素 month[12][10],最多 month[11][9],指標 p 是無用的。 還有刪除所有 +10 級對應的 *。 >>>More
你好。 知道財富的價值]。
1 新使用者首次登入 20 完成賬號啟用2 成為 20 賞金積分 提問者,或通過投票選出的人,將獲得系統自動給予的系統設定的 20 賞金積分。 >>>More
你說[我不想讓我這樣亂來]你要做的第一件事就是刪除你的心理活動、你的大腦和你的思想本身,作為各種垃圾和干擾。 重新開始,注意,你要正確理解我的話,對你更有利,力量效果會更有回報。 我不是在責罵你,我只是指出你應該對每個人身上所有的好事和壞事做出的確切決定 >>>More