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