看板 TransCSI 關於我們 聯絡資訊
我只會解第1題...RSA期待其他高手解答 ※ 引述《tool11 (:))》之銘言: : 1. : In the following C code, : int foo(char * A , char * B){ : if (*A == '\0' || *B == '\0') return 0; : else if (*A == *B) return 1 + foo(A+1, B+1); : else return max(foo(A+1,B), foo(A,B+1)); : } : the function int max(int, int) returns the maximun value of its arguments. : Please answer the result of foo("abbacabc", "bbcaaca") by tracing the : execution. : 這題是完全看不懂在做什麼 要會這題必須先瞭解動態字元陣列跟指標 在這裡一開始先設定兩塊連續記憶體空間存放"abbacabc"跟"bbcaaca" 然後由A指向"abbacabc"的字首'a',B指向"bbcaaca"的'b' 程式會做的事情就是對照A跟B所指向的記憶體內容,並且如果 1. A或B內容為'\0',表示為字元陣列的結尾(為什麼?請去翻書),回傳0 2. A跟B內容相等,表示是同一個字,AB兩指標都加一指向下一個記憶體空間,就是指向 下一個字,並將其foo函式的回傳+1後回傳 3. 其他情況,就AB內容不相等,則將foo(A+1,B)跟foo(A,B+1)最大的回傳 這是一個遞迴函式,做啥用的實在看不出來 總之RJ牌人腦compiler的答案是5...應該沒錯 Ivor Horton's Begining Visual C++ 2005(中文:碁峰"Visual C++ 2005 教學手冊") 對動態陣列、字元陣列與指標會有詳盡說明與練習,建議可以找一本來看 那本書的最新版就是把2005改成2008而已 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.92.133