【例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寫成:S5:若i<11, 返回S3;否則,結束。
【例2.2】有50個學生,要求將他們之中成績在80分以上者打印出來。如果,n表示學生學號,n
i表示第個學生學號;g表示學生成績,g
i表示第個學生成績;則算法可表示如下:
S1: 1→i
S2: 如果g
i≥80,則打印n
i和g
i,否則不打印
S3: i+1→i
S4:若i≤50, 返回S2,否則,結束。
【例2.3】判定2000 — 2500年中的每一年是否閏年,將結果輸出。潤年的條件:
- 能被4整除,但不能被100整除的年份;
- 能被100整除,又能被400整除的年份;
設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繼續執行,否則,結束。
深圳北大青鳥嘉華校區