1.遐想
經(jīng)過快兩個禮拜的努力,校ACM已經(jīng)AC了84題了。我很愛很愛你,84!在今天這個特殊的日子里我愿意為你停留,但是我卻不能一直為你停留,這就是現(xiàn)實,我必須用力奔跑,將來才有勇氣有資格去面對你。接下來我要瘋狂繼續(xù)AC,進(jìn)階人生的地位。恍然間已經(jīng)22歲,已經(jīng) 2 年了。路一直在,人已走遠(yuǎn)!
2.排序?
杭電排序系列
自己按照杭電的這個系列做下來,發(fā)現(xiàn)大都是水題,拿來練信心的。排序有快速排序,歸并排序,堆排序,基數(shù)排序,冒泡排序,選擇排序...總共八大排序。
3.搜索
在校ACM1001上就有用搜索來做題的(校ACM1001)。在hdu1010上,用
剪枝 + 深度優(yōu)先搜索(遞歸實現(xiàn))比較簡單的。
4.c++各種輸入的區(qū)別
輸入操作的原理:程序的輸入都建有一個緩沖區(qū),即輸入緩沖區(qū)。一次輸入過程是這樣的,當(dāng)一次鍵盤輸入結(jié)束時會將輸入的數(shù)據(jù)存入輸入緩沖區(qū),而cin函數(shù)直接從輸入緩沖區(qū)中取數(shù)據(jù)。正因為cin函數(shù)是直接從緩沖區(qū)取數(shù)據(jù)的,所以有時候當(dāng)緩沖區(qū)中有殘留數(shù)據(jù)時,cin函數(shù)會直接取得這些殘留數(shù)據(jù)而不會請求鍵盤輸入。
問題描述一:(分析scanf()和getchar()讀取字符)
scanf()和getchar()函數(shù)是從輸入流緩沖區(qū)中讀取值的,而并非從鍵盤(也就是終端)緩沖區(qū)讀取。
而讀取時遇到回車(n)而結(jié)束的,這個n會一起讀入輸入流緩沖區(qū)的。
問題描述二:(分析scanf()和gets()讀取字符串)
用scanf來讀取一個字符串時,scanf()函數(shù)取數(shù)據(jù)是遇到回車、空格、TAB就會停止。
字符串中是不可以出現(xiàn)空格的,一旦出現(xiàn)空格,后面的數(shù)據(jù)就會舍棄殘留在緩沖區(qū)中。
另外一個函數(shù)是可以接受空格的,那就是gets()。
問題描述三:cin<<
該操作符是根據(jù)后面變量的類型讀取數(shù)據(jù)。
輸入結(jié)束條件:遇到Enter、Space、Tab鍵。
對結(jié)束符的處理:丟棄緩沖區(qū)中使得輸入結(jié)束的結(jié)束符(Enter、Space、Tab) (有爭議= - =)
總結(jié):
第一:要注意不同的函數(shù)是否接受空格符、是否舍棄最后的回車符的問題!
讀取字符時:
scanf()以Space、Enter、Tab結(jié)束一次輸入,不會舍棄最后的回車符(即回車符會殘留在緩沖區(qū)中);
getchar()以Enter結(jié)束輸入,也不會舍棄最后的回車符;
讀取字符串時:
scanf()以Space、Enter、Tab結(jié)束一次輸入
gets()以Enter結(jié)束輸入(空格不結(jié)束),接受空格,會舍棄最后的回車符!
第二:為了避免出現(xiàn)上述問題,必須要清空緩沖區(qū)的殘留數(shù)據(jù),可以用以下的方法解決:
C語言里提供了函數(shù)清空緩沖區(qū),只要在讀數(shù)據(jù)之前先清空緩沖區(qū)就沒問題了!
這個函數(shù)是fflush(stdin)。