版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
習(xí)題1
1、編寫一個(gè)程序,讀取圓的半徑,打印圓的直徑、周長(zhǎng)和面積。式用常量值3.14159。在輸
出中進(jìn)行這些計(jì)算。
#include<iostream>
usingnamespacestd;
intmain()
(
doubler,P=3.14159;
cout?"Pleaseenterther:H?endl;
cin?r;
cout?"d\tc\ts"?endl;
cout?2*r?"\t"?2*P*r?"\t"?P*r*r?endl;
return0;
)
2、編寫一個(gè)程序,讀取5個(gè)整數(shù)并確定和打印其中的最大值。
#include<iostream>
usingnamespacestd;
intmain()
(
inta[5],maxj;
cout?"pleaseenterfivenumbers:"?endl;
for(i=0;i<5;i++)
cin?a[i];
max=a[0];
for(i=l;i<5;i++)
{
if(a[i]>max)
max=a[i];
)
cout?"maxis"?max?endl;
return0;
3、編寫?個(gè)程序,讀取一個(gè)整數(shù)并確定和打印其為奇數(shù)或偶數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
intn;
cout?"Pleaseenteranumber:n?endl;
cin?n;
if(n%2==0)
cout?"even!"?endl;//odd為奇數(shù),even為偶數(shù)
else
cout?"odd!',?endl;
return0;
)
4、用八條輸出語(yǔ)句顯示下列棋盤圖案,然后用更少的語(yǔ)句顯示這個(gè)棋盤圖案。
********
********
********
********
********
********
********
********
#include<iostream>
usingnamespacestd;
intmain()
(
cout?H********"?endl;
cout?"********"?endl;
cout?"********"?endl;
cout?"********n?endl;
cout?"********"?endl;
cout?"********"?endl;
cout?"********"<<endl;
cout?"********"?endl;
return0;
)
習(xí)題2
2.1輸入n,求2+2!+3!+…+n!
#include<iostream>
usingnamespacestd;
intmain()
(
intfun(intx);
intnJ,s=0;
cout?"pleaseenteranumber:"?endl;
cin?n;
for(i=l;i<=n;i++)
s=s+fun(i);
cout?"l!+2!+3!+...+n!=H?s?endl;
return0;
)
intfun(intx)
(
inty;
if(x==l||x==0)
y=i;
else
y=x*fun(x-l);
returny;
2.2猴子吃桃問(wèn)題:猴子摘下若干個(gè)桃子,第一天吃了桃子的一半多一個(gè),以后每天吃了前
一天剩下的一半多一個(gè),到第十天吃以前發(fā)現(xiàn)只剩下一個(gè)桃子,問(wèn)猴子共摘了幾個(gè)桃子。
#include<iostream>
usingnamespacestd;
intmain()
(
intr=l,n,d=9;
for(d=9;d>0;d-)
(
n=2*(r+l);
r=n;
)
cout?ntotal="?n?endl;
return0;
}
2.3從鍵盤輸入一組非0整數(shù),以輸入0標(biāo)志結(jié)束,求這組整數(shù)的平均值,并統(tǒng)計(jì)其中正
數(shù)和負(fù)數(shù)的個(gè)數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
inta[100]JJ/sum=0/nl=0/n2=0;
doubleave;
cout?"Pleaseinputthearray(endwith0):"?endl;
for(i=0;i<100;i++)
(
cin?a[i];
if(a[i]==O)
break;
)
for(j=0;j<i;j++)
(
sum=sum+a[j];
if(aO]>0)
nl=nl+l;
else
n2=n2+l;
)
ave=(double)sum/i;
cout?"average="?ave?endl;
cout?nl?'\t'?n2?endl;
return0;
)
2.4編程找出l~500之中滿足除以3余2,除以5余3,除以7余2的整數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
(
inti;
for(i=l;i<=500;i++)
(
if(i%3==2)
if(i%5==2)
if(i%7==2)
cout?i?'\t';
)
cout?endl;
return0;
)
2.5編程求1000之內(nèi)的所有完全數(shù)。所謂完全數(shù)指的是一個(gè)數(shù)恰好等于它的所有因子和。
例如6=1+2+3,就是一個(gè)完全數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
inti,j,s;
for(i=2;i<=1000;i++)
s=0;
for(j=l;j<i;j++)〃判斷因子
(
if(i%j==O)
s=s+j;
)
if(i==s)〃完全數(shù)的條件
(
cout?i<<"是完全數(shù)"<<endl;
cout<<"其因子分別為";
for(j=l;j<i;j++)
(
if(i%j==O)
cout?j?'\t';
)
cout?endl;
)
)
return0;
}
2.6將100元換成用10元、5元和1元的組合,共有多少種組合方法。
#include<iostream>
usingnamespacestd;
intmain()
(
intij,k,n=0;
for(i=0;i<=10;i++)〃計(jì)算組合方法總數(shù)
(
for(j=0;j<=20;j++)
(
for(k=0;k<=100;k++)
(
if((i*10+j*5+k)==100)
n=n+l;
)
)
)
cout<<"共有"<<n<<"種組合方法"<<endl;〃輸出總數(shù)。
cout<<"分別為"<<endl;〃從此處開(kāi)始列出組合情況
cout<<"十塊\t"?"五塊\t"<<"一塊"<<endl;
for(i=0;i<=10;i++)〃分別將各種組合輸出
for(j=0;j<=20;j++)
(
for(k=0;k<=100;k++)
(
if((i*10+j*5+k)==100)
(
cout?i?'\t'
?k?endl;
)
)
}
)
return0;
習(xí)題3
3.1設(shè)計(jì)函數(shù),將小寫英文字符變?yōu)閷?duì)應(yīng)的大寫字符。
#include<iostream>
usingnamespacestd;
intmain()
(
charij;
charfun(chara);〃函數(shù)聲明
cout<<“請(qǐng)輸入一個(gè)小寫字母“<<endl;
cin?i;
j=fun(i);
cout?j?endl;
return0;
)
charfun(chara)〃轉(zhuǎn)換函數(shù)
(
charb;
b=a-32;
returnb;
3.2設(shè)計(jì)兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
inta,b,gj;
intgcd(intajntb);//gcd為英語(yǔ)最大公約數(shù)的首字母縮寫,下面的1cm即為最小公倍數(shù)的
縮寫
intlcm(intajntb);
cout<<”請(qǐng)輸入兩個(gè)不等的整數(shù):"<<endl;
cin?a?b;
g=gcd(a,b);
l=lcm(a,b);
coutvv”最大公約數(shù)為"<<g?endl;
cout<<"最小公倍數(shù)為"<<k<endl;
return0;
)
intgcd(inta,intb)〃用更相減損法求最大公約數(shù)
(
intc;
while(a!=b)
(
if(a>b)
(
c=a-b;
a=c;
}
else
(
c=b-a;
b=c;
)
)
returna;
}
intlcm(inta,intb)〃最小公倍數(shù)等于兩數(shù)的積除以兩數(shù)的最大公約數(shù)
(
intg,l;
g=gcd(a,b);
l=a*b/g;
returnI;
)
3.3設(shè)計(jì)函數(shù)digit(num,k),返回整數(shù)num從右邊開(kāi)始的第k位數(shù)字的值。例如:
digit(4647,3)=6
digit(23523,7)=0
#include<iostream>
usingnamespacestd;
intmain()
(
intdigit(intnum,intk);
intnum,k;
cout<<”請(qǐng)輸入一個(gè)正整數(shù)及所求位數(shù)Lvvendl;
cin?num?k;
出結(jié)果
cout?digit(num/k)?endl;//$fe
return0;
}
intdigit(intnumjntk)
(
inta=l,b=l,i,j;
for(i=l;i<=k-l;i++)
a=a*10;
for(i=l;i<=k;i++)
b=b*10;
j=(num/a)-10*(num/b);
returnj;
3.4設(shè)計(jì)函數(shù)factors(num,k),返回整數(shù)num中包含因子k的個(gè)數(shù),如果沒(méi)有該因子,則
返回0。
#include<iostream>
usingnamespacestd;
intmain()
(
intfactors(intnumjntk);
intnum,k;
coutcv"請(qǐng)輸入一-個(gè)整數(shù)及所求因子"<<endl;
cin?num?k;
cout?factors(num,k)?endl;
return0;
)
intfactors(intnumjntk)
(
intn=0;
while(num%k==0)
(
n=n+l;
k=k*k;
)
returnn;
}
3.5歌德巴赫猜想指出:任何一個(gè)充分大的偶數(shù)都可以表示為兩個(gè)素?cái)?shù)之和。例如:
4=2+26=3+38=3+5......50=3+47
將4~50之間的所有偶數(shù)用兩個(gè)素?cái)?shù)之和表示。判斷一個(gè)整數(shù)是否為素?cái)?shù)用函數(shù)完成。
/*歌德巴赫猜想指出:任何一個(gè)充分大的偶數(shù)都可以表示為兩個(gè)素?cái)?shù)之和。例如:
4=2+26=3+38=3+5......50=3+47
將4~50之間的所有偶數(shù)用兩個(gè)素?cái)?shù)之和表示。判斷?個(gè)整數(shù)是否為素?cái)?shù)用函數(shù)完成。
*/
#include<iostream>
usingnamespacestd;
intmain()
(
intfun(intx);〃聲明判斷素?cái)?shù)的函數(shù)
inti,j,k;
for(i=4;i<=50;i=i+2)
(
for(j=l;j<=50;j++)
{
if(fun(j)==l)〃代表j為素?cái)?shù)
(
for(k=j;k<=50;k++)
|
if(fun(k)==l)
(
if(i==j+k)
cout?i?"="?j?"+"?k?endl;
)
}
)
)
return0;
intfun(intx)〃判斷素?cái)?shù)的函數(shù)
(
inti,y;
if(x<=l)
y=o;
else
(
y=i;
for(i=2;i<x;i++)
(
if(x%i==0)
(
y=o;
break;
)
)
)
returny;
}
習(xí)題4
4.1引用作為函數(shù)參數(shù)時(shí)為什么能實(shí)現(xiàn)兩個(gè)實(shí)參之間的數(shù)據(jù)交換?為什么對(duì)應(yīng)實(shí)參不能為
引用?為什么返回值為引用的函數(shù)可以作為左值?
答:
因?yàn)楫?dāng)函數(shù)參數(shù)為實(shí)參的引用時(shí),實(shí)際上是將賣參的地址待的給了形
參,它們共用同一個(gè)地址,所以當(dāng)形參改變時(shí),實(shí)參之間的數(shù)據(jù)也歡
變了;
因?yàn)橐貌皇且环N獨(dú)立的數(shù)據(jù)類型,所以對(duì)應(yīng)實(shí)參不能為引用;
因?yàn)橐门c變量共用相同的內(nèi)存空間,當(dāng)返回值為引用時(shí),實(shí)際上就
是返回的變量的值。
4.2構(gòu)造一個(gè)日期時(shí)間類(Timedate),數(shù)據(jù)成員包括年、月、日和時(shí)、分、秒,函數(shù)成
員包括設(shè)置日期時(shí)間和輸出時(shí)間,其中年、月請(qǐng)用枚舉類型,并完成測(cè)試。(包括用成員函
數(shù)和用普通函數(shù))
include<iostream>
include<iomanip>
usingnamespacestd;
enumyear{Y2000,Y2001,Y2002,Y2003,Y2004,Y2005,Y2006,Y2007,Y2008,Y2009,Y2010,Y2011};〃
enummonth{Jan,Feb,Mai;Api;May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};
classTimedate
(
private:
yearY;
monthM;
intD,H,Min,S;
public:
Timedate()
(
Y=Y2O11;
M=Jan;
D=l;
H=0;
Min=0;
S=0;
};
voidset(yeara,monthb,intc,intd,inte,intf)
(
Y=a;
M=b;
D=c;
H=d;
Min=e;
s=f;
);
voidshow()
(
cout<<"日期:\n”;
switch(Y)
caseY2000:cout?"2000年”;break;
caseY2001:cout?"2001年”;break;
caseY2002:cout?"2002年”;break;
caseY2003:cout?"2003年”;break;
caseY2004:cout?"2004年”;break;
caseY2005:cout?"2005年”;break;
caseY2006:cout?"2006年”;break;
caseY2007:cout?"2007年";break;
caseY2008:cout?H2008年”;break;
caseY2009:cout?"2009年”;break;
caseY2010:cout?"2010年”;break;
caseY2011:cout?"2011年”;break;
)
switch(M)
(
caseJan:cout?"l月”;break;
caseFeb:cout?"2月”;break;
caseMar:cout?H3月”;break;
caseApr:cout?"4月”;break;
caseMay:cout?"5月";break;
caseJun:cout?"6月”;break;
caseJul:cout?"7月”;break;
caseAug:cout?"8月";break;
caseSep:cout?"9月";break;
caseOct:cout?"10月";break;
caseNov:cout?"ll月";break;
caseDec:cout?"12月”;break;
)
cout<<D<<"曰\n”;
cout<<”時(shí)間:\n“
<<H<<“時(shí)”
<<Min<<“分"
秒”;
cout?endl;
);
voidget(year&a,month&b,int&cjnt&d,int&e,int&f)
(
a=Y;
b=M;
c=D;
d=H;
e=Min;
f=s;
);
);
voidshow(Timedatea)
yearY;
monthM;
intD,H,Min,S;
a.get(YM,D,H,Min,S);
cout<<<舊期:\n”;
switch(Y)
(
caseY2000:cout?n2000年”;break;
caseY2001:cout?"2001年”;break;
caseY2002:cout?"2002年”;break;
caseY2003:cout?"2003年”;break;
caseY2004:cout?"2004年”;break;
caseY2005:cout?"2005年”;break;
caseY2006:cout?"2006年”;break;
caseY2007:cout?n2007年”;break;
caseY2008:cout?"2008年”;break;
caseY2009:cout?"2009年”;break;
caseY2010:cout?"2010年”;break;
caseY2011:cout?"2011年”;break;
)
switch(M)
(
caseJan:cout?"l月";break;
caseFeb:cout?*'2月”;break;
caseMar:cout?"3月";break;
caseApr:cout?"4月”;break;
caseMay:cout?"5月";break;
caseJun:cout?"6月”;break;
caseJul:cout?"7月”;break;
caseAug:cout?"8月”;break;
caseSep:cout?"9月”;break;
case0ct:cout?"10月”;break;
caseNov:cout?"ll月”;break;
caseDec:cout?"12月";break;
)
cout?D?"H\n";
cout<<“時(shí)間:\n“
時(shí),,
“分"
v<S<<“秒”;
cout?endl;
intmain()
(
Timedater;
r.setfYZOl^Apcl,14,30,50);
r.show();
show(r);
r.set(Y2010,Jun,8,1,50,00);
r.show();
show(r);
return0;
)
4.3設(shè)計(jì)并測(cè)試一個(gè)矩形類(Rectangle),屬性為矩形的左下與右上角的坐標(biāo),矩形水平
放置。操作為計(jì)算矩形周長(zhǎng)與面積。測(cè)試包括用成員函數(shù)和普通函數(shù)。
#include<iostream>
usingnamespacestd;
classRectangle
(
private:
intxl,x2,yl,y2;
public:
Rectangle()
(
cout<<"請(qǐng)輸入左下角和右上角的坐標(biāo):"<<endl;
cin?xl?yl?x2?y2;
);
intgetleftx()
(
returnxl;
);
intgetlefty()
(
returnyl;
);
jntgetrightx()
(
returnx2;
};
intgetrighty()
(
returny2;
);
intcircumference?!ǔ蓡T函數(shù)
return2*(x2-xl+y2-yl);
);
doublearea()
(
doubles;
s=(double)(x2-xl)*(y2-yl);
returns;
);
};
intcir(intxl,intyljntx2,inty2)〃普通函數(shù)
(
intc;
c=2*(x2-xl+y2-yl);
returnc;
}
doublear(intxl,intyljntx2Jnty2)
(
doubles;
s=(double)(x2-xl)*(y2-yl);
returns;
}
intmain()
(
Rectangler;
intc;
doubles;
c=r.circumference();〃調(diào)用成員函數(shù)
s=r.area();
cout<<“周長(zhǎng)為“<<c<<endl;
cout<<"面積為”<<s?endl;
intxl,x2,yl,y2;
xl=r.getleftx();
x2=r.getrightx();
yl=r.getlefty();
y2=r.getrighty();
c=cir(xl/yl,x2/y2);
s=ar(xl/yl,x2,y2);
cout<<“周長(zhǎng)為"<<c?endl;
cout<<”面積為“<<s?endl;
return0;
作業(yè)5
6.定義一個(gè)圓類(Circle),屬性為半徑(radius)、圓周長(zhǎng)和面積,操作為輸入半徑并計(jì)算周
長(zhǎng)、面積,輸出半徑、周長(zhǎng)和面積。要求定義構(gòu)造函數(shù)(以半徑為參數(shù),缺省值為0,周長(zhǎng)
和面積在構(gòu)造函數(shù)中生成)和拷貝構(gòu)造函數(shù)。
#include<iostream>
#defineP3.1415926
usingnamespacestd;
classCircle
(
private:
doubleGC,S;
public:
Circle(doubler=0)〃缺省構(gòu)造函數(shù)
(
c=2*P*r;
s=p*r*4;
);
voidshow(void)
(
cout<<“周長(zhǎng)為“<?<<endl
<<“面積為"<<s<<endl;
);
Circle(Circle&p)〃拷貝構(gòu)造函數(shù)
(
r=p.r;
c=p.c;
s=p.s;
);
);
intmain()
(
doubler;
cout<<"請(qǐng)輸入半徑:"<<endl;
cin?r;
CircleR(r);
R.show();
CircleC(R);
C.show();
return0;
7.定義一個(gè)字符棧類Stack(包括類的實(shí)現(xiàn))。數(shù)據(jù)成員包括?個(gè)存放字符的數(shù)組stck口和一
個(gè)棧指針tos。棧數(shù)組的尺寸由常量SIZE確定。棧的基本操作為Push。和Pop。。
#include<iostream>
usingnamespacestd;
constintSIZE=25;
classStack
(
private:
charstck[SIZE];
inttos;
public:
Stack():tos(0){};
voidPush(charch)
(
if(tos==SIZE)
cout?"\nStackisfull\n";
else
(
stck[tos]=ch;
tos++;
)
};
charPop()
(
if(tos==0)
(
cout?"\nStackisempty\n";
return0;
)
tos-;
returnstck[tos];
};
);
intmain()
(
StackS;
charc[100];
inti,n;
cout?"Pleaseinputthestring:\n";
cin?c;
for(i=0;i<100;i++)
if(c[i]=='\O')
(
n=i;
break;
)
)
S.Pop();
for(i=0;i<n;i++)
S.Push(c[i]);
return0;
習(xí)題6
L建立具有下列功能的類Date:
a)以多種格式輸出日期,如:
DDDYYYY
MM/DD/YY
June14,1992
b)用重載的構(gòu)造函數(shù)初始化Date類的對(duì)象。初始化值是a)中格式的數(shù)據(jù)。
c)構(gòu)造函數(shù)用頭文件time.h中的標(biāo)準(zhǔn)庫(kù)函數(shù)讀取系統(tǒng)的時(shí)間,把讀取的時(shí)間賦給Date的數(shù)
據(jù)成員。
#include<iostream>
#include<time.h>
usingnamespacestd;
classDate
(
private:
public:
)
intmain()
(
return0;
習(xí)題7
1.定義一個(gè)復(fù)數(shù)類Complex,重載運(yùn)算符“+”,使之能用于復(fù)數(shù)的加法運(yùn)算。將運(yùn)算符函數(shù)
重載為非成員、非友元的普通函數(shù)。編寫程序,求兩個(gè)復(fù)數(shù)之和。
#include<iostream>
usingnamespacestd;
classComplex
(
private:
doubler,i;
public:
Complex(doublea=0,doubleb=0)
(
r=a;
i=b;
);
voidset(doublea,doubleb)
(
r=a;
i=b;
);
voidshow()
(
if(i==0)
cout?r;
else
(
if(r==O)
cout?i?"i"?endl;
else
cout?r?"+"?i?,,i";
)
};
doublegetr()
(
returnr;
);
doublegeti()
(
returni;
);
};
Complexoperator+(Complex&cl,Complex&c2)
doublerj,rl,r2,il,i2;
rl=cl.getr();
il=cl.geti();
r2=c2.getr();
i2=c2.geti();
r=rl+r2;
i=il+i2;
Complexc(r,i);
returnc;
};
intmain()
(
doubleal,a2,bl,b2;
cout<<"請(qǐng)輸入第一個(gè)復(fù)數(shù):"<<endl;
cin?al?bl;
Complexcl(alzbl)zc2zc;
coukv”請(qǐng)輸入第二個(gè)復(fù)數(shù):"<<endl;
cin?a2?b2;
c2.set(a2,b2);
c=cl+c2;
cout?"('';cl.show();cout?',)+('*;c2.show();cout?")=";c.show();cout?endl;
return0;
)
2.定義一個(gè)復(fù)數(shù)類Complex,重載運(yùn)算符“+「7”,使之能用于復(fù)數(shù)的加、減、
乘、除。運(yùn)算符重載函數(shù)作為Complex類的成員函數(shù)。編程序,分別求兩個(gè)復(fù)數(shù)之和、差、
積和商。
#include<iostream>
usingnamespacestd;
classComplex
(
private:
doubleGi;
public:
Complex(doublea=0,doubleb=0)
(
r=a;
i=b;
);
voidset(doublea,doubleb)
r=a;
i=b;
);
voidshow()
(
if(i==0)
cout?r;
else
(
if(r==O)
cout?i?"i"?endl;
else
cout?r?"+"?i?"i";
)
);
Complexoperator+(Complex&cl);
Complexoperator-(Complex&cl);
Complexoperator*(Complex&cl);
Complexoperator/(Complex&cl);
);
ComplexComplex::operator+(Complex&cl)
(
Complexc;
c.r=r+cl.r;
c.i=i+cl.i;
returnc;
);
ComplexComplex::operator-(Complex&cl)
(
Complexc;
c.r=r-cl.r;
c.i=i-cl.i;
returnc;
);
ComplexComplex::operator*(Complex&cl)
(
Complexc;
c.r=r*cl.r-i*cl.i;
c.i=r*cl.i+i*cl.r;
returnc;
);
ComplexComplex::operator/(Complex&cl)
Complexc;
c.r=(r*cl.r+i*cl.i)/(cl.i*cl.i+cl.r*cl.i);
c.r=(i*cl.r-r*cl.i)/(cl.i*cl.i+cl.r*cl.i);
returnc;
);
intmain()
(
doubleal,a2,bl,b2;
cout<<"請(qǐng)輸入第一個(gè)復(fù)數(shù):"?endl;
cin?al?bl;
Complexcl(al,bl),c2,c3,c4,c5,c6;
cout<<”請(qǐng)輸入第二個(gè)復(fù)數(shù):"號(hào)endl;
cin?a2?b2;
c2.set(a2,b2);
c3=cl+c2;
c4=cl-c2;
c5=cl*c2;
c6=cl/c2;
cout?"(H;cl.show();cout?,,)+(";c2.show();cout?")=";c3.show();cout?endl;
cout?"('';cl.show();cout?")-(',;c2.show();cout?")=";c4.show();cout?endl;
cout?"('';cl.show();cout?")*(,,;c2.show();cout?")=";c5.show();cout?endl;
cout?"(";cl.show();cout?,,)/(";c2.show();cout?")=";c6.show();cout?endl;
return0;
)
3,定義一個(gè)復(fù)數(shù)類Complex,重載運(yùn)算符“+”,使之能用于復(fù)數(shù)的加法運(yùn)算。參加運(yùn)算的兩
個(gè)運(yùn)算量可以都是類對(duì)象,也可以其中有一個(gè)是整數(shù),順序任意。例如:
cl+c2J+cl,cl+i
均合法(設(shè)i為整數(shù),cl,c2為復(fù)數(shù))。編程序,分別求兩個(gè)復(fù)數(shù)之和、整數(shù)和復(fù)數(shù)之和。
#include<iostream>
usingstd::cout;
usingstd::cin;
usingstd::endl;
classComplex
(
private:
doubler,i;
public:
Complex(doublea=0,doubleb=0)
r=a;
i=b;
);
voidset(doublea,doubleb)
(
r=a;
i=b;
);
voidshow()
{
if(i==0)
cout?r;
else
(
if(r==O)
cout?i?Hi"?endl;
else
)
);
Complexoperator+(Complex&cl);
Complexoperator+(inta);
friendComplexoperator+(intazComplex&cl);
);
ComplexComplex::operator+(Complex&cl)
(
Complexc;
c.r=r+cl.r;
c.i=i+cl.i;
returnc;
};
ComplexComplex::operator+(inta)
(
Complexc;
c.i=i;
c.r=r+a;
returnc;
);
Complexoperator+(inta,Complex&cl)
(
Complexc;
c.i=cl.i;
c.r=cl.r+a;
returnc;
);
intmain()
(
doubleal,a2,bl,b2;
coutv<”請(qǐng)輸入第一個(gè)復(fù)數(shù):"<<endl;
cin?al?bl;
Complexcl(aLbl),c2,c3,c4,c5;
cout<<”請(qǐng)輸入第二個(gè)復(fù)數(shù):"<<endl;
cin?a2?b2;
c2.set(a2,b2);
c3=cl+c2;
cout?"(',;cl.show();cout?")+(";c2.show();cout?")=";c3.show();cout?endl;
cout<<”請(qǐng)輸入一個(gè)整數(shù):"<<endl;
inta;
cin?a;
c4=cl+a;
cout?"(',;cl.show();cout?")+,,?a?"=";c4.show();cout?endl;
c5=a+c2;
cout?a?,,+(";c2.show();cout?")=";c5.show();cout?endl;
return0;
);
4.有兩個(gè)矩陣a和b,均為2行3歹lj。求兩個(gè)矩陣之和。重載運(yùn)算符“+”,使之能用于矩陣
相加。如:c=a+bo
#include<iostream>
usingstd::cout;
usingstd::cin;
usingstd::endl;
classJuzhen
(
private:
intm[2][3];
public:
Juzhen()
(
inti,j;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
m[i][j]=0;
};
voidset()
(
cout<<"請(qǐng)輸入矩陣:"<<endl;
inti,j;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
cin?m[i][j];
}
};
voiddisplay()
(
inti,j;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
cout?m[i][j]?"\t";
cout?endl;
)
};
friendJuzhenoperator+(Juzhen&jl,Juzhen&j2);
};
Juzhenoperator+(Juzhen&a,Juzhen&b)
(
inti,j;
Juzhenc;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
c.m[i][j]=a.m[i][j]+b.m[i][j];
}
returnc;
};
intmain()
(
Juzhena,b,c;
a.set();
b.set();
c=a+b;
c.display));
return0;
};
5.在第4題的基礎(chǔ)匕重載流插入運(yùn)算符“<<”和流提取運(yùn)算符“>>”,使之能用于該矩陣
的輸入和輸出。
#include<iostream.h>
classJuzhen
(
private:
intm[2][3];
public:
Juzhen()
(
inti,j;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
m[i][j]=O;
}
};
friendJuzhenoperator+(Juzhen&jl,Juzhen&⑵;
friendostream&operator?(ostream&Juzhen&);
friendistream&operator?(istream&Juzhen&);
};
Juzhenoperator+(Juzhen&a,Juzhen&b)
(
inti,j;
Juzhenc;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
c.m[i][j]=a.m[i][j]+b.m[i][j];
}
returnc;
};
ostream&operator?(ostream&out,Juzhen&a)
(
inti,j;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
cout?a.m[i][j]?"\t";
cout?endl;
)
returnout;
);
istream&operator?(istream&in,Juzhen&a)
(
cout<<"請(qǐng)輸入矩陣:"<<endl;
intij;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
cin?a.m[i][j];
)
returnin;
};
intmain()
(
Juzhena,b,c;
cin?a?b;
cout?"Juzhena"?endl?a
?"Juzhenb"?endl?b;
c=a+b;
cout?"Juzhenc=Juzhena+Juzhenb="?endl?c;
return0;
)
6.請(qǐng)編寫程序,處理一個(gè)復(fù)數(shù)與一個(gè)double數(shù)相加的運(yùn)算,結(jié)果存放在一個(gè)double型的變
量dl中,輸HIa的值,再以復(fù)數(shù)形式輸出此值。定義Complex(復(fù)數(shù))類,在成員函數(shù)中包
含重載類型轉(zhuǎn)換運(yùn)算符:operatordouble(){returnreal;}
#include<iostream>
usingnamespacestd;
classComplex
(
private:
doublereal,image;
public:
Complex(doublea=0,doubleb=0)
(
real=a;
image=b;
};
operatordouble()
returnreal;
);
voiddisplay()
(
if(image==0)
cout?real;
else
(
if(real==O)
cout?image?"i"?endl;
else
cout?real?"+"?image?"i";
)
cout?endl;
);
);
intmain()
(
doublea,b,c,d;
cout<<”請(qǐng)輸入一個(gè)復(fù)數(shù):"<<endl;
cin?a?b;
Complexcl(a,b),c2;
cout<v"請(qǐng)輸入一個(gè)double數(shù):"<<endl;
cin?c;
d=c+cl;
cout?"d="?d?endl;
c2=Complex(d);
cout?"c2=";
c2.display();
return0;
)
7.定義一個(gè)Teacher(教師)類和一個(gè)Student(學(xué)生)類,二者有一部分?jǐn)?shù)據(jù)成員是相同的,例如
num(號(hào)碼),name(姓名),sex(性別)。編寫程序,將?個(gè)Student對(duì)象(學(xué)生)轉(zhuǎn)換為Teacher(教
師)類,只將以上3個(gè)相同的數(shù)據(jù)成員移植過(guò)去??梢栽O(shè)想為:一位學(xué)生大學(xué)畢業(yè)了,留校
擔(dān)任教師,他原有的部分?jǐn)?shù)據(jù)對(duì)現(xiàn)在的教師身份來(lái)說(shuō)仍然是有用的,應(yīng)當(dāng)保留并成為其教師
的數(shù)據(jù)的一部分。
#include<iostream>
usingnamespacestd;
classStudent
(
private:
intnum;
charname[20];
charsex;
doublescore;
public:
Student(int,char[]/char;float);
intget_num()
(
returnnum;
);
char*get_name()
(
returnname;
);
charget_sex()
(
returnsex;
};
voiddisplay()
(
cout<<“num:“<<num<<”\nname:“<<name<<"\nsex:“<<sex<<”\nscore:"<<score<<"\n\n”;
};
);
Student::Student(intn,charnam[],charsjloatso)
(
num=n;
strcpy(name,nam);
sex=s;
score=so;
)
classTeacher
(
private:
intnum;
charname[20];
charsex;
doublepay;
public:
Teacher(){};
Teacher(Student&);
Teacher(intnzcharnam[],charsexjloatpay);
voiddisplay();
);
Teacher::Ieacher(intn,charnam[],charsjloatp)
(
num=n;
strcpy(name,nam);
sex=s;
pay=p;
};
Teacher::Teacher(Student&stud)
(
num=stud.get_num();
strcpy(name,stud.get_name());
sex=stud.get_sex();
pay=1500;
};
voidTeacher::display()
(
cout<<“num:“<<num<<”\nname:"<<name<<"\nsex:"<<sex<<"\npay:“<<pay<<”\n\n”;
);
intmain()
(
,
Teacherteacherl(10001/"Li"/f'z1234.5)/teacher2;
StudentstudentlfZOOlO/'Wang'Vm'^g.S);
cout?"studentl:"?endl;
studentl.display();
teacher2=Teacher(studentl);
cout?"teacher2:"?endl;
teacher2.display();
return0;
)
習(xí)題8
1.定義一個(gè)字符棧類Stack(包括類的實(shí)現(xiàn))。數(shù)據(jù)成員包括一個(gè)存放字符的數(shù)組stck口和?
個(gè)棧指針tos。棧數(shù)組的尺寸由常量SIZE確定。棧的基本操作為Push()和Pop()。
#include<iostream>
usingnamespacestd;
constintSIZE=25;
classStack
private:
charstck[SIZE];
inttos;
public:
Stack():tos(0){};
voidPush(charch)
(
if(tos==SIZE)
cout?"\nStackisfull\n";
else
(
stck[tos]=ch;
tos++;
)
};
charPop()
(
if(tos==0)
(
cout?"\nStackisempty\n";
return0;
)
tos-;
returnstck[tos];
};
);
intmain()
(
StackS;
charc[100];
inti,n;
cout?"Pleaseinputthestring:\n";
cin?c;
for(i=0;i<100;i++)
(
if(c[i]=='\0')
(
n=i;
break;
)
)
S.Pop();
for(i=0;i<n;i++)
S.Push(c[i]);
return0;
)
習(xí)題十
1.創(chuàng)建一個(gè)類,具有public、private和protected數(shù)據(jù)成員和函數(shù)成員。創(chuàng)建該類的個(gè)
對(duì)象,看看試圖存取所有的類成員時(shí)會(huì)得到一些什么信息。編寫一個(gè)全局friend函數(shù)來(lái)訪問(wèn)
該類的私有數(shù)據(jù)成員。
#include<iostream>
usingnamespacestd;
classcomplex
(
public:
complex()
(
a=0;
b=l;
c=2;
);
inta;
voidA()
{
cout?a?endl;
);
friendvoidset(complex&o,intx=0,inty=O,intz=0);
voidshow()
(
cout<<”a,b,c="<<endl;
A();
B();
C();
);
private:
intb;
voidB()
(
cout?b?endl;
);
protected:
intc;
voidC()
cout?c?endl;
);
);
voidset(complex&ojntx,intyjntz)
(
o.a=x;
o.b=y;
o.c=z;
);
/*
voidfun(complex&o,intx,intyjntz)
(
o.a=x;
o.b=y;
o.c=z;
);7
intmain()
(
complext;
t.show();
//fun(t,2,5,8);
//t.show();
set(t,4,7,6);
t.show();
return0;
}
2.創(chuàng)建一個(gè)沒(méi)有任何構(gòu)造函數(shù)的類,顯示可以用缺省的構(gòu)造函數(shù)創(chuàng)建對(duì)象。然后為該類創(chuàng)
建一個(gè)非缺省的構(gòu)造函數(shù)(帶一個(gè)參數(shù)),試著再編譯一次,解釋發(fā)生的現(xiàn)象。
#include<iostream>
usingnamespacestd;
classcomplex
(
public:
complex(inta);
voidshow()
cout<<"可以用缺省的構(gòu)造函數(shù)創(chuàng)建對(duì)象々endl;
);
);
intmain()
complexc;
c.show();
return0;
)
3.建立一-個(gè)類,該類包含const成員函數(shù)和非const成員函數(shù),然后建立這個(gè)類的const
和非const對(duì)象。分別為這兩種類型的對(duì)象調(diào)用兩種成員函數(shù),解釋發(fā)生的現(xiàn)象。
#include<iostream>
usingnamespacestd;
classcomplex
(
private:
inta;
public:
complex(intx=0)
(
a=x;
};
intget()const
(
returna;
);
voidset(intx)
(
a=x;
);
);
intmain()
(
comp
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 模擬考試練習(xí)用卷
- 小學(xué)樂(lè)理模擬試卷
- 學(xué)會(huì)自我保護(hù)與安全意識(shí)的養(yǎng)成
- 小學(xué)戶外活動(dòng)安全威脅問(wèn)答
- 高中生物競(jìng)賽考試模擬試卷
- 細(xì)木工帶鋸機(jī) 術(shù)語(yǔ)和精度 編制說(shuō)明
- 公司年產(chǎn)4000噸蘇蕓金芽孢桿菌殺蟲(chóng)粉劑可行性研究報(bào)告
- 北京市委托合同(3篇)
- 本科計(jì)算機(jī)專業(yè)實(shí)習(xí)報(bào)告
- 畢業(yè)感言800字(30篇)
- 中小學(xué)英語(yǔ)教師中高級(jí)職稱講課答辯題目
- 初中化學(xué)《我們周圍的空氣》大單元教學(xué)設(shè)計(jì)
- 腎內(nèi)科疑難病例討論血栓性微血管病
- 康復(fù)醫(yī)學(xué)科康復(fù)治療臨床技術(shù)操作規(guī)范(2021年版)-物理因子治療
- 個(gè)人購(gòu)買家具家電合同范本
- 食堂異物處置方案
- 律師的職業(yè)道德執(zhí)業(yè)規(guī)范與執(zhí)業(yè)風(fēng)險(xiǎn)防范
- 四年級(jí)心理健康教學(xué)課件-第8課-老師眼里的我
- DB32T 4252-2021民用建筑燃?xì)獍踩?guī)范
- 180納米邏輯芯片制造流程
- 桂工10級(jí)資勘優(yōu)秀灌陽(yáng)實(shí)習(xí)報(bào)告
評(píng)論
0/150
提交評(píng)論