【例2.1】求1×2×3×4×5。
最原始方法:
步驟1:先求1×2,得到結(jié)果2。
步驟2:將步驟1得到的乘積2乘以3,得到結(jié)果6。
步驟3:將6再乘以4,得24。
步驟4:將24再乘以5,得120。
這樣的算法雖然正確,但太繁。
改進(jìn)的算法:
S1: 使t=1
S2: 使i=2
S3: 使t×i, 乘積仍然放在在變量t中,可表示為t×i→t
S4: 使i的值+1,即i+1→i
S5: 如果i≤5, 返回重新執(zhí)行步驟S3以及其后的S4和S5;否則,算法結(jié)束。
如果計(jì)算100!只需將S5:若i≤5改成i≤100即可。
如果該求1×3×5×7×9×11,算法也只需做很少的改動(dòng):
S1: 1→t
S2: 3→i
S3: t×i→t
S4: i+2→t
S5:若i≤11, 返回S3,否則,結(jié)束。
該算法不僅正確,而且是計(jì)算機(jī)較好的算法,因?yàn)橛?jì)算機(jī)是高速運(yùn)算的自動(dòng)機(jī)器,實(shí)現(xiàn)循環(huán)輕而易舉。
思考:若將 S5寫(xiě)成:S5:若i<11, 返回S3;否則,結(jié)束。
【例2.2】有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者打印出來(lái)。如果,n表示學(xué)生學(xué)號(hào),n
i表示第個(gè)學(xué)生學(xué)號(hào);g表示學(xué)生成績(jī),g
i表示第個(gè)學(xué)生成績(jī);則算法可表示如下:
S1: 1→i
S2: 如果g
i≥80,則打印n
i和g
i,否則不打印
S3: i+1→i
S4:若i≤50, 返回S2,否則,結(jié)束。
【例2.3】判定2000 — 2500年中的每一年是否閏年,將結(jié)果輸出。潤(rùn)年的條件:
- 能被4整除,但不能被100整除的年份;
- 能被100整除,又能被400整除的年份;
設(shè)y為被檢測(cè)的年份,則算法可表示如下:
S1: 2000→y
S2:若y不能被4整除,則輸出y“不是閏年”,然后轉(zhuǎn)到S6
S3:若y能被4整除,不能被100整除,則輸出y“是閏年”,然后轉(zhuǎn)到S6
S4:若y能被100整除,又能被400整除,輸出y“是閏年” 否則輸出y“不是閏年”,然后轉(zhuǎn)到S6
S5:輸出y“不是閏年”。
S6:y+1→y
S7:當(dāng)y≤2500時(shí), 返回S2繼續(xù)執(zhí)行,否則,結(jié)束。
深圳北大青鳥(niǎo)嘉華校區(qū)