C語言乙個小程式的bug疑問 陣列相關 已解決

2022-05-05 01:48:10 字數 1608 閱讀 3239

本例錯誤在於陣列的長度不能是變數.

**如下:

1 #include 2

intmain()

316 }while(n<=0

);17

18//

用來給每個元素賦值

19for(m=0;m)

2029 }while(array[m]<=0

);30}31

32//

33do

3441 }while(x<=0

);42

43//

進行查詢

44for(m=0;m)

4551}52

53//

如果沒有找到,輸出本句

54if(b!=1)55

5859

return0;

60 }

正常執行結果是:

請輸入陣列元素的個數: 6

請輸入元素1的值:

1請輸入元素2的值:

2請輸入元素3的值:

3請輸入元素4的值:

4請輸入元素5的值:

5請輸入元素6的值:

6請輸入你要查詢的值:

5要查詢的是第5個元素.

但是當元素個數是5,且查詢的值是第4個元素的值的時候,結果會出現2個:(經過驗證,目前只發現在這個情況會出現bug)

1 請輸入陣列元素的個數: 5

23 請輸入元素1的值: 1

45 請輸入元素2的值: 2

67 請輸入元素3的值: 3

89 請輸入元素4的值: 4

1011 請輸入元素5的值: 5

1213 請輸入你要查詢的值: 4

1415

要查詢的是第4個元素.

16 要查詢的是第5個元素.

本人初學c,懇請路過的熟手可以幫忙解釋一下是不是我哪兒寫錯了。。。謝謝大家的拔刀相助!

後來我在學習其他章節的時候突然想明白了,正確**如下:

1 #include 2

#define num 5//

用來定義陣列長度

3int

main()

419 }while(array[m]<=0

);20}21

22//

23do

2431 }while(x<=0

);32

33//

進行查詢

34for(m=0;m)

3541}42

43//

如果沒有找到,輸出本句

44if(b!=1)45

4849

return0;

50 }

這樣結果就不會有bug了,原來的**如果輸出結果準確, 純屬運氣........

請輸入元素1的值: 1

請輸入元素2的值:

2請輸入元素3的值:

3請輸入元素4的值:

4請輸入元素5的值:

5請輸入你要查詢的值:

4要查詢的是第4個元素.

C語言乙個微妙的Bug

1 include stdio.h 23 intarray 4 define total elements sizeof array sizeof array 0 56 void main 7執行結果是不列印true。解釋 total element所定義的值是unsigned int型別,因為si...

c 讀檔案的乙個小bug

程式如下 int fd open filename,o rdonly char c read fd,c,1 printf c d atoi c 看上去好像沒什麼問題,但結果卻大大的有問題。例如 建立檔案 echo 1 test.data 執行程式之後列印出來的有時候c是1 有時候卻是是10.神奇吧?...

Firtex的乙個小bug

症狀 索引如有字段無 一 資料,索引過程異常 原因 如該字段有資料,在索引中會生成norm檔案 b.nm檔案,b為索引桶序號,m為字段序號 合併過程中會開啟該檔案,寫入臨時檔案 mid 0 0.nm m為字段序號 由於索引過程中自始至終無資料加入該欄位,索引該 b.nm檔案不存在,開啟失敗導致異常 ...