昨天說完了for迴圈,今天將for再鞏固一下,做個小結
【小結】
關鍵字:for
一般註解:
for語句使用三個表示式控制迴圈流程,分別用分號隔開。初始化(initialize)表示式在執行for之前執行一次;然後對測試(test)表示式求值,值為真就執行一次迴圈,假就不執行;接著對更新(update)表示式求值,並再次檢查測試表示式。for語句是一種入口條件迴圈,即在執行前就決定了是否執行迴圈,因此for迴圈可能一次都不執行。
形式:
for ( initialize; test; update)
statement
示例:
for (n = 5; n < 20; n = n+6)
---------------------------------------------分割線-----------------------------------------
書中在這裡有給出了新的運算子:+=、-=、*=、/=、%=
這些運算子都是由算術運算子和乙個賦值運算子組成的,這麼一說就很明白了,這些運算子可能有算術運算子和賦值運算子的功能。乙個例子就能學會:
x += 1 等價於 x = x + 1
其他幾個同理即可。有一點需要注意的是,右值部分是乙個整體。
書中還有乙個逗號運算子
逗號運算子擴充套件了for迴圈的靈活度,以便在迴圈頭中包含更多的表示式。
/*postage.c -- 郵費*/
#include int main (void)
return 0;
}
程式執行結果如下:
ounces cost
1 $0.46
2 $0.66
14 $3.06
15 $3.26
16 $3.46
(這部落格的編輯器有問題,視窗裡執行結果是對齊的,複製過來就不對齊了)
該程式在初始化表示式中和更新表示式中用到了逗號運算子,使得就大多數的計算都放在了for迴圈頭中進行。
這裡展示了逗號運算子在for迴圈中的使用,其應用並不侷限於這裡(雖然這是它最常用的地方)。
逗號運算子有兩個其他性質:
書上給出了乙個使用for迴圈和逗號運算子解決的古老悖論。。。
傳說希臘有一位哲學家叫zeno,zeno認為箭永遠達不到目標。首先zeno認為箭要達到目標距離的一半,然後再達到剩餘距離的一半,然後繼續到達剩餘距離的一半,然後還繼續到達剩餘距離的一半,就這樣無窮無盡。zeno認為箭的飛行過程有分成無數的部分,所以要花費無數時間來完成這一過程。說實話我有點理解不了,這位哲學家是任何成為哲學家的,表示好奇。
/*zeno.c -- 求序列和*/
#include int main (void)
return 0;
}
輸出結果為:
enter the number of terms you want: 9
time = 1.000000 when terms = 0.
time = 1.500000 when terms = 1.
time = 1.750000 when terms = 2.
time = 1.875000 when terms = 3.
time = 1.937500 when terms = 4.
time = 1.968750 when terms = 5.
time = 1.984375 when terms = 6.
time = 1.992188 when terms = 7.
time = 1.996094 when terms = 8.
time = 1.998047 when terms = 9.
在使用了for迴圈和逗號表示式之後,程式就顯得很簡短了。當然也可以放到語句體之中,憑個人喜好吧。
4月18開始看《C Primer Plus》
好久沒有寫部落格了,之前也說過水平有限,也寫不出什麼技術部落格,只能寫些感悟。過年之後,陸續做了2 3個專案,剛開始可能不太熟悉流程,怎麼和頁面傳資料?最近乙個專案1 2天就寫完 了,真的很簡單,主要改需求 設計太浪費時間,還要花時間測試。接下來版本發布,就不用新任務了。就要靜下心來好好學一學了,學...
c primer plus學習筆記
1.變數名命名規則 重要的 1 有含義 2 只能用字母字元 數字和下劃線 3 第乙個字元不能是數字 4 區分大小寫 5 不能用c 關鍵字 2.整型 1 無符合型別不能表負值 2 char short 16 int short long 32,int 和longlong 64,long c 11 寬度...
C PrimerPlus學習筆記
if語句中判斷恒等,將常量放前,防止由於 寫成 造成的難以查詢的bug。if 0 count 若寫成 0 count 會報錯,count 0 則不會命名空間 using namespace std cout one cout two std cout one std cout two using s...