【例2-1】求1×2×3×4×5。
最原始方法:
步驟1:先求1×2,得到結果2。
步驟2:將步驟1得到的乘積2乘以3,得到結果6。
步驟3:將6再乘以4,得24。
步驟4:將24再乘以5,得120。
這樣的算法雖然正確,但太繁。
改進的算法:
S1:使t=1
S2:使i=2
S3:使 t×i,乘積仍然放在在變量t中,可表示為 t×i -> t
S4:使i的值+1,即 i+1 -> i
S5:如果i≤5,返回重新執行步驟S3以及其後的S4和S5;否則,算法結束。
如果計算100!只需將“S5:若i≤5”改成“i≤100”即可。
如果改成求1×3×5×7×9×11,算法也只需做很少的改動:
S1:1 -> t
S2:3 -> i
S3:t×i -> t
S4:i+2 -> t
S5:若i≤11,返回S3;否則,結束。
該算法不僅正確,而且是計算機較好的算法,因為計算機是高速運算的自動機器,實現循環輕而易舉。
思考:若將S5寫成:“若i<11,返回S3;否則,結束”會怎樣。
【例2-2】有50個學生,要求將他們之中成績在80分以上者打印出來。如果,n表示學生學號,ni表示第個學生學號;g表示學生成績,gi表示第個學生成績;則算法可表示如下:
S1:1 -> i
S2:如果gi≥80,則打印ni和gi,否則不打印
S3:i+1 -> i
S4:若i≤50,返回S2,否則,結束。
【例2-3】判定2000 ~ 2500年中的每一年是否閏年,將結果輸出。潤年的條件:
設y為被檢測的年份,則算法可表示如下:
S1:2000 -> y
S2:若y不能被4整除,則輸出y“不是閏年”,然後轉到S6
S3:若y能被4整除,不能被100整除,則輸出y“是閏年”,然後轉到S6
S4:若y能被100整除,又能被400整除,輸出y“是閏年” 否則輸出y“不是閏年”,然後轉到S6
S5:輸出y“不是閏年”。
S6:y+1 -> y
S7:當y≤2500時,返回S2繼續執行,否則,結束。