2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  實(shí)驗(yàn)課程名稱 C++面向?qū)ο笳Z言編程 </p><p>  設(shè) 計(jì) 題 目 重載運(yùn)算符編程 </p><p>  專 業(yè) 班 級(jí) </p><p>  面向?qū)ο笳n程設(shè)計(jì)報(bào)告&l

2、t;/p><p><b>  一、設(shè)計(jì)時(shí)間</b></p><p>  2011年6月 13日-----6月17日</p><p><b>  二、設(shè)計(jì)地點(diǎn)</b></p><p>  湖南城市學(xué)院實(shí)驗(yàn)樓計(jì)算機(jī)機(jī)房</p><p><b>  三、設(shè)計(jì)目的</b&

3、gt;</p><p>  1、《面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的必修專業(yè)基礎(chǔ)課程,其實(shí)踐性、應(yīng)用性很強(qiáng)。實(shí)踐教學(xué)環(huán)節(jié)是必不可少的一個(gè)重要環(huán)節(jié)。面向?qū)ο蟪绦蛟O(shè)計(jì)的設(shè)計(jì)目的是加深對(duì)理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌握程序設(shè)計(jì)及其在網(wǎng)絡(luò)開發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學(xué)生綜合運(yùn)用所學(xué)知識(shí),利用軟件工程為基礎(chǔ)進(jìn)行軟件開發(fā)、并在實(shí)踐應(yīng)用方面打下一定基礎(chǔ)。</p><p>  

4、2、要求學(xué)生在設(shè)計(jì)指導(dǎo)教師的幫助下自行完成各個(gè)操作環(huán)節(jié),并能實(shí)現(xiàn)且達(dá)到舉一反三的目的,完成一個(gè)項(xiàng)目解決一類問題。</p><p>  3、要求學(xué)生能夠全面、深入理解和熟練掌握所學(xué)內(nèi)容,并能夠用其分析、設(shè)計(jì)和解答類似問題;對(duì)此能夠較好地理解和掌握,能夠進(jìn)行簡單分析和判斷;能編寫出具有良好風(fēng)格的程序;掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本技能和面向?qū)ο蟮母拍詈头椒ā?lt;/p><p>  4、同時(shí)培養(yǎng)學(xué)生進(jìn)

5、行分析問題、解決問題的能力;培養(yǎng)學(xué)生進(jìn)行設(shè)計(jì)分析、設(shè)計(jì)方法、設(shè)計(jì)操作與測(cè)試、設(shè)計(jì)過程的觀察、理解和歸納能力的提高。</p><p><b>  四、設(shè)計(jì)小組成員</b></p><p><b>  五、指導(dǎo)老師</b></p><p><b>  六、設(shè)計(jì)課題</b></p><p

6、>  一個(gè)日期類Date,包括年、月、日等私有成員。要求實(shí)現(xiàn)日期的基本運(yùn)算,如一日期加上天數(shù),一日期減去天數(shù)、兩日期相差天數(shù)</p><p>  七、基本思路及關(guān)鍵問題的解決方法</p><p><b>  (一)基本思路:</b></p><p>  1:在Date類中設(shè)計(jì)如下重載運(yùn)算符函數(shù): </p><p>

7、  Date operator+(int days); 返回一日期加一天數(shù)得到的日期 </p><p>  Date operator-(int days); 返回一日期減去天數(shù)得到的日期 </p><p>  int operator-(Date &b); 返回兩日期相差的天數(shù) </p><p>  2:在實(shí)現(xiàn)這些重載運(yùn)算符函數(shù)調(diào)用以下私有成員函數(shù): &l

8、t;/p><p>  leap(int); 判斷指定的年份是否為閏年 </p><p>  dton(Date &); 將指定日期轉(zhuǎn)換為從0年0月0日起的天數(shù) </p><p>  ntod(int); 將指定的0年0月0日起的天數(shù)轉(zhuǎn)換為對(duì)應(yīng)的日期</p><p>  3:在main()中,實(shí)現(xiàn)日期的基本運(yùn)算</p><

