天天看點

2013級C++第5周(春)項目——用構造函數初始化

  有同學總結:老二說用數組法做給了我思路,真是有兄弟,不孤單。做了這道題才發現以前沒用數組法做的那個判斷第幾天的程式結果存在錯誤。

  我評論:每個人身邊都有一幫子兄弟。靠兄弟,就不用靠老師。兄弟總在身邊,弟兄們一起長大!

  還有,實踐中感受到的,就是真正學習到的。在學習中,隻有将直接的體驗與老師的講解、看過的書交融起來,才能真正将知識成為自己的一部分。

【項目1-三角形類的構造函數】

  設計三角形類,通過增加構造函數,使對象在定義時能夠進行初始化,可以由下面的類聲明開始,需要自己實作相關的成員函數,以及增加要求的構造函數

  本項目将包括多個版本,開始寫程式前,保證搞清楚何為帶參數的構造函數、預設構造函數、有預設參數的構造函數、參數初始化表。

  (1)使用帶參數構造函數,即triangle(double x, double y, double z),三邊長在調用時由實參直接給出。需要的測試函數是:

  (2)設計預設構造函數,即不指定參數時,預設各邊長為1。需要的測試函數是:

  (3)使用有預設參數的構造函數,不給定實參時,預設邊長為1;注意——這個版本也隻需要一個構造函數即可。需要的測試函數是:

  (4)在構造函數中使用參數初始化表對資料成員初始化,這是一種更加提倡的寫法。測試函數同(1)。

【項目1拓展(選做)】

  請自行設計一個矩形類,可以計算矩形的面積、周長、對象線,判斷是否是正方形。請用上類似的構造函數,自己設計main()函數,對設計的類進行測試。

【項目2-分數類的雛形】

  c++中提供了多種基本的資料類型。實際上,這些遠不能滿足我們的需求,如複數(第10章的例子大多是處理虛數的),再如分數。我們可以自定義類支援這些資料類型。

  本任務将設計一個簡單的分數類,完成對分數的幾個運算。一則鞏固基于對象程式設計的方法,二則也為第10章做運算符重載等積累些感性認識。

  分數類的聲明為:

  項目要求:完成分數類的設計,并在main()函數中自行定義對象,調用各成員函數,完成基本的測試。

  實踐政策:(1)不建議一次實作所有成員函數後再調試,而是實作一個,測試一個;(2)本項目的實作及測試順序可以是:先構造函數和輸出output函數(可以先隻實作一種輸出方式),再set函數,再input函數,等等。

  以後我們還将能夠:(1)定義了int i,j,能用cin>>i>>j;在鍵盤上輸入i和j的值。以後,定義了cfraction c1, c2,可以用cin>>c1>>c2;輸入分數,用cout<<c1<<c2;輸出分數。(2)i+j完成兩個整型數的相加,我們可以通過自行定義成員函數,用c1+c2、c1/c2、c1>c2等,實作分數的四則運算、比較、求倒數等。

【項目3-對象數組操作長方柱類】

  編寫基于對象的程式,求5個長方柱的體積和表面積。長方柱類bulk的資料成員包括長(length)、寬(width)、高(heigth)等。

  對照已經給出的代碼,要做的工作及要求有:

需要你定義長方柱類

代碼中已經給出由5個長方柱對象構成的對象數組b;

b數組中的前3個對象b[0]、b[1]、b[2]直接參數初始了,需要定義構造函數,而初始化中,各對象提供的參數數目不同,需要有預設參數的構造函數(未給出的參數預設為1.0)

第4個對象b[3]用預設構造函數初始化;

第5個長方柱b[4]定義時不初始化,設計成員函數get_value,由鍵盤輸入長、寬、高;

設計成員函數output,在main中調用輸出這5個長方柱的體積和表面積;

【項目4-指向學生類的指針】

  設計一個學生類student,資料成員包括學号(num)和成績(score),成員函數根據需要自行設計(建議配備需要的set、get函數,以及必要的輸入或輸出,給出的代碼中也可以找到需要成員函數的線索)。在main函數中,要做到:

建立一個對象數組,通過初始化,設定5個學生的資料,要求:

用指針指向數組首元素,輸出第1、3、5個學生的資訊;

設計一個函數int max(student *arr);,用指向對象的指針作函數參數,在max函數中找出5個學生中成績最高者,并傳回值其學号。

  下面給出部分程式,在此基礎上完成項目:

  

2013級C++第5周(春)項目——用構造函數初始化

<a target="_blank" href="http://book.douban.com/subject/25837646/">豆瓣</a>

==================== 迂者 賀利堅 csdn部落格專欄=================

======== 為it菜鳥起飛鋪跑道,和學生一起享受快樂和激情的大學 =======

    

繼續閱讀