深入理解電腦系統第二版習題解答CSAPP 2.11

來源:互聯網
上載者:User

標籤:style   blog   color   ar   使用   sp   for   div   問題   

在2.10中的inplace_swap函數的基礎上,你決定寫一段代碼,實現將一個數組中的元素兩端依次對調,你寫出下面這個函數:

 1 void reverse_array(int a[], int cnt) 2 { 3     int first, last; 4     for(first = 0, last = cnt - 1; 5          first <= last; 6          first ++, last --) 7     { 8         inplace_swap(&a[first], &a[last]); 9     }10 }

當對一個數組包含1、2、3、4時,得到預期的結果4、3、2、1。不過,當一個包含元素為1、2、3、4、5的數組使用這個函數時,你會很驚奇看到結果為5、4、0、2、1。對於偶數個元素的數組正常工作,奇數個元素的數組會把中間元素設定為0。

A.對於一個長度為奇數的數組,長度為cnt = 2k + 1,函數reverse_array最後一次迴圈中,變數first和last的值分別是什嗎?

B.為什麼這時調用函數inplace_swap會將數組元素設定為0?

C.對reverse_array的代碼做哪些簡單改動就能消除這個問題?

解答:

A. first和last都為k。

B. 最後一次迴圈時。假設a[k]為p。

步驟 *x *y
初始 a[k]=p a[k]=p
第一步 0 p^p=0
第二步 0 0
第三步 0 0

C. 將第5行代碼改為如下即可。

1 first < last

 

深入理解電腦系統第二版習題解答CSAPP 2.11

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.