9、;p> ?。ǘ╆P(guān)鍵問題的解決辦法:</p><p>  1:閏年與非閏年的判斷,以及各月的天數(shù)的獲得問題,解決辦法是設(shè)置并引用二維數(shù)組</p><p>  2:日期基本問題的實(shí)現(xiàn)問題,解決辦法是在Date類中設(shè)計(jì)重載運(yùn)算符函數(shù):Date operator+(int days)、Date operator-(int days)、int operator-(Date &b),同

10、時(shí)調(diào)用以下私有成員函數(shù)leap(int)、dton(Date &)、ntod(int)得以實(shí)現(xiàn)</p><p>  3:如何使輸入的日期有效,如2011 13 34為無效日期,解決辦法是在input()中設(shè)置if(month>12||month<1||day>day_tab[leap(year)][month-1]||year<=0),判斷日期是否為有效日期。</p>

11、<p><b>  八、流程圖</b></p><p><b>  圖 1</b></p><p>  九、調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決辦法</p><p>  1:輸入無效日期時(shí),也能得到運(yùn)算結(jié)果,如輸入0 13 32時(shí),程序沒察覺輸入錯(cuò)誤,細(xì)</p><p>  心檢查發(fā)現(xiàn)if語句

12、編寫錯(cuò)誤,改正后得到正確的結(jié)果;</p><p>  2:重載運(yùn)算符函數(shù)的編寫,如求兩日期相差天數(shù)時(shí),由于編寫錯(cuò)誤,得到錯(cuò)誤的答案,</p><p>  后通過看書,查相關(guān)資料,終于改寫成功。</p><p>  十、課程設(shè)計(jì)心得體會(huì)</p><p>  通過此次課程設(shè)計(jì),不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事

13、情,又如何完成一件事情。讓我發(fā)現(xiàn)了許多自己平時(shí)學(xué)習(xí)的不足和薄弱環(huán)節(jié),同時(shí)也讓我明白到c++的學(xué)習(xí)方法就是“用編程來學(xué)會(huì)編程”,通過看懂例程,然后修改、完善例程、最后自己獨(dú)立編程。在此次課程設(shè)計(jì)過程中,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督,讓我學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。</p><p>  總之,這次課程設(shè)計(jì),考驗(yàn)了我綜合運(yùn)用知識(shí)的能力,真正做到學(xué)以致用,讓我體會(huì)到了編

14、程的樂趣,以后我會(huì)再接再厲,學(xué)得更好。</p><p>  十一、源程序(每句語言要有詳細(xì)解釋)</p><p>  #include<iostream.h> </p><p>  int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, </p><p>  {31,2

15、9,31,30,31,30,31,31,30,31,30,31}}; </p><p>  // day_tab 二維數(shù)組存放各月天數(shù),第一行對(duì)應(yīng)非閏年,第二行對(duì)應(yīng)閏年 </p><p>  class Date </p><p><b>  { </b></p><p>  int year,month,day; &l

16、t;/p><p>  int leap(int); </p><p>  int dton(Date &); </p><p>  Date ntod(int); </p><p><b>  public: </b></p><p><b>  Date(){}</b>

17、</p><p>  void input()</p><p><b>  {</b></p><p>  cin>>year>>month>>day;</p><p>  while(month>12||month<1||day>day_tab[leap(year)

18、][month-1]||day<=0||year<=0)</p><p><b>  {</b></p><p>  cout<<"invalid date!"<<endl;</p><p>  cout<<"input a date again"<&

19、lt;endl;</p><p>  cin>>year>>month>>day;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Date(int y,int m,int d) </p><

20、p><b>  { </b></p><p>  year=y;month=m;day=d; </p><p><b>  } </b></p><p>  Date operator+(int days) //返回一日期加上天數(shù)得到的日期</p><p><b>  { </

21、b></p><p>  static Date date; </p><p>  int number=dton(*this)+days; </p><p>  date=ntod(number); </p><p>  return date; </p><p><b>  } </b>

22、</p><p>  Date operator-(int days) //返回一日期減去天數(shù)得到的日期</p><p><b>  { </b></p><p>  static Date date; </p><p>  int number=dton(*this); </p><p>  n

23、umber-=days; </p><p>  date=ntod(number); </p><p>  return date; </p><p><b>  } </b></p><p>  int operator-(Date &b) //返回兩日期相差的天數(shù) </p><p>&

