C 面向?qū)ο蟪绦虻脑O(shè)計(jì)教程課后習(xí)題答案_第1頁(yè)
C 面向?qū)ο蟪绦虻脑O(shè)計(jì)教程課后習(xí)題答案_第2頁(yè)
C 面向?qū)ο蟪绦虻脑O(shè)計(jì)教程課后習(xí)題答案_第3頁(yè)
C 面向?qū)ο蟪绦虻脑O(shè)計(jì)教程課后習(xí)題答案_第4頁(yè)
C 面向?qū)ο蟪绦虻脑O(shè)計(jì)教程課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章

一、選擇題

1-3BCA

二、編程題

1.編寫(xiě)一個(gè)C++程序,要求榆出“歡迎學(xué)習(xí)C++語(yǔ)言巴

參考程序:

include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;//使用命名空間std

intmain()II主函數(shù)main。

(

cout?”歡迎學(xué)習(xí)C++語(yǔ)言!”vvendl;//用C++的方法輸出一行

systemCPAUSE1');〃調(diào)用庫(kù)函數(shù)system(),輸出提示信息

return0;〃返回在返回操作系逐

)

?2.編一個(gè)程序,用一個(gè)函數(shù)實(shí)現(xiàn)求n個(gè)整型數(shù)據(jù)的最小值.函數(shù)原型如下:

intMin(inta[],intn)

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

intMin(inta[],intn)〃求n個(gè)整型數(shù)據(jù)的最小值

intm=a[0],I;〃臨時(shí)變量

for(i=1;I<n;I++)

(〃依次比較求最小值

if(a[l]<m)

〃如果a[l]更小

〃a[l]為當(dāng)前最小值

returnm;〃返回最小值

!n,main()〃主函才攵main。

inta[]=[1,2,3,4,5,6,7,8,9,-10},n=10;

cout?△最小位為“?Min(a,n)?endl;〃榆出最小值

systemCPAUSE0);〃詞用庫(kù)函數(shù)system(),榆出提示信息

return0;II途回祜i,返回兼柞家磋

3.求2個(gè)數(shù)或3個(gè)整數(shù)中的最大數(shù),用兩個(gè)同名函數(shù)實(shí)現(xiàn),要求編寫(xiě)測(cè)試程序.

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

intMax(intx,inty)//求x,y的最大值

(

returnx>y?x:y;〃返回x,y的最大值

}

intMax(intx,inty,intz)〃求x,y,z的最大值

(

Intm=x>y?x:y;〃x,y的最大值

m=m>z?m:z;〃m,z的最大值

returnm;〃返回x,y,z的最大值

)

intmain()//主函數(shù)main。

cout?”2,3的最大值為“?Max(2,3)?endl;

cout?”1,6,8的最大值為“?Max(1,6,8)?endl;

systemC'PAUSE");〃調(diào)用庫(kù)函數(shù)system(),輸出提示信息

return0;//返回值,返回操作系統(tǒng)

)

4.用變量的引用作函數(shù)形參,實(shí)現(xiàn)交換兩個(gè)整型變量,要求編寫(xiě)測(cè)試程序。

參考程序:

#include<iostream>//編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

voidSwap(int&x,int&y)//交換x,y的值

(

intt=x;x=y;y=t;〃循環(huán)賦值交換x,y的值

)

Intmain()//主函數(shù)maln()

{

intx=1,y=6;

cout?"交換諭:**?x??y?endl;

Swap(x,y);

cout?"交換后:"?x??y?endl;

systemCTAUSE");〃調(diào)用庫(kù)函數(shù)system。,輸出系統(tǒng)提示信息

return0;//返回值,返回操作系統(tǒng)

}

*5.編一個(gè)程序,用同一個(gè)函數(shù)名對(duì)n個(gè)數(shù)據(jù)進(jìn)行從小到大排序,數(shù)據(jù)類型可

以是整型、單精度實(shí)型、雙精度實(shí)型,用重載函數(shù)實(shí)現(xiàn)。

參考程序:

#include<iostream>//編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

voidSort(lntaQ,intn)〃對(duì)a[0].?.a[n?1]進(jìn)行排序

{

inttem,I,j;〃定義變量

for(i=0;i<n-1;IT)

for(J=i+1;j<n;J++)

if(a[i]>aU])

tem=a[i];a[i]=a[j];a[j]=tern;

)

}

voidSort(floataQ,intn)〃對(duì)a[0]...a[n?1]進(jìn)行排序

(

floattem;〃臨時(shí)變量

Inti,j;〃定義變量

for(i=0;I<n-1;l+.)

for(j=i+1;j<n;J++)

lf(a[l]>aU])

{〃a[i]比a[J]更大

tem=a[i];a[i]=a[j];a[j]=tem;

)

voidSort(doubleaQ,intn)//對(duì)④⑼…石印刃進(jìn)行排序

doubletem;〃臨時(shí)變量

intI,J;//定義變量

for(i=0;i<n-1;k.)

for(j=i+1;j<n;j++)

H(a[l]>a[j])

{〃a[l]比a[J]更大

tem=a[i];a[i]=a[j];a[j]=tem;

)

)

intmain()//主函數(shù)main()

inta[]={1,3,2,5,6,9,0,6};〃定義a

floatbQ={1.6,3.3,2.8,5.6,6.8,9.6,0.6,6.8};//定義b

doublec[]={1.2,3.1,2.6,5.8,6.8,9.8,0.8,6.2};//定義c

inti,n=8;〃定義變量

Sort(a,n);//對(duì)a排序

cout?"a:“;〃輸出提示

for(I=0;i<n;U+)

cout?a[l]?”〃輸出a[i]

cout?endl;〃換行

Sort(b,n);〃對(duì)b排序

cout?"b:*';〃輸出提示

for(i=0;i<n;i++)

cout?b[i]?"〃輸出b[i]

cout?endl;〃換行

Sort(c,n);II對(duì)C#序

cout?Mc:M;〃輸出提示

for(I=0;i<n;k*)

cout?c[i]?"〃輸出c[i]

cout?endl;〃換行

systemC'PAUSE-);〃調(diào)用庫(kù)函數(shù)system(),輸出系統(tǒng)提示信息

return0;〃返回值,返回操作系統(tǒng)

第二章

一、選擇題

1-5CCACD

6-10DABAD

11-15BDBCD

16C

二、填空題

1、類

2、友元

3、intpoint::count=0

4、2

5、this->n或Integer::n

6、A~A

三、編程題

1.定義一個(gè)滿足如下要求的Date類,

(1)用下面的格式輸出日期:

年-月?日

(2)設(shè)置日期。

并編出應(yīng)用程定義日期對(duì)象,設(shè)置日期,輸出該對(duì)象提供的日期。

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

classDate

private:

〃數(shù)據(jù)成員

intyear;〃年

intmonth;〃月

intday;//日

public:

〃公有函數(shù)

Date(inty=2010,intm=1,intd=1):

year(y),month(m),day(d){}〃構(gòu)造函數(shù)

voidSet(inty,intm,intd)〃設(shè)置日期

{year=y;month=m;day=d;}

voidShow()const〃顯示日期

{cout?year??month??day?endl;}

);

intmain()//主函數(shù)maln()

Dated;〃定義對(duì)象

d.Show();〃顯示日期

d.Set(2016,6,18);〃設(shè)置日期

d.Show();〃顯示日期

system("PAUSE");〃調(diào)用庫(kù)函數(shù)system。,輸出提示信息

return0;〃返回值,返回猱作系統(tǒng)

)

2.定義一個(gè)時(shí)間類Time.

場(chǎng)翳*定義時(shí)間對(duì)象,鬟翻皙峰目&4盛耀犒時(shí)間,并編出

#include<iostream>曦耀轆d

usingnamespacestd;

classTime

inthour;//時(shí)

intminute://々

intsecond;//秒

public:

方公宥函數(shù)

Time(inth=0,intm=0.ints=0)://構(gòu)造函數(shù)

hour(h),minute(m),second(s){}

voidSet(inth,intm,ints)//設(shè)置日期

{hour=n;minute=m;second=s;}

voidShow()const〃顯示日期

{cout?hour?n:0?minute??second?endl;}

Jntmain()II主函數(shù)main。

Ti1rsTIme〃

設(shè)

1sw(〃

ho示

1〃

8,用

sset(usF〃調(diào)m

rThowm(返,輸出提示信息

stenc

urn

*3.編寫(xiě)設(shè)計(jì)一個(gè)People(人)類.該類的數(shù)據(jù)成貝有姓名(name)、年齡

(age)、身高(height)、體重(weight)和人數(shù)(num),其中人數(shù)為靜態(tài)數(shù)據(jù)成員,

成員函數(shù)有構(gòu)造函數(shù)(People)、進(jìn)食(Eatting)、運(yùn)動(dòng)(Sporting)、顯示(Show)

和顯示人駁(ShowNum),其中構(gòu)造函數(shù)由已知參數(shù)姓用(nm)、年齡(a)、身高

(h)和體重(w)構(gòu)造對(duì)象,進(jìn)食函數(shù)使體重加1,運(yùn)動(dòng)函數(shù)使身高加1,顯示函數(shù)

用于顯示人的姓名、年齡、身高、體重,顯示人數(shù)函數(shù)為靜態(tài)成員函數(shù),用于

顯示人數(shù)。假設(shè)年齡的單位為歲,身高的單位為厘米,體重的單位為市斤,要

求所有數(shù)據(jù)成員為private訪問(wèn)權(quán)限,所有成員函數(shù)為public訪問(wèn)權(quán)限,在主函

數(shù)中定義若干個(gè)對(duì)象,通過(guò)對(duì)象直接訪問(wèn)類的所有非靜態(tài)成員函數(shù),通過(guò)類訪

問(wèn)靜態(tài)成員函數(shù)。

參考程序:

#include<iostream>//虢)譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

classPeople

(

private:

〃數(shù)據(jù)成員

charname[9];

intage;身

intheight;體

〃<

doubleweight;人

數(shù)

staticintnum;

public:

〃公有函數(shù)

People(charnm[]="無(wú)名氏",inta=16,inth=168,intw=118):

age(a),height(h),weight(w){strcpy(name,nm);num++;}

voidEatting(){weighu*;}//進(jìn)有

voidSporting(){heighU+;}//運(yùn)動(dòng)

voidShow()const〃顯示信息

{

cout?”個(gè)人信息:"?endl;

cout?"姓名:**?name?endl;

cout?"年齡:"?age?"歲"?endl;

cout?“身高:"?height?“厘米"?endl;

cout?"體重:"?weight?"市斤"?endl?endl;

}

staticvoidShowNum()//顯示人數(shù)

{cout?"人數(shù)?num?endl;}

);

intPeople::num=0;//初始化靜態(tài)數(shù)據(jù)成員num

intmain()〃主函數(shù)main。

Peoplep1;〃定義對(duì)象

p1.Show();〃顯示信息

Peoplep2(“李敏”,18,170,108);〃定義對(duì)象

p2.Eatting();〃進(jìn)食

p2.Sporting();〃運(yùn)動(dòng)

p2.Show();〃顯示信息

People::ShowNum();〃顯示人數(shù)

systemC'PAUSE");〃調(diào)用庫(kù)函數(shù)system(),輸出提示信息

return0;〃返回值,返回操作系統(tǒng)

*4.定義一個(gè)描述員工(Employee)基本情況的類,數(shù)據(jù)成員包括編號(hào)(num)、

姓名(name)、性別(sex)、工資(wage)、人數(shù)(count)、總工資(totalWage)。

其中姓名定義為長(zhǎng)度為18的字符數(shù)組,性別為為長(zhǎng)度為3的字符數(shù)組,其它數(shù)

據(jù)成員類型為整型,總工資和人數(shù)為靜態(tài)數(shù)據(jù)成員,函數(shù)成員包括構(gòu)造函數(shù)、

顯示基本數(shù)據(jù)函數(shù)(ShowBase)和顯示靜態(tài)數(shù)據(jù)函數(shù)(ShowStatic),其中構(gòu)造

函數(shù)由已知參數(shù)編號(hào)(nu)、姓名(nm)、性別(sx)和工資(wg)構(gòu)造對(duì)象,顯示

基本數(shù)據(jù)函數(shù)用于顯示學(xué)生的編號(hào)、姓名、性別和工資,顯示靜態(tài)數(shù)據(jù)函數(shù)為

靜態(tài)成員函數(shù),用于顯示人數(shù)和總工資;要求所宥數(shù)據(jù)成員為protected訪問(wèn)

權(quán)限,所有成員函數(shù)為public訪問(wèn)權(quán)限,在主函數(shù)中定義若干個(gè)員工對(duì)象,分

別顯示員工基本信息,以及顯示員工人數(shù)和總工資。

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

classEmployee

protected:

〃數(shù)據(jù)成員

Intnum;〃編號(hào)

charname[18];〃姓名

charsex[3];〃姓名

intwage;〃工資

staticintcount;〃人數(shù)

staticInttotalWage;〃總工資

public:

〃公有函數(shù)

Employee(intnu,charnm口,charsx[],intwg):num(nu),wage(wg)

{strcpy(name,nm);strcpy(sex,sx);count++;totalWage+=wg;};

voidShowBase()//顯示基本數(shù)據(jù)

(

cout?”個(gè)人基本信息:"?endl;

cout?“學(xué)號(hào):"?num?endl;

cout?"姓名?name?endl;

cout?"性另U:"?sex?endl;

cout?“工資:"?wage?"元"?endl?endl;

)

staticvoidShowStatic()//顯示靜態(tài)數(shù)據(jù)

{

cout?"人數(shù):"?count?endl;

cout?”總工資廣?totalWage?"元"?endl;

)

};

intEmployee::count=0;//初始化靜態(tài)數(shù)據(jù)成員count

intEmployee::totalWage=0;/初始化靜態(tài)數(shù)據(jù)成員totalWage

intmain()//主函數(shù)main。

(

Employeee1(1008,“李杰“男”,2680);〃定義對(duì)象

e1.ShowBase();〃顯示基本數(shù)據(jù)

Employeee2(1009,“李敏"女”,2860);〃定義對(duì)象

e2.ShowBase();//顯示基本數(shù)據(jù)

e2.ShowStatic();//顯示辭態(tài)數(shù)據(jù)

system(,,PAUSE,1);〃調(diào)用庫(kù)函數(shù)system。,輸出系統(tǒng)提示信息

return0;〃返回值,返回操作系統(tǒng)

第三章

一、選擇題

1-5CCACC

二、填空題

1、Fun<double,int>(7)

2、ElemTypedbl(ElemTypen){returnn+n;}

3、最小整數(shù)=4,最小實(shí)型=0.35

二、編程題

1.試使用函數(shù)模板實(shí)現(xiàn)輸■出一個(gè)數(shù)組各元素的值,要求編寫(xiě)測(cè)試程序.

參考程序:

include<iostream>II編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

template<classElemType>

voidDisplay(ElemTypeaQ,intn)//輸出數(shù)組a各元素之值

(

for(inti=0;i<n;i++)

cout?a[i]?〃榆出a[i]

cout?endl;〃換行

}

intmain()〃主函數(shù)main。

intaQ={1,2,3,4,5,6,7,8,9);//定義數(shù)蛆

Display(a,9);〃輸出a

systemCTAUSE");〃調(diào)用庫(kù)函數(shù)system。,輸出系統(tǒng)信息

return0;〃返回值,返回操作系統(tǒng)

2.編寫(xiě)一個(gè)復(fù)數(shù)類模板Complex,其數(shù)據(jù)成員real和image的類型未知,定義

相應(yīng)的成員函數(shù),包括構(gòu)造函數(shù)、輸出復(fù)數(shù)值的函數(shù)、求復(fù)數(shù)和的函數(shù)和求復(fù)數(shù)

差的函數(shù),主函數(shù)中定義模板類對(duì)象,分別以int和double實(shí)例化類型參數(shù)。

參考程序:

#include<iostream>//編譯預(yù)處理命令

usingnamespacestd;//使用命名空間std

〃聲明復(fù)數(shù)類模板

template<classElemType>

classComplex

{

private:

〃數(shù)據(jù)成員

ElemTypereal;〃實(shí)部

日emTypeimage;//虛部

public:

〃公有函數(shù)

Complex(ElemTyper=0,ElemTypei=0):real(r),image(i){}

voidShow()const;〃輸出復(fù)藪

staticComplexAdd(constComplex&z1,constComplex&z2);

staticComplexSub(constComplex&z1,constComplex&z2);

);

template<classElemType>

voidComplex<ElemType>::Show()const〃輸出復(fù)數(shù)

if(image<0)cout?real?image?'T?endl;〃虛部為負(fù),例如-51

elseif(image==0)cout?real?endl;//虛部為0,例如3

elsecout?realimagevv“i"vvendl;//虛都為正,例如+5i

}

template<classElemType>

Complex<ElemType>Complex<ElemType>::Add(constComplex&z1,

constComplex&z2)//復(fù)駁加法

Complexz(z1.real-1-z2.real,z1.image+z2.image);//定義復(fù)數(shù)對(duì)象

returnz;〃返回復(fù)數(shù)

}

template<classElemType>

Complex<Elemiype>Complex<ElemType>::Sub(constComplex&z1,

constComplex&z2)//復(fù)數(shù)減法

Complexz(z1.real-z2.real,z1.image-z2.image);//定義復(fù)數(shù)對(duì)象

returnz;〃返回發(fā)藪

intmain()//主函數(shù)maln()

(

Complex<int>z1(2,3),z2(6,-5),z3;//定義復(fù)數(shù)對(duì)象

z1.Show();〃輸?出z1

z2.Show();〃輸出z2

z3=Complex<int>::Add(z1,z2);//z3=z1+z2

z3.ShowO;〃榆出z3

z3=Complex<int>::Sub(z1,z2);/7z3=z1-z2

z3.Show();〃輸出z3

Complex<double>z4(2.1,3.8),z5(6.8,-5.1),z6;//C義復(fù)數(shù)對(duì)家

z4.Show();〃輸出z4

z5.Show();〃輸出z5

z6=Complex<double>::Add(z4,z5);//z6=z4+z5

z6.Show();〃輸出z3

z6=Complex<double>::Sub(z4,z5);//z6=z4-z5

z6.Show();〃輸出z6

system("PAUSE");〃調(diào)用庫(kù)函數(shù)system(),給出系統(tǒng)提示信息

return0;〃返回值,返回操作系喪

)

*3.編寫(xiě)一個(gè)使用數(shù)組類模板Array對(duì)數(shù)組求最大值和求元素和的程序,要求

編寫(xiě)出測(cè)試程序。

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

〃聲明數(shù)組類模板

template<classElemType>

classArray

(

private:

〃數(shù)據(jù)成員

ElemType*elem;〃存儲(chǔ)數(shù)據(jù)元素值

intsize;〃數(shù)組元素個(gè)數(shù)

public:

〃公有函數(shù)

Array(intsz):size(sz){elem=newElemType[size];}//構(gòu)造函數(shù)

-Array(){deleteelem;}〃析構(gòu)函數(shù)

voidSetElem(ElemTypee,inti);〃設(shè)置元素值

ElemTypeGetElem(inti)const;//求元素值

ElemTypeMax()const;〃求最大值

ElemTypeSum()const;//求元素之和

template<classElemType>

voidArray<ElemType>::SetElem(ElemTypee,inti)//設(shè)置元素值

(

if(i<0||i>=size)

(

cout?”元素位置錯(cuò)!”?endl;

exit⑴;〃退出程序的運(yùn)行,返回到操作系統(tǒng)

)

elem[i]=e;II設(shè)置元素值為e

}

template<classElemiype>

ElemTypeArray<ElemType>::GetElem(inti)const//求元素值

(

if(i<0||i>=size)

{

cout?”元素位置錯(cuò)!”?endl;

exit(2);〃退出程序的運(yùn)行,返回到操作系統(tǒng)

}

returnelem[i];//返回元素值

)

template<classElemType>

ElemTypeArray<ElemType>::Max()const〃求最大值

(

ElemTypem=設(shè)elem[0]最大

for(inti=1;i<size;i++)

if(elem[i]>m)m=elem[i];//依次比較求最大值

returnm;〃返回最大值

template<classElemType>

ElemTypeArray<ElemType>::Sum()constII求元素之和

ElemTypes=0;〃定義變量

for(inti=1;I<size;I++)

s=s+elem[i];〃依次求和

returns;〃返回和

}

intmain()〃主函數(shù)main。

{

inta[]={1,9,7,5,6,3};〃定義數(shù)組a

intn=6;〃數(shù)組元素個(gè)數(shù)

Array<int>obj(n);〃定義數(shù)組對(duì)象

inti;〃定義變量

for。=0;ivn;X)

obj.SetElem(a[i],i);II設(shè)置數(shù)組元素值

for(i=0;i<n;i++)

cout?obj.GetElem(i)?”〃輸出元素值

cout?endl;〃換行

cout?"最大值為:"?obj.Max()?endl;//輸出最大值

cout?”各元素和為:"vvobj.Sum()vvendl;//輸出各元素之和

system("PAUSE',);〃調(diào)用庫(kù)函數(shù)system(),榆出系統(tǒng)提示信息

return0;〃返回值,返回操作系爰

*4.對(duì)數(shù)組求最大值和求元素和的算法都編寫(xiě)為函數(shù)模板,要求編寫(xiě)出測(cè)試程

序.

參考程序:

#include<iostream>//編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

template<classElemType>

ElemTypeMax(ElemTypea。,intn)〃求最大值

(

ElemTypem=a[0];〃設(shè)a[0]最大

for(intI=1;i<n;I++)

if(a[i]>m)m=a[l];〃依次比較求最大值

returnm;〃返回最大值

)

template<classElemType>

ElemTypeSum(ElemTypea[],intn)II求元素之和

{

ElemTypes=0;〃定義變量

for(inti=1;i<n;i++)

s=s+a[i];〃依次求和

returns;〃返回和

)

intmain()〃主函數(shù)main。

{

inta[]={1,9,7,5,6,3);//定義數(shù)組a

intn=6;〃數(shù)組元素個(gè)數(shù)

for(inti=0;i<n;i++)

cout?a[i]?'〃輸出元素值

cout?endl;〃換行

cout?”最大值為:”?Max(a,n)?endl;〃輸出最大值

cout?”各元素和為:"?Sum(a,n)?endl;〃輸出各元素之和

system("PAUSE");〃調(diào)用庫(kù)函數(shù)system(),輸出系統(tǒng)提示信息

return0;〃返回值,返回操作系統(tǒng)

)

**5.對(duì)數(shù)組求最大值和求元素和的函數(shù)采用靜態(tài)成員函數(shù)的方式封裝成數(shù)組

受雅普板ArrayAIg,要求編寫(xiě)出測(cè)試程序。

#include<iostream>

usingnamespacestd;爆

〃聲朗數(shù)組類程板

template<classElemType>

classArrayAIg

public:

》公有函數(shù)

staticElemTypeMax(ElemTypea[],intn)〃求最大值

ElemTypem=a[01://設(shè)a[0]最大

for(infr=1:i<n;7++)

if(a[i]>m)m=a[i];〃依次比較求最大值

returnm;〃運(yùn)回最大總

}

staticElemTypeSum(ElemTypea[],intn)//求元素之和

ElemTypes=0;

〃定義變量

for(inti=1;i<n;i++)

s=s+a[i];〃依次.

returns;〃返回:

};

intmain()//主函數(shù)main。

inta[]={1,9,7,5,6,3);〃定義數(shù)組a

intn=6;〃數(shù)組元素個(gè)數(shù)

for(inti=0;i<n;i++)

cout?a[i]?'“”;〃輸出元素值

cout?endl;〃換行

cout?"最大值為:"?ArrayAlg<int>::Max(a,n)?endl;

coutvv”各元素和為丁'?ArrayAlg<int>::Sum(a,n)?endl;

system(,?PAUSE,,);〃調(diào)用庫(kù)函數(shù)system。,榆山系統(tǒng)提示信息

return0;〃返回值,返回操作系統(tǒng)

)

第四章

一、選擇題

1-4ACAB

二、填空題

1、booloperator!(constMyclass&)

2、1

3、operator

三、編程題

“*,,

1.定義一個(gè)復(fù)數(shù)類Complex,重載運(yùn)算符,使之能用于復(fù)

數(shù)的加、減、乘。編程序,分別求兩個(gè)復(fù)數(shù)之和、差與積。

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

〃聲明復(fù)數(shù)類

classComplex

(

private:

〃數(shù)據(jù)成員

doublereal;//實(shí)部

doubleimage;〃虛部

public:

〃公有函數(shù)

Complex(doubler=0,doublei=0):real(r),image(i){}//構(gòu)造函數(shù)

voidShow()const;〃輸出復(fù)數(shù)

doubleGetReal()const{returnreal;}〃返回實(shí)部

doubleGetlmage()const{returnimage;}//返回虛部

voidSetReal(doublerl){real=rl;}〃設(shè)置實(shí)部

voidSetlmage(doubleig){image=ig;}//設(shè)置虛部

};

voidComplex::Show()const〃輸出復(fù)數(shù)

(

if(image<0)cout?real?image?"i"?endl;//虛部為負(fù)

elseif(image==0)cout?real?endl;//虛部為0

elsecout?realvvvvimage?,,P,?endl;〃虛部為正

)

Complexoperator+(constComplex&a,constComplex&b)

H重載加法運(yùn)算符兩個(gè)操作數(shù)都是對(duì)象

(

Complexz(a.GetReal()+b.GetReal(),

a.Getlmage()+b.Getlmage());//定義復(fù)數(shù)對(duì)象

returnz;〃返回和

)

Complexoperator-(constComplex&a,constComplex&b)

//重載加法運(yùn)算符兩個(gè)操作數(shù)都是對(duì)象

{

Complexsub(a.GetReal()-b.GetReal(),

a.Getlmage()-b.Getlmage());//定義差對(duì)象

returnsub;〃返回和

}

Complexoperator*(constComplex&a,constComplex&b)

//重載加法運(yùn)算符兩個(gè)操作數(shù)都是對(duì)象

{

Complexz;//定義復(fù)數(shù)對(duì)象

z.SetReal(a.GetReal()*b.GetReal()-a.Getlmage()*b.Getlmage());

〃設(shè)置實(shí)部

z.Setlmage(a.GetReal()*b.Getlmage()+a.Getlmage()*b.GetReal());

//設(shè)置虛部

returnz;〃返回積

}

intmain()〃主函數(shù)main。

(

Complexz1(2,3),z2(6,-5),z3;〃定義復(fù)數(shù)對(duì)象

z1.Show();〃輸出z1

z2.Show();〃輸出z2

z3=z1+z2;//z3=z1+z2

z3.Show();〃輸出z3

z3=z1-z2;//z3=z1-z2

z3.Show();〃輸出z3

z3=z1*z2;Z/z3=z1*z2

z3.Show();〃輸出z3

system("PAUSE^?);〃調(diào)用庫(kù)函數(shù)system(),輸出系統(tǒng)提示信息

return0;〃返回值,返回操作系統(tǒng)

}

o£5?升一人日光Rata季夏?

^I:藐鱉宴豌蠹鬻歲嚶鬟黑黑算符

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

classDate

(

private:

〃數(shù)據(jù)成員

intyear;〃年

intmonth;〃月

intday;//日

public:

〃公有函數(shù)

Date(inty=2010,intm=1,intd=1):year(y),month(m),day(d){)

voidSetYear(inty){year=y;}//設(shè)置年

voidSetMonth(intm){month=m;}〃設(shè)置月

voidSetDay(intd){day=d;}〃設(shè)置日

intGetYear()const{returnyear;}〃返回年

intGetMonth()const{returnmonth;}〃返回月

intGetDay()const{returnday;}〃返回日

};

istream&operator?(istream&in,Date&dt)//重載榆入運(yùn)算符">>”

inty,m,d;〃表示年(y),月(m)和日(d)

cout?"輸入年:";

in?y;//輸入年

cout?“輸入月:

in?m;〃輸入月

cout?"榆入日:";

in?d;〃榆入日

dt.SetYear(y);〃設(shè)置年

dt.SetMonth(m);〃設(shè)置月

dt.SetDay(d);〃設(shè)置日

returnin;〃返回輸入流對(duì)象

}

ostream&operator?(ostream&out,constDate&dt)〃重載運(yùn)算符“vv”

(

cout?dt.GetYear()?“年"?dt.GetMonth()?“月”

?dt.GetDay()?“日“;

returnout;〃返回輸出流對(duì)象

}

intmain()//主函數(shù)main()

(

Dated;〃定義對(duì)象

cin?d;//輸入日期

cout?d?endl;〃輸出日期

systemCPAUSE");〃調(diào)用庫(kù)函數(shù)system(),輸出系統(tǒng)提示信息

return0;〃返回值,返回操作系統(tǒng)

*3.設(shè)計(jì)一個(gè)時(shí)間類Time,要求:

(1)包含時(shí)(hour,、分(minute)和秒(second)私有數(shù)據(jù)成員。

(2)包含構(gòu)造函數(shù),重載關(guān)于一時(shí)間加上另一時(shí)間的加法運(yùn)算符“+”、重載

輸出運(yùn)算符“vv”與重載輸入運(yùn)算符

參考程序:

#include<iostream>〃編譯預(yù)處理命令

usingnamespacestd;〃使用命名空間std

classTime

private:

〃數(shù)據(jù)成員

inthour;〃時(shí)

intminute;〃月

intsecond;〃秒

public:

〃公有函數(shù)

Time(inth=0,intm=0,ints=0):

hour(h),minute(m),second(s){}//構(gòu)造函數(shù)

voidSetHour(inth){hour=h;}〃設(shè)置時(shí)

voidSetMinute(intm){minute=m;}〃設(shè)置分

voidSetSecond(ints){second=s;}〃設(shè)置秒

intGetHour()const{returnhour;}〃返回時(shí)

intGetMinuteQconst{returnminute;}〃返回分

intGetSeconaQconst{returnsecond;}〃返回秒

};

istream&operator?(istream&in,Time&t)//重載輸入運(yùn)算符">>”

(

inth,m,s;//表示時(shí)(h),分(m)和秒(s)

cout?"備入時(shí):";

in?h;〃輸入時(shí)

cout?"輸入分:";

in?m;〃輸入分

cout?"輸入秒:";

in?s;II輸入秒

tSetHour(h);〃設(shè)置時(shí)

t.SetMinute(m);〃設(shè)置分

t.SetSecond(s);〃設(shè)置秒

returnin;〃返回輸入流對(duì)象

)

ostream&operator?(ostream&out,constTime&t)//重載運(yùn)算符“vv”

(

cout?t.GetHour()?":?'?t.GetMinute()?

?t.GetSecond();

returnout;〃返回輸出流對(duì)象

}

Timeoperator-?-(constTime&a,constTime&b)//重載加法運(yùn)算符

{

ints=3600*a.GetHour()+60*a.GetMinute()+a.GetSecond()+

3600*b.GetHour()+60*b.GetMinute()+b.GetSecond();

Timet;〃定義地象

t.SetHour(s/3600);//設(shè)置時(shí)

s=s%3600;〃去掉時(shí)占用的時(shí)間

t.SetMinute(s/60);//設(shè)置分

t.SetSecond(s%60);//設(shè)置秒

returnt;〃返回時(shí)間

}

intmain()〃主函數(shù)main。

(

Timet1,t2;〃定義對(duì)象

cout?”榆入:"?endl;//輸入提示

cin?t1;//輸入1t

cout?t1?endl;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論