兩道題目:
1. 編寫乙個函式,接受兩個字串指標引數。如果第二個字串被包含在第乙個字串中,函式就返回被包含的字串開始的位址,否則函式返回空指標。
2. 編寫乙個函式,引數為乙個字串,函式刪除字串中的空格。並顯示結果。
分析:第一道題目中顯然得有雙重遍歷,第一重是對第乙個字串依次遍歷;第二重是對針對第一字串中的字元為始,判斷從它開始的連續字串是不是第二個字串。後來自己覺得可將題目再加以修改,即如果第乙個字串中包含有多個第二個字串,則找到每個字串開始的位址。
之所以將這兩道題目放在一起是因為在第二題中同樣要用到與第一道題目相同的思想
即「二重思想
」(私自命名),第一重是從頭到腳遍歷這個字串以找到乙個空格,之後立馬呼叫另乙個函式進行移位操作,就是將空格後的字元依次前移一位,注意此時得將原來最後的乙個字元置為空字元(可通過移位時do
….while)。
/*題目一的參****/
char
*string_in(const char * s1, const char * s2)
/*題目二的參****/
int drop_space(char * s)
while (*pos); }
else
s++; }
} /*自己寫的(題目一)*/
char *string_in(char *string1,char *string2)
string1 ++; }
return null; }
bool ****(char *str1,char *str2)
return true; }
/*自己寫的題目二*/
void deleteblank(char *str)
} void movechar(char *s)
*s = '/0'; }
答案對比:
題目一:
相比之下效率就出來的了,自己寫的那段程式可以說效率是極低的。因為假如輸入的測試字串第乙個的字串長度小於第二個。對於我寫的程式來說,則要依次比較第乙個字串的
中的每乙個字元。而對於參***來說,第一步就已經將其排除了,可見效率的差別了。我這種常規思維寫的程式在acm
練習上是最容易被
w掉的,因為邏輯並不是很嚴密。看來練習
acm的一些題目是顯得比較有必要的了,想想已經有很久沒有練習了。
題目二:
答案乙個
do....while
運用簡直太妙了!不比我的程式,還變了個小函式來進行移位操作,「分而治之」的思維很實用。但有時也得認真考慮其必要性了。曾還一度以為有了while
就已經沒有了
do .....while
的用武之地了!
2009.7.21
GameFramework的初步設計
最近這幾天在搞乙個gameframework,其實就是在引擎基礎上增加乙個遊戲框架,對遊戲進行抽象,對引擎使用的一些封裝。在進行具體設計的時候很多細節問題是值得思考的。總結如下 總的來說我所設計的遊戲框架從功能上來講就是兩件事,乙個是遊戲的狀態管理 什麼選單狀態,遊戲狀態等等 在乙個就是ai管理,又...
初步設計校驗器框架
專案中有一批文十幾種類別,每個檔案有若干列。需要對十幾類檔案做不同型別的校驗。如 非空 非數值 長度等。原來就是一堆方法校驗,後來重構了下,引入了校驗配置檔案 說明 a01是一類檔案,包含若干column,每個column用id標識。每個column可配置 個或多個validator即校驗器,val...
物件導向程式初步設計
結構化程式設計方法又稱面向過程設計方法,結構化程式設計方式產生了結構化程式設計 主要特點是採用自頂向下逐步求解的程式設計方法。有三種基本控制結構構造 1 順序結構 2 選擇結構 3 重複結構 物件唯一性 每個物件都有自身唯一的標識,不同的物件不能有相同的標識 抽象性將具有一致的資料結構 屬性 和行為...