W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)然,有時(shí)候你也想修改其中一個(gè)參數(shù)值。修改參數(shù)值的函數(shù)稱(chēng)為修改函數(shù)。
舉個(gè)修改函數(shù)的例子:考慮這樣一個(gè)函數(shù)increment,它給一個(gè)Time對(duì)象加上一定的秒數(shù)。此函數(shù)的草案代碼如下:
void increment (Time& time, double secs) {
time.second += secs;
if (time.second >= 60.0) {
time.second -= 60.0;
time.minute += 1;
}
if (time.minute >= 60) {
time.minute -= 60;
time.hour += 1;
}
}
第一行執(zhí)行一條基本操作,余下代碼處理特殊情況,我們以前也見(jiàn)過(guò)。
這個(gè)函數(shù)是正確的嗎?如果參數(shù)secs的值比60大得多,會(huì)發(fā)生什么情況?那樣的話,只減一次60是不夠的;我們必須一直減下去,知道second的值小于60。我們可以用while語(yǔ)句替代if語(yǔ)句來(lái)實(shí)現(xiàn)之:
void increment (Time& time, double secs) {
time.second += secs;
while (time.second >= 60.0) {
time.second -= 60.0;
time.minute += 1;
}
while (time.minute >= 60) {
time.minute -= 60;
time.hour += 1;
}
}
這種解決方案是正確的,但是不夠高效。你能想到一個(gè)不需要迭代的解決方案嗎?
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: