程序設(shè)計與問題求解_第1頁
程序設(shè)計與問題求解_第2頁
程序設(shè)計與問題求解_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、桂林電子科技大學(xué)試卷2010-2011 學(xué)年第 2 學(xué)期A卷課號課程名稱 程序設(shè)計與問題求解2適用班級(專業(yè))考試時間 120 分鐘 座位號 學(xué)號 姓名題號-一-二二三四五六七八成績滿分50P 20 :30得分評卷人一、閱讀程序,寫出程序運行結(jié)果(每題 10分,5題共50分)1 結(jié)構(gòu)體# in elude <iostream># in elude <stri ng.h>using n amespace std;struct Workerchar n ame15;/姓名int age; /年齡float pay; /工資;void mai n() Worker Worke

2、r1,Worker2;char *t="liout in g"int d=38;float f=493;strcpy(Worker1. name,t);Worker1.age=d;Worker1.pay=f;cout <<Worker1. name<<" "<<Worker1.age<<" "<<Worker1.pay<<e ndl;Worker2=Worker1;cout <<Worker2. name<<" "<

3、;<Worker2.age<<" "<<Worker2.pay<<e ndl;輸出結(jié)果是:liout ing38493liout ing384932 構(gòu)造函數(shù)與析構(gòu)函數(shù)#in clude <iostream>using n amespace std;class TAddprivate:int x, y;public:TAdd(i nt a, i nt b): x(a), y(b)cout << " 調(diào)用構(gòu)造函數(shù) 1." << endl;TAdd(TAdd &p)x=p.

4、x;y=p.y;cout << " 調(diào)用構(gòu)造函數(shù) 2." << endl;TAdd()cout << " 調(diào)用析構(gòu)函數(shù)."<< endl;int add( ) retur n x+y; ;void mai n()TAdd p1(2, 3);TAdd p2=p1;cout << p2.add( ) << en dl;輸出結(jié)果是:調(diào)用構(gòu)造函數(shù)1.調(diào)用構(gòu)造函數(shù)2.5調(diào)用析構(gòu)函數(shù).調(diào)用析構(gòu)函數(shù).3虛函數(shù)#in clude <iostream>using n amespace st

5、d;class Apublic:virtual void f()cout<<"A:f() executi ngn"class B:public Apublic:void f()cout<<"B:f() execut in gn"void mai n()A a;B b;b.f();A* p = &a;p->f();p = &b;p->f();a=b;a.f();輸出結(jié)果是:B:f() execut ingA:f() execut ingB:f() execut ingA:f() execut ing4.模

6、板#in clude <iostream>using n amespace std;template <class Type1,class Type2>class myclassprivate:Type1 i;Type2 j;public:myclass(Type1 a, Type2 b)i=a; j=b;void show()cout<<i<<" "<<j<<e ndl;void mai n()myclass<int, int> ob1(1,3);myclass<int, doubl

7、e> ob2(10,0.23); myclass<char, char*> ob3('A',"This is a test"); ob1.show();ob2.show();ob3.show();輸出結(jié)果是:1 310 0.23A This is a test5.繼承#in clude<iostream>using n amespace std;class Aint x,y;public:A(int x1=0, i nt y1=0):x(x1),y(y1)cout<<"A:"<<x&l

8、t;<' '<<y<<'n'A() cout<<"A des!n"class Bint i;public:B(int ii)i = ii;cout<<"B con !n"B()cout<<"B des!n"class C:public A,public Bpublic:C (in t cx,i nt cy, i nt bi):A(cx,cy),B(bi)cout<<"A with B con!n"C ()

9、cout<<"A with B des!n"int mai n()C cm(3,4,5);輸出結(jié)果是:A:3 4B con!A with B con!A with B des!B des!A des!xyz ”表示結(jié)束輸入,統(tǒng)計 最后按單詞的字典順序輸二、程序填空(每題10分,2題共20分)1詞頻統(tǒng)計:輸入一系列英文單詞,單詞之間用空格隔開,用“輸入過哪些單詞以及各單詞出現(xiàn)的次數(shù),統(tǒng)計時區(qū)分大小寫字母,出單詞和出現(xiàn)次數(shù)的對照表。#in clude <iostream>#in clude <cstri ng>using n amespace

10、 std;/詞條類型struct WordListchar word50;int freq;/詞典排序函數(shù)void Sort(WordList list, i nt count)for(i nt i=0; i<co unt; i=i+1)for(i nt j=co un t-1; j>i; j=j-1)if(strcmp(listj-1.word,listj.word)>0)WordList tmp;tmp=listj-1;listj-1=listj;listj=tmp;/主函數(shù):進行詞頻統(tǒng)計int mai n()WordList list5000;int i, num=0;

11、char temp50;cout<<"請輸入一系列英語單詞,以xyz表示輸入結(jié)束cin> >temp;while("<<e ndl;(1)for(i=0; i<num; i+)/掃描當(dāng)前詞典/若詞典中存在該詞條,詞頻加1if(strcmp(listi.word, temp)=O)(2)break; if(i>=num)/若詞典中無該詞條,添加該詞strcpy(listi.word, temp);( 3)(4)(5)/繼續(xù)輸入單詞Sort(list, num);/輸出詞典cout<<"詞頻統(tǒng)計結(jié)果如下:&q

12、uot;<<endl; for(i=0; i<num; i+)cout<<listi.word<<"t"<<listi.freq<<e ndl; return 0;/對詞典進行排序答案:(1) strcmp(temp, "xyz")!=0(2) listi.freq +;(3) listi.freq =1;(4) num+;(5) cin>>temp;2.帶頭結(jié)點鏈表類的定義如下:#in clude<iostream>#in clude<cstdio>u

13、sing n amespace std; template<class datatype> class NODE/模板聲明 結(jié)點類定義II數(shù)據(jù)域II指針域單鏈表類疋義II鏈表頭指針構(gòu)造函數(shù)創(chuàng)建頭結(jié)點II求表長函數(shù)判空鏈表函數(shù)插入元素函數(shù) public:datatype data; NODE<datatype> *n ext;;template<class datatype>class List/ private:NODE<datatype> *head; public:List();/int len gth();bool isempty() re

14、turn head->n ext=NULL?true:false; / bool in sert_data(datatype data,i nt i);/List();/析構(gòu)函數(shù)定義插入函數(shù)判插入位置的合法性申請新結(jié)點空間 判表滿否尋找第i個元素指向下一個結(jié)點;template<class datatype>bool List<datatype>:i nsert_data(datatype data,i nt i) /NODE<datatype> *curre nt,*previous,* newno de; int j=1;if(i>le ng

15、th()+1)|(i<0)II cout<<"插入位置不正確,不能插入! n" return false;newnode=new NODE<datatype>IIif(newn ode=NULL)II cout<<"內(nèi)存無空閑空間,不能插入!n"return false;newno de->data=data;newno de->n ext=NULL;previous=head;(6while( (7)II previous=curre nt;(8) IIj+;II 鏈入新結(jié)點(9) (10) ret

16、urn true;答案:(6)curre nt=head->n ext; curren t!=NULL&&j<i(8) curre nt=curre nt->n ext;(9) newno de->n ext=curre nt;(10) previous->n ext =newno de;三、程序設(shè)計(每題15分,2題共30分)1 設(shè)計一個時間(Time)類,設(shè)計多個重載的構(gòu)造函數(shù),可以設(shè)置時間,時間加運算(時間 加多少秒),要求重載+來實現(xiàn)時間加運算,按24小時制格式:時:分:秒輸出時間。并在主程序中測試所有的操作。(15分)#pragma on

17、ce/*時間類*/class Timeint sec ond ,minute ,hour;int GetSeco nd();/計算總秒數(shù)void SetTime(i nt ss);/根據(jù)秒數(shù)算出 seco nd ,mi nute ,hourpublic:Time();Time(i nt hh,i nt mm,i nt ss);void SetTime(i nt hh,i nt mm,i nt ss);const Time &operator+(i nt ss);bool operator<(Time &);void Prin t_hms(); HH:mm:ss;#in c

18、lude "Time.h"#in clude <iostream>using n amespace std;Time:Time()sec on d=0;minu te=0;hour=0;Time:Time(i nt hh,i nt mm,i nt ss)SetTime(hh,mm,ss);/計算總秒數(shù)int Time:GetSec on d()return seco nd+60*mi nu te+3600*hour;void Time:SetTime(i nt ss)sec on d=ss%60;ss=ss/60;min ute=ss%60;ss=ss/60;h

19、our=ss%24;void Time:SetTime(i nt hh,i nt mm,i nt ss)seco nd=(ss>=0&&ss<60)?ss:0;minu te=(m m>=0&&m m<60)?mm:0;hour=(hh>=0&&hh<24)?hh:0;const Time & Time:operator+(i nt ss)SetTime(GetSeco nd()+ss);return *this;bool Time:operator <(Time &time)if(Get

20、Seco nd()-time.GetSeco nd()<0)return true;elsereturn false;void Time:Pri nt_hms()cout<<hour<<":"<< minu te<<":"<<sec on d<<e ndl;#in clude "Time.h"#in clude <iostream>using n amespace std;int mai n()Time t1,t2;int hour,m inu

21、te,sec ond;cout<<"請輸入時間(時分秒):"<<endl;cin> >hour> >minu te»sec ond;t1.SetTime(hour,m inu te,sec on d);t1.Prin t_hms();t2.SetTime(12,0,0);if(t1<t2)cout<<endl<<"是上午的時間"<<endl;elsecout<<endl<<"是下午的時間"<<endl

22、;return 0;評分說明:數(shù)據(jù)成員定義 2分,函數(shù)定義5分,函數(shù)實現(xiàn)5分,主程序測試3分2.編寫一個雇員和雇主數(shù)據(jù)輸入和顯示的程序。雇員數(shù)據(jù)有編號(no )、姓名(name)和工資(salary),雇主數(shù)據(jù)有編號(no)、姓名(name)和職位(post)。要求將編號、姓名輸 入和顯示設(shè)計成一個類person,并作為雇員數(shù)據(jù)類employee和雇主數(shù)據(jù)類employer的基類,并編寫主程序進行執(zhí)行,輸出信息時體現(xiàn)運行多態(tài)性,并給出執(zhí)行結(jié)果。(15分)答案:#in clude<iostream>using n amespace std;class pers onint no;ch

23、ar n ame10;public:virtual void in put()cout<<"the no is "cin»no;cout<<"the n ame is "cin»n ame;virtual void output()cout<<"the no is "<<no <<e ndl; cout<<"the n ame is "<<n ame<<e ndl;;class employee: public pers onint salary;public:void in put()pers on:i nput();cout<<"the employee salary is " cin> >salary;void output()pers on :output(); cout<<"the employee

溫馨提示

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

評論

0/150

提交評論