亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 教學--第十二章 函數(一).htm

?? 《白話c++網頁版》是一本用淺顯易懂的并具有點幽默的語調來講述c++的高深的內容
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
      <P>&nbsp;&nbsp; do</P>
      <P>&nbsp;&nbsp; {</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "繼續嗎?(Y/N)";</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; ch;</P>
      <P>&nbsp;&nbsp; }</P>
      <P>&nbsp;&nbsp; while(LowerToUpper(ch) == 'Y');</P>
      <P> </P>
      <P>&nbsp; 功能完全一樣,但看上去更簡潔。請大家進行對比,并理解后面的寫法。</P>
      <P> </P>
      <P>本例中的“小寫轉換大寫”的函數,雖然我們已經成功實現,但我們并沒有將它的聲明放到某個頭文件,所以,如果在別的代碼文件中,想使用這個函數,還是不方便。確實,我們很有必要為這個函數寫一個頭文件,在講完函數后,我們將去做這件事。</P>
      <P>實例二代表了一種函數的使用需求:我們將一些很多代碼都要使用的某個功能,用一個函數實現。這樣,每次需要該功能時,我們只需調用函數即可。這是函數的一個非常重要的功能:代碼重用。通過函數,不僅僅是讓你少敲了很多代碼,而且它讓整個程序易于維護:如果發現一某個功能實現有誤,需要改正或改進,我們現在只需修改實現該功能的函數。如果沒有函數?那將是不可想像的。</P>
      <P> </P>
      <P>但是,只有那些一直要使用到的代碼,才有必要寫成函數嗎?并不是這樣。有些代碼就算我們可能只用一次,但也很有必要寫在函數。請看下例。</P>
      <H5><A name=12.3.2.2>12.3.2.2</A> 使用函數改寫“統計程序”</H5>
      <P><B>實例三:</B>使用函數改寫第十章“<A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.2">可連續使用的統計程序</A>”。</P>
      <P> </P>
      <P>我們先把第十章的例子拷過來(只拷其中的main()函數部分):</P>
      <P> </P>
      <P>int main(int argc, char* argv[])
      <P>{
      <P>&nbsp;&nbsp; float sum,score;
      <P>&nbsp;&nbsp; int num; //num 用于存儲有幾個成績需要統計。
      <P>&nbsp;&nbsp; int i;&nbsp;&nbsp; //i 用于計數
      <P> 
      <P>&nbsp;&nbsp; char c; //用來接收用戶輸入的字母
      <P> 
      <P>  do
      <P>&nbsp;&nbsp; {
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; </B>//初始化:
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum = 0;&nbsp;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = 1;
      <P> 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "====成績統計程序====" &lt;&lt; 
      endl;<BR>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //用戶需事先輸入成績總數:
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "請輸入待統計的成績個數:";
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; num;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "總共需要輸入"&lt;&lt; num 
      &lt;&lt; "個成績(每個成績后請加回車鍵):" &lt;&lt; endl;
      <P> 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( i &lt;= num)
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "請輸入第" 
      &lt;&lt; i &lt;&lt; "個成績:";
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; 
      score;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      sum += 
      score;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //輸出統計結果:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout 
      &lt;&lt; "參加統計的成績數目:" &lt;&lt; num &lt;&lt; endl;<BR>&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "總分為:" &lt;&lt; sum &lt;&lt; 
      endl;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提問是否繼續統計:&nbsp;&nbsp;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt;"是否開始新的統計?(Y/N)?";
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin&nbsp; &gt;&gt; c;
      <P>&nbsp;&nbsp;&nbsp;&nbsp; }
      <P>&nbsp;&nbsp;&nbsp;&nbsp; while( c == 'y' || c == 'Y');
      <P>}
      <P>//---------------------------------------------------------------------------<BR>
      <P>我們將要對這段代碼所作的改進是:將其中完成一次統計功能的代碼,寫入到一個單獨的函數。
      <P> 
      <P>//函數:實現一個學員的成績統計:
      <P>//參數:無
      <P>//返回:無
      <P>void ScoreTotal()
      <P>{
      <P>&nbsp;&nbsp; float sum,score;
      <P>&nbsp;&nbsp; int num; //num 用于存儲有幾個成績需要統計。
      <P>&nbsp;&nbsp; int i; //i 用于計數
      <P> 
      <P>&nbsp;&nbsp; sum = 0;
      <P>&nbsp;&nbsp; i = 1;
      <P> 
      <P>&nbsp;&nbsp; cout &lt;&lt; "====成績統計程序(Ver 3.0)====" &lt;&lt; endl;
      <P>&nbsp;&nbsp; //用戶需事先輸入成績總數:
      <P>&nbsp;&nbsp; cout &lt;&lt; "請輸入待統計的成績個數:";
      <P>&nbsp;&nbsp; cin &gt;&gt; num;
      <P>&nbsp;&nbsp; cout &lt;&lt; "總共需要輸入"&lt;&lt; num &lt;&lt; 
      "個成績(每個成績后請加回車鍵):" &lt;&lt; endl;
      <P> 
      <P>&nbsp;&nbsp; while ( i &lt;= num)
      <P>&nbsp;&nbsp; {
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "請輸入第" &lt;&lt; i &lt;&lt; 
      "個成績:";
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; score;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum += score;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;
      <P>&nbsp;&nbsp; }
      <P> 
      <P>&nbsp;&nbsp; //輸出統計結果:
      <P>&nbsp;&nbsp; cout &lt;&lt; "參加統計的成績數目:" &lt;&lt; num &lt;&lt; endl;
      <P>&nbsp;&nbsp; cout &lt;&lt; "總分為:" &lt;&lt; sum &lt;&lt; endl;
      <P>&nbsp;}
      <P>&nbsp;//---------------------------------------------------------------------------<BR>
      <P>我只是將一些代碼從在原來的位置抽出來,然后放到ScoreTotal()函數體內。接下來,請看原來的main()函數內的代碼變成什么:
      <P> 
      <P>//---------------------------------------------------------------------------
      <P>int main(int argc, char* argv[])
      <P>{
      <P>&nbsp;&nbsp; char c;
      <P>&nbsp;&nbsp;&nbsp;
      <P>&nbsp;&nbsp; do
      <P>&nbsp;&nbsp; {
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //調用函數實現一次統計: 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScoreTotal();
      <P>&nbsp;&nbsp;&nbsp;
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提問是否繼續統計:
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt;"是否開始新的統計?(Y/N)?";
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; 
      c;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
      <P>&nbsp;&nbsp; while(c == 'Y' || c == 'y');&nbsp;
      <P>&nbsp;}
      <P>//---------------------------------------------------------------------------
      <P> 
      <P>看,當實現統計一次的功能的代碼交由ScoreTotal()處理之后,這里的代碼就清晰多了。
      <P> 
      <P>函數的另一重要作用:通過將相對獨立的功能代碼寫成獨立的函數,從而使整體程序增加可讀性,同樣有益于代碼維護。這稱為“模塊化”的編程思想。“模塊化”的思想并不與C++后面提倡的“面向對象”的編程思想相抵觸。而函數正是C,C++中實現“模塊化”的基石。
      <P>實例三的演變過程也向我們展示了一種編寫程序的風格:當一個函數中的代碼看上去很長時,你就應該去檢查這段代碼,看看中間是否有哪些邏輯是可以獨立成另外一個函數?在本例子中,main()函數中套了兩層循環,但這兩種循環相互間沒有多大邏輯上的聯系:內層用于實現一次完整的統計功能,外層則只負責是否需要繼續下一次的統計。所以,把內層循環實現的功能獨立“摘”出去,這是一個非常好的選擇。
      <P>我們閱讀VCL的源代碼時(用Pascal實現),發現盡管VCL是一套龐大的類庫,但其內部實現仍保持了相當好的簡約風格,很少有代碼超過200行的函數。這的確可以作為我們今后編寫軟件的楷模。
      <P>本例的完整請見相關例子文件。其中我還把前例的LowerToUpper()函數也加入使用。
      <P> 
      <H5><A name=12.3.2.3>12.3.2.3</A> 求多種平面形狀的面積</H5>
      <P><B>實例四:</B>寫一程序,實現求長方形,三角形,圓形,梯形的面積,要求各種形狀分別用一個函數處理。
      <P> 
      <P>程序大致的流程是:
      <P>首先提問用戶要求什么形狀態的面積?然后根據用戶的輸入,使用一個switch語句區分處理,分別調用相應的函數。求不同形狀態的面積,需要用戶輸入不同的數據,基于本程序的結構,我們認為將這些操作也封裝到各函數比較合適。
      <P>先請看main()函數如何寫:</P><PRE>int main(int argc, char* argv[])
  {
        char ch;
	do
	{
		cout &lt;&lt; "面積函數" &lt;&lt;endl;
	
		cout 	&lt;&lt; "0、退出 "&lt;&lt; endl //&lt;--沒有分號!用一個cout輸出多行,只是為了省事
			&lt;&lt; "1、長方形" &lt;&lt; endl  
	        		&lt;&lt; "2、三角形" &lt;&lt; endl
			&lt;&lt; "3、圓形" &lt;&lt; endl
	    		&lt;&lt; "4、梯形" &lt;&lt; endl;  //&lt;--有分號
	   
		cin &gt;&gt; ch;
	
		if(ch == '0')
	      		break;
	  
	   	switch(ch)
	   	{
	      		case '1' : AreaOfRect(); break; //長方形
	      		case '2' : AreaOfTriangle(); break; //三解形
	      		case '3' : AreaOfRound(); break; //圓形
	      		case '4' : AreaOfTrape(); break; //梯形
	      
			default :
	         		cout &lt;&lt; "輸入有誤,請在0~4之間選擇。" &lt;&lt; endl;
		}
	}
	while(true);
  }</PRE>
      <P>函數main()的任務很清晰:負責用戶可以連續求面積,這通過一個do...while實現,同時負責讓用戶選擇每次要計算面積的形狀,這通過一個switch實現。而具體的,每一個平面圖形的面積計算,都通過三個自定義的函數來實現。盡管我們還沒有真正實現(編寫)這三個函數,但這并不影響我們對程序整體架構的考慮。
      <P>當我們學會如何編寫函數的時候,我們就必須開始有意識地考慮程序架構的問題。如果說變量,表達式等是程序大廈的沙子,水泥;而語句是磚頭鋼筋的話,那么函數將是墻,棟梁。僅僅學會寫函數是不夠的,還需要學習如何把一個大的程序分劃為不同的功能模塊,然后考慮這些模塊之間的關系,最終又是如何組合為完整系統。
      <P>實例四的目的在于向我們演示:當你寫一個程序時,有時候你不必去考慮一些小函數的具體實現,相反,你就當

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区你懂的| 91视视频在线直接观看在线看网页在线看| 久久精品国内一区二区三区| 韩国一区二区三区| 色婷婷香蕉在线一区二区| 在线播放一区二区三区| 国产精品毛片a∨一区二区三区 | 欧美日韩性生活| 久久久久久久性| 男女性色大片免费观看一区二区| 91视频免费播放| 国产午夜精品一区二区三区视频| 老司机免费视频一区二区| 在线视频国产一区| 亚洲人成精品久久久久久| 国产一区二区三区电影在线观看| 欧美人体做爰大胆视频| 亚洲激情网站免费观看| 不卡一区二区中文字幕| 国产午夜精品久久久久久久| 精品一区二区三区在线观看 | 岛国av在线一区| 精品日韩99亚洲| 青青草精品视频| 欧美日韩aaaaa| 国产精品久久久久9999吃药| 久久精品国产在热久久| 91麻豆精品国产自产在线 | 卡一卡二国产精品| 欧美日韩国产高清一区二区三区| 亚洲人成网站在线| 色综合激情久久| 亚洲精品国产成人久久av盗摄 | 日韩视频免费观看高清完整版 | 另类中文字幕网| 欧美一区二区三区在线| 男人的j进女人的j一区| 日韩免费成人网| 国产伦精品一区二区三区免费迷 | 91尤物视频在线观看| 亚洲视频一区二区在线观看| 91在线无精精品入口| 尤物av一区二区| 在线区一区二视频| 亚洲国产精品尤物yw在线观看| 欧美日韩国产高清一区二区| 日本免费在线视频不卡一不卡二| 91精品婷婷国产综合久久性色| 视频在线观看国产精品| 欧美电影免费观看高清完整版在| 国产一区不卡在线| 亚洲婷婷在线视频| 777a∨成人精品桃花网| 国产自产视频一区二区三区 | 精品久久久久99| 国产suv精品一区二区6| 亚洲图片你懂的| 日韩三级精品电影久久久 | 亚洲视频在线一区二区| 色播五月激情综合网| 亚洲国产视频在线| 精品美女一区二区| 91色九色蝌蚪| 久久精品国产77777蜜臀| 国产欧美精品一区二区色综合| 色综合激情久久| 久久er精品视频| 亚洲免费观看高清完整版在线观看 | 色综合天天做天天爱| 天天亚洲美女在线视频| 久久你懂得1024| 欧美日韩一区二区三区高清| 国产伦精品一区二区三区在线观看| 日韩码欧中文字| 精品国产乱码久久久久久久久| 99久久久无码国产精品| 毛片av一区二区| 亚洲你懂的在线视频| 久久久国产综合精品女国产盗摄| 91福利在线导航| 国产剧情一区二区三区| 午夜精品久久久久久久久久久| 久久久精品日韩欧美| 宅男噜噜噜66一区二区66| 99re免费视频精品全部| 国产一区二区三区免费在线观看| 有坂深雪av一区二区精品| 国产欧美精品国产国产专区 | 日本韩国欧美三级| 国产精品一区在线| 精品一区二区三区在线观看| 亚洲少妇中出一区| 国产人妖乱国产精品人妖| 日韩欧美一二三| 欧美日韩一级二级| 在线看一区二区| 91小视频在线观看| 成人免费av资源| 国产成人夜色高潮福利影视| 奇米色一区二区| 亚洲成av人片在线观看无码| 亚洲欧洲综合另类| 中文字幕一区二区三区不卡在线 | 在线精品国精品国产尤物884a| 国产伦精品一区二区三区免费迷| 麻豆精品久久久| 男男视频亚洲欧美| 日韩激情视频在线观看| 亚洲成av人影院在线观看网| 亚洲国产日韩一级| 一区二区三区四区蜜桃 | 日本一区二区免费在线观看视频| 26uuu另类欧美| 久久综合久久综合九色| 久久综合色一综合色88| 久久美女高清视频 | 日韩精品一区二区三区视频播放 | 欧美日韩免费一区二区三区视频| 色天天综合色天天久久| 色婷婷综合久久久久中文| 色综合久久66| 69堂精品视频| 精品久久久久久久久久久久久久久久久 | 大尺度一区二区| 成人v精品蜜桃久久一区| 丁香婷婷综合网| 成人午夜碰碰视频| 97aⅴ精品视频一二三区| 色就色 综合激情| 欧美男男青年gay1069videost | 波多野结衣欧美| www.久久久久久久久| 91免费观看在线| 欧美三级电影在线看| 在线成人av网站| 26uuu国产在线精品一区二区| 2020日本不卡一区二区视频| 国产欧美日韩卡一| 亚洲一区二区视频| 精品在线播放午夜| 不卡的av电影在线观看| 欧美日韩视频在线第一区 | 亚洲激情综合网| 日本不卡在线视频| 国产精品888| 色婷婷综合久久久| 欧美电影免费观看高清完整版在 | 欧美三区在线视频| 26uuu色噜噜精品一区二区| 中文字幕色av一区二区三区| 亚洲自拍欧美精品| 国产一区二区0| 欧美伊人久久久久久午夜久久久久| 欧美丰满高潮xxxx喷水动漫| 国产亚洲欧美中文| 午夜电影一区二区| 国产一区二区三区黄视频| 91香蕉视频在线| 26uuu亚洲综合色| 亚洲国产精品精华液网站| 国产精品一区一区| 欧美一区二区三区免费在线看| 中文文精品字幕一区二区| 天堂蜜桃一区二区三区 | 日韩一级成人av| 亚洲人123区| 国产精品亚洲一区二区三区妖精| 在线精品国精品国产尤物884a| 26uuu久久天堂性欧美| 午夜久久久影院| 91美女精品福利| 久久久久一区二区三区四区| 偷窥国产亚洲免费视频| 97久久人人超碰| 亚洲国产精品99久久久久久久久| 视频一区在线播放| 欧美视频日韩视频| 日韩毛片视频在线看| 丰满少妇久久久久久久| 日韩欧美高清dvd碟片| 亚洲一区二区欧美日韩 | 成人性生交大片免费看中文| 欧美一级精品在线| 亚洲福利视频一区二区| 色屁屁一区二区| 亚洲视频电影在线| 91香蕉视频在线| 国产精品久久久久毛片软件| 国产精品一级黄| 久久精品一区蜜桃臀影院| 久久66热偷产精品| 日韩欧美电影一二三| 奇米一区二区三区av| 欧美精品高清视频| 亚洲五码中文字幕| 欧美日韩一区二区三区在线| 亚洲一二三区在线观看| 欧洲精品视频在线观看| 亚洲精品成人悠悠色影视| 色先锋资源久久综合|