一對好伙伴,(getchar,putchar)
getchar:輸入,功能與scanf類似,它會從鍵盤上獲取一個字符, 但是試用范圍單個字符,是scanf的狹義,
putchar:輸出,功能與printf類似,會將gerchar獲取的單個字符輸出,試用范圍同時字符,是printf的狹義,
小練習(密碼的輸入與確定)

當scanf輸入“abc”的時候,其實后面還輸入“\n”而printf獲取“abc”,輸入緩沖區中還剩下“\n"putchar就會獲取“\n" != Y.因而下面回圈自動判定假,”輸入失敗“
for回圈(最常用)
寫法:for(初始化部分; 判斷部分; 調整部分)
上圖:
建議:1.不可以在for回圈里修改回圈變數,(如圖,別再回圈中再改變變數i)
2.建議采用前閉后開區間的寫法,
由于for回圈中初始化部分、判斷部分、調整部分都是可以省略的,就出現了一些奇奇怪怪的for回圈的變種,
for回圈變種


這里筆者不推薦省略,畢竟每個部分都有自己的意義,(其實是因為容易bug),
如果執意省略,判斷部分最重要,不容省略,
for回圈中的break與continue
for中的break會使for回圈結束

for中的continue會使回圈跳過本次回圈,繼續下面的回圈,
do...while()回圈,(用的最少)

大家應該發現了,10=10,應該不符合回圈,但是它還是列印出來了,說明do...while一定會列印一次的,不經常用,
do.....while中的break與continue,
break會跳出if回圈,但是do回圈接著列印,(break只能跳出一層回圈,)

continue:

二分法
二分法實質:縮小區間,用最大值與最小值的均值與所求值作比較,然后選擇用均值+-1來代替最小值或最大值,不斷重復,
試用范圍:資料需要是拍好順序的,從大到小,或者從小到大,
好處:對于處理大量有序資料可以提高效率,
分析:如圖,left表示左面的值,right表示右面的值,mid表示(right與left)的均值,mid=(right+left)/2,
假如從{1,2,3,4,5,6,7,8,9,10}尋找7.,記得我們的實數是int型別,我們加減的是陣列中的下標(從0開始)
mid = (0+9)= 4,(有就是數字5),5<7(mid小于我們要找的數字.),因此left=mid+1=5(也是下標),right不變,
再取mid=(9+5)/2=7,(也就是數字8),8>7,right=7-1=6,
再取mid=(6+5)/2=5, 6<7, left=5+1=6;
再去mid=(6+6)/2=6, 7=7,因此找到了,
加入7 !=7,那就證明沒找到,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340473.html
標籤:其他
