C語言死迴圈,「貪心法」

2021-10-10 01:50:22 字數 387 閱讀 1908

死迴圈問題例項

int i;

int a[n];

for(i = 0; i<=n; i++)

根據編譯軟體的不同,這段**出現的問題也有不同,一般如果出現錯誤,原因如下:

以上這段**,編譯器給變數分配記憶體時變數i的記憶體會在陣列a[n]的後邊,迴圈內給陣列內的變數賦值是從前往後寫入位址的,當i=n時已經寫到編譯器給i分配的那塊位址上了,迴圈有又將這塊位址上的值寫為了0,所以迴圈又重新開始了。就是乙個死迴圈。(n是陣列大小,但是i是從0開始的所以陣列最後乙個值應該是a[n-1])。

如果定義變數時將int i寫在int a[n]後是不是就可以解決這個問題呢?

是的,但是在給陣列內的變數賦值時就會迴圈4次,多了一次,這樣原來申請的記憶體就不夠了,編譯就會出錯。

C語言貪心法

c語言有這樣乙個規則 每乙個符號應該包含盡可能多的字元。也就是說,編譯器將程式分解成符號的方法是,從左到右乙個乙個字元的讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,判斷已經讀入的兩個字串是否可能是乙個符號的組成部分 如果可能,繼續讀入下乙個字元,重複上述判斷,直到讀入的字元組成的字串已不...

貪心法 c語言的規則

在面試的過程中,有很多的考驗對c的認識的情況,有時會被問到有關字元搭配以及運算先後順序的問題,比如a b的值,i i i i的值等類似的,這都屬於c的符號方面的問題,那麼怎樣才能輕而易舉的去認識它呢?c語言有這樣的乙個規則 那就是傳說中的貪心法,規則是這樣定的 每個符號應該包含盡可能多的字元,也就是...

c語言的while死迴圈使用

上星期群裡剛上大一學c語言的朋友問了一道題目,要求是這樣的 迴圈輸入一串數字,當輸入到 1為止,將 1前的所有資料求和並求出平均數,並保留兩位小數 例如 輸入 1,2,3,1 輸出 2.00 輸入 1 輸出 無資料 因為不定數輸入的問題,很顯然對於剛學到if,for,while的大一新生來說有些困難...