1中贝、編寫通常接受一個參數(shù)(字符串的地址)囤捻,并打印該字符串的函數(shù)。然而邻寿,如果提供了第二個參數(shù)(int類型)蝎土,且該參數(shù)不為0,則該函數(shù)打印字符串的次數(shù)將為該函數(shù)被調(diào)用的次數(shù)(注意绣否,字符串的打印次數(shù)不等于第二個參數(shù)的值誊涯,而等于函數(shù)被調(diào)用的次數(shù))。是的蒜撮,這是一個非潮┕梗可笑的函數(shù),但它讓您能夠使用本章介紹的一些技術(shù)段磨。在一個簡單的程序中使用該函數(shù)取逾,以演示該函數(shù)是如何工作的。
本題要求編寫一個打印字符串的函數(shù)苹支,但是接受參數(shù)的方式比較奇特砾隅,如果只提供一個字符串地址則打印該字符串,如果提供了第二個int類型參數(shù)則多次债蜜,打印次數(shù)等于被調(diào)用次數(shù)晴埂。所以該函數(shù)首先要包含一個全局靜態(tài)變量,這樣才可以知道每次調(diào)用具體是第幾次調(diào)用寻定,使用static int來解決儒洛。其他的應(yīng)該就都很簡單了。
運行結(jié)果:
2狼速、CandyBar結(jié)構(gòu)包含3個成員琅锻,第一個成員存儲candy bar的品牌名稱;第二個成員存儲candy bar的重量(可能有小數(shù))向胡;第三個成員存儲candy bar的熱量(整數(shù))浅浮。請編寫一個程序,它使用一個這樣的函數(shù)捷枯,即將CandyBar的引用、char指針专执、double和int作為參數(shù)淮捆,并用最后3個值設(shè)置相應(yīng)的結(jié)構(gòu)成員。最后3個參數(shù)的默認(rèn)值分別為“Millennium Munch”、2.85和350攀痊。另外桐腌,該程序還包含一個以CandyBar的引用為參數(shù),并顯示結(jié)構(gòu)內(nèi)容的函數(shù)苟径。請盡可能使用const案站。
運行結(jié)果:
關(guān)于const的問題:void set(CandyBar&candy, const char*p = "Millennium Munch", const double weight = 2.85, const int hot = 350)。函數(shù)原型中對后面三個數(shù)據(jù)用了const棘街。函數(shù)定義時蟆盐,是需要改變CandyBar類型的candy中的三個元素,因此candy前不能加const遭殉。而后面三個默認(rèn)參數(shù)石挂,是可以在函數(shù)調(diào)用時進行覆蓋的。
3险污、 編寫一個函數(shù)痹愚,它接受一個指向string對象的引用作為參數(shù),并將該string對象的內(nèi)容轉(zhuǎn)換為大寫蛔糯,為此可使用表6.4描述的函數(shù)toupper()拯腮。然后編寫一個程序,它通過使用一個循環(huán)讓您能夠用不同的輸入來測試這個函數(shù)蚁飒,該程序的運行情況如下:
Enter a string (q to quit): go away
GO AWAY
Next string (q to quit): good grief!
GOOD GRIEF!
Next string (q to quit): q
Bye.
4动壤、請?zhí)峁┢渲忻枋龅暮瘮?shù)和原型,從而完成該程序飒箭。注意狼电,應(yīng)有兩個show()函數(shù),每個都使用默認(rèn)參數(shù)弦蹂。請盡可能使用const參數(shù)肩碟。set()使用new分配足夠的空間來存儲指定的字符串。這里使用的技術(shù)與設(shè)計和實現(xiàn)類時使用的相似凸椿。(可能還必須修改頭文件的名稱削祈,刪除using編譯指令,這取決于所用的編譯器)脑漫。
5髓抑、編寫模板函數(shù)max5(),它將一個包含5個T類型元素的數(shù)組作為參數(shù)优幸,并返回數(shù)組中最大的元素(由于長度固定吨拍,因此可以在循環(huán)中使用硬編碼,而不必通過參數(shù)來傳遞)网杆。在一個程序中使用該函數(shù)羹饰,將T替換為一個包含5個int值的數(shù)組和一個包含5個double值的數(shù)組伊滋,以測試該函數(shù)。
6队秩、編寫模板函數(shù)maxn()笑旺,它將由一個T類型元素組成的數(shù)組和一個表示數(shù)組元素數(shù)目的整數(shù)作為參數(shù),并返回數(shù)組中的最大的元素馍资。在程序?qū)λM行測試筒主,該程序使用一個包含6個int元素的數(shù)組和一個包含4個double元素的數(shù)組來調(diào)用該函數(shù)。程序還包含一個具體化鸟蟹,它將char指針數(shù)組和數(shù)組中的指針數(shù)量作為參數(shù)乌妙,并返回最長的字符串的地址。如果有多個這樣的字符串戏锹,則返回其中第一個字符串的地址冠胯。使用由5個字符串指針組成的數(shù)組來測試該具體化。
7锦针、 修改程序清單8.14荠察,使其使用兩個名為SumArray()的模板函數(shù)來返回數(shù)組元素的總和,而不是顯示數(shù)組的內(nèi)容奈搜。程序應(yīng)顯示thing的總和以及所有debt的總和悉盆。