24、lt;b>  { </b></p><p>  int days=dton(*this)-dton(b); </p><p>  if(days>=0)</p><p>  return days; </p><p><b>  else</b></p><p>  ret

25、urn -days;</p><p><b>  } </b></p><p>  void disp() </p><p><b>  { </b></p><p>  cout<<year<<"."<<month<<"

26、."<<day<<endl; </p><p><b>  } </b></p><p><b>  }; </b></p><p>  int Date::leap(int year) //判斷指定的年份是否為閏年 </p><p><b>  { &l

27、t;/b></p><p>  if(year%4==0&&year%100!=0||year%400==0) // 是閏年 </p><p>  return 1; </p><p>  else // 不是閏年 </p><p>  return 0; </p><p><b>  

28、} </b></p><p>  int Date::dton(Date &d) // 將指定日期轉(zhuǎn)換為從0年0月0日起的天數(shù)</p><p><b>  { </b></p><p>  int y,m,days=0; </p><p>  for(y=1;y<=d.year;y++) <

29、;/p><p>  if(leap(y)) </p><p>  days+=366; </p><p><b>  else </b></p><p>  days+=365; </p><p>  for(m=0;m<d.month-1;m++) </p><p> 

30、 if(leap(d.year)) </p><p>  days+=day_tab[1][m]; </p><p><b>  else </b></p><p>  days+=day_tab[0][m]; </p><p>  days+=d.day; </p><p>  return d

31、ays; </p><p><b>  } </b></p><p>  Date Date::ntod(int n) //將指定的0年0月0日起的天數(shù)轉(zhuǎn)換為對(duì)應(yīng)的日期</p><p><b>  { </b></p><p>  int y=1,m=1,d,rest=n,lp; </p>

32、;<p><b>  while(1) </b></p><p><b>  { </b></p><p>  if(leap(y)) </p><p><b>  { </b></p><p>  if(rest<=366) </p><

33、;p><b>  break; </b></p><p><b>  else </b></p><p>  rest-=366; </p><p><b>  } </b></p><p><b>  else </b></p>&l

34、t;p><b>  { </b></p><p>  if(rest<=365) </p><p><b>  break; </b></p><p><b>  else </b></p><p>  rest-=365; </p><p>

35、;<b>  } </b></p><p><b>  y++; </b></p><p><b>  } </b></p><p><b>  y--; </b></p><p>  lp=leap(y); </p><p>  

36、while(true) </p><p><b>  { </b></p><p><b>  if(lp) </b></p><p><b>  { </b></p><p>  if(rest>day_tab[1][m-1]) </p><p>

37、;  rest-=day_tab[1][m-1]; </p><p><b>  else </b></p><p><b>  break; </b></p><p><b>  } </b></p><p><b>  else </b></p&

38、gt;<p><b>  { </b></p><p>  if(rest>day_tab[0][m-1]) </p><p>  rest-=day_tab[0][m-1]; </p><p><b>  else </b></p><p><b>  break;

39、</b></p><p><b>  } </b></p><p><b>  m++; </b></p><p><b>  } </b></p><p><b>  d=rest; </b></p><p>  re

40、turn Date(y,m,d); </p><p><b>  } </b></p><p>  void main() </p><p><b>  { </b></p><p>  Date now,then;</p><p><b>  int n; <

41、;/b></p><p>  cout<<"now:"; now.input(); </p><p>  cout<<"then:"; then.input(); </p><p>  cout<<"相差天數(shù):"<<(then-now)<<e

42、ndl; </p><p>  cout<<"please input n:";</p><p><b>  cin>>n;</b></p><p>  Date d1=now+n,d2=now-n;</p><p>  cout<<"now+n:&qu

43、ot;; d1.disp(); </p><p>  cout<<"now-n:"; d2.disp(); </p><p><b>  }</b></p><p><b>  十二、實(shí)驗(yàn)結(jié)果:</b></p><p>  1:日期輸入正確時(shí):</p>

44、<p>  2:日期輸入錯(cuò)誤時(shí):</p><p><b>  參考文獻(xiàn)</b></p><p>  1:[美]Walter Savitch著,周靖譯,C++面向?qū)ο蟪绦蛟O(shè)計(jì)——基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)與編程思想,清華大學(xué)出版社,2004</p><p>  2:陳文宇,張松梅編著,C++語言教程,電子科技大學(xué)出版社,2004</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論