版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章
概述
i-i簡(jiǎn)述計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展歷程。
解:
迄今為止計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展經(jīng)歷了機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言等階段,C++語(yǔ)
言是一種面向?qū)ο蟮木幊陶Z(yǔ)言,也屬于高級(jí)語(yǔ)言。
1-2面向?qū)ο蟮木幊陶Z(yǔ)言有哪些特點(diǎn)?
解:
面向?qū)ο蟮木幊陶Z(yǔ)言與以往各種編程語(yǔ)言有根本的不同,它設(shè)計(jì)的出發(fā)點(diǎn)就是為了能更直接
的描述客觀世界中存在的事物以及它們之間的關(guān)系。面向?qū)ο蟮木幊陶Z(yǔ)言將客觀事物看作具
有屬性和行為的對(duì)象,通過(guò)抽象找出同一類對(duì)象的共同屬性(靜態(tài)特征)和行為(動(dòng)態(tài)特征),
形成類。通過(guò)類的繼承與多態(tài)可以很方便地實(shí)現(xiàn)代碼重用,大大縮短了軟件開(kāi)發(fā)周期,并使
得軟件風(fēng)格統(tǒng)一。因此,面向?qū)ο蟮木幊陶Z(yǔ)言使程序能夠比較直接地反問(wèn)題域的本來(lái)面目,
軟件開(kāi)發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方法來(lái)進(jìn)行軟件開(kāi)發(fā)。C++語(yǔ)言是H
前應(yīng)用最廣的面向?qū)ο蟮木幊陶Z(yǔ)言。
1-3什么是結(jié)構(gòu)化程序設(shè)計(jì)方法?這種方法有哪些優(yōu)點(diǎn)和缺點(diǎn)?
解:
結(jié)構(gòu)化程序設(shè)計(jì)的思路是:白頂向下、逐步求精;其程序結(jié)構(gòu)是按功能劃分為若干個(gè)基本模
塊;各模塊之間的關(guān)系盡可能簡(jiǎn)單,在功能上相對(duì)獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和
循環(huán)三種基本結(jié)構(gòu)組成;其模塊化實(shí)現(xiàn)的具體方法是使用子程序。結(jié)構(gòu)化程序設(shè)計(jì)由于采用
了模塊分解與功能抽象,自頂向下、分而治之的方法,從而有效地將一個(gè)較復(fù)雜的程序系統(tǒng)
設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開(kāi)發(fā)和維護(hù)。
雖然結(jié)構(gòu)化程序設(shè)計(jì)方法具有很多的優(yōu)點(diǎn),但它仍是一種面向過(guò)程的程序設(shè)計(jì)方法,它把數(shù)
據(jù)和處理數(shù)據(jù)的過(guò)程分離為相互獨(dú)立的實(shí)體。當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過(guò)程都要
進(jìn)行相應(yīng)的修改,每一種相對(duì)于老問(wèn)題的新方法都要帶來(lái)額外的開(kāi)銷,程序的可重用性差。
由于圖形用戶界面的應(yīng)用,程序運(yùn)行由順序運(yùn)行演變?yōu)槭录?qū)動(dòng),使得軟件使用起來(lái)越來(lái)越
方便,但開(kāi)發(fā)起來(lái)卻越來(lái)越困難,對(duì)這種軟件的功能很難用過(guò)程來(lái)描述和實(shí)現(xiàn),使用面向過(guò)
程的方法來(lái)開(kāi)發(fā)和維護(hù)都將非常困難。
1-4什么是對(duì)象?什么是面向?qū)ο蠓椒??這種方法有哪些特點(diǎn)?
解:
從一般意義上講,對(duì)象是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物,它可以是有形的,也可以是無(wú)形
的。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。面向?qū)ο蠓椒ㄖ?/p>
的對(duì)象,是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是用來(lái)構(gòu)成系統(tǒng)的一個(gè)基本單位,由一
組屬性和一組行為構(gòu)成。
面向?qū)ο蟮姆椒▽?shù)據(jù)及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存、不可分離的整體
-對(duì)象。對(duì)同類型對(duì)象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行
處理。類通過(guò)一個(gè)簡(jiǎn)單的外部接口,與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通訊。
這樣,程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。
通過(guò)實(shí)現(xiàn)繼承與多態(tài)性,還可以大大提高程序的可重用性,使得軟件的開(kāi)發(fā)和維護(hù)都更為方
便。
面向?qū)ο蠓椒ㄋ鶑?qiáng)調(diào)的基本原則,就是直接面對(duì)客觀存在的事物來(lái)進(jìn)行軟件開(kāi)發(fā),將人們?cè)?/p>
日常生活中習(xí)慣的思維方式和表達(dá)方式應(yīng)用在軟件開(kāi)發(fā)中,使軟件開(kāi)發(fā)從過(guò)分專業(yè)化的方
法、規(guī)則和技巧中回到客觀世界,回到人們通常的思維。
1-5什么叫做封
裝?
解:
封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要原則,就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單
位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。
1-6面向?qū)ο蟮能浖こ贪男┲饕獌?nèi)容?
解:
面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用,它包括面向?qū)ο蟮姆治?/p>
(00A)、面向?qū)ο蟮脑O(shè)計(jì)(00D)、面向?qū)ο蟮木幊蹋∣OP)、面向?qū)ο蟮臏y(cè)試(00T)和
面向?qū)ο蟮能浖S護(hù)(OOSM)等主要內(nèi)容。
1-7簡(jiǎn)述計(jì)算機(jī)內(nèi)部的信息可分為兒類?
解:
計(jì)算機(jī)內(nèi)部的信息可以分成控制信息和數(shù)據(jù)信息二大類;控制信息可分為指令和控制字兩
類;數(shù)據(jù)信息可分為數(shù)值信息和非數(shù)值信息兩類。
1-8什么叫二進(jìn)制?使用二進(jìn)制有何優(yōu)點(diǎn)和缺點(diǎn)?
解:
二進(jìn)制是基數(shù)為2,每位的權(quán)是以2為底的鼎的進(jìn)制,遵循逢二進(jìn)一原則,基本符號(hào)為0
1。采用二進(jìn)制碼表示信息,有如下幾個(gè)優(yōu)點(diǎn):1.易于物理實(shí)現(xiàn);2.二進(jìn)制數(shù)運(yùn)算簡(jiǎn)單;;嘿
3.機(jī)器可靠性高;4.通用性強(qiáng)。其缺點(diǎn)是它表示數(shù)的容量較小,表示同一個(gè)數(shù),二進(jìn)制較其
他進(jìn)制需要更多的位數(shù)。
1-9請(qǐng)將以下卜進(jìn)制數(shù)值轉(zhuǎn)換為二進(jìn)制和十六進(jìn)制補(bǔ)碼:
(1)2(2)9(3)93
(4)-32(5)65535(6)-1
解:
(1)(2)10=(10)2=(2)16
(2)(9)10=(1001)2=(9)16
(3)(93)10=(1011101)2=(5D)16
(4)(-32)10=(11100000)2=(E0)16
(5)(65535)10=(1111111111111111)2=(FFFF)
16
(6)(-1)10=(1111111111111111)2=(FFFF)16
1-10請(qǐng)將以下數(shù)值轉(zhuǎn)換為十進(jìn)制:
(1)(1010)2(2)(10001111)2(3)(0101111111000011)
2
(4)(7F)16(5)(2D3E)16(6)(F10E)16
解:
(1)(1010)2=(10)10
(2)(10001111)2=(143)10
(3)(0101111111000011)2=(24515)10
⑷(7F)16=(127)10
(5)(2D3E)16=(11582)10
(6)(F10E)16=(61710)10
簡(jiǎn)要比較原碼、反碼、補(bǔ)碼等幾種編碼方法。
解:
原碼:將符號(hào)位數(shù)字化為0或1,數(shù)的絕對(duì)值與符號(hào)一起編碼,即所謂"符號(hào)一絕對(duì)值表
示"的編碼。
正數(shù)的反碼和補(bǔ)碼與原碼表示相同。
負(fù)數(shù)的反碼與原碼有如卜關(guān)系:
符號(hào)位相同(仍用1表示),其余各位取反(0變1,1變0)。
補(bǔ)碼由該數(shù)反碼的最末位加1求得。
第二C++簡(jiǎn)單程序設(shè)計(jì)
2-1C++語(yǔ)言有那些主要特點(diǎn)和優(yōu)點(diǎn)?
解:
C++語(yǔ)言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是全面兼容C.二是支持面向?qū)ο蟮姆椒?。C++是
一個(gè)更好的C,它保持了C的簡(jiǎn)潔、高效、接近匯編語(yǔ)言、具有良好的可讀性和可移植性
等特點(diǎn),對(duì)C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此C++比C更安全,C++的編譯系統(tǒng)能檢
查出更多的類型錯(cuò)誤。C++語(yǔ)言最重要的特點(diǎn)是支持面向?qū)ο蟆?/p>
2-2下列標(biāo)識(shí)符哪些是合法的?
Program,,Jock,test2,3inl,@mail,A_B_C_D
解:
Program,Jock,test2,A_B_C_D是合法的標(biāo)識(shí)符,其它的不是。
2-3例2.1中每條語(yǔ)句的作用是什么?
#include<iostream.h>
voidmain(void)
{
cout?',Hcllo!\nM;
cout?HWelcometoc++!\n";
解:
#include<iostream.h>//指示編譯器將文件iostream.h中的代碼
//嵌入到該程序中該指令所在的地方
voidmain?!ㄖ骱瘮?shù)名,void表示函數(shù)沒(méi)有返回值
{〃函數(shù)體標(biāo)志
cout?”HeHo!\n”;〃輸出字符串Hello!到標(biāo)準(zhǔn)輸出設(shè)備(顯示器)上。
cout?"Welcometoc++!\n";/腌出字符串WelcometoC-H-!
)
在屏幕輸出如下:
Hello!
Welcometoc+十!
2-4使用關(guān)鍵字const而不是#define語(yǔ)句的好處有哪些?
解:
const定義的常量是有類型的,所以在使用它們時(shí)編譯器可以杳錯(cuò);而且,這些變量在調(diào)試
時(shí)仍然是可見(jiàn)的。
2-5請(qǐng)寫(xiě)出C++語(yǔ)句聲明一個(gè)常量PL值為3.1416;再聲明一個(gè)浮點(diǎn)型變量a,把PI的值
賦給a。
解:
constfloatPI=3.1416;
floata=PI;
2-6在下面的枚舉類型中,Blue的值是多少?
enumCOLOR{WHITE.BLACK=100,RED,BLUE,GREEN=300};
解:
Blue=102
2-7注釋有什么作用?C++中有哪幾種注釋的方法?他們之間有什么區(qū)別?
解:
注釋在程序中的作用是對(duì)程序進(jìn)行注解和說(shuō)明,以便于閱讀。編譯系統(tǒng)在對(duì)源程序進(jìn)行編譯
時(shí)不理會(huì)注釋部分,因此注釋對(duì)于程序的功能實(shí)現(xiàn)不起任何作用。而且由于編譯時(shí)忽略注釋
部分,所以注釋內(nèi)容不會(huì)增加最終產(chǎn)生的可執(zhí)行程序的大小。適當(dāng)?shù)厥褂米⑨?,能夠提高?/p>
序的可讀性。在C++中,有兩種給出注釋的方法:一種是延用C語(yǔ)言方法,使用"/*"和"*/"
括起注釋文字。另一種方法是使用"〃",從"〃"開(kāi)始,直到它所在行的行尾,所有字符都被作
為注釋處理。
2-8什么叫做表達(dá)式?x=5+7是一個(gè)表達(dá)式嗎?它的值是多少?
解:
任何?個(gè)用于計(jì)算值的公式都可稱為表達(dá)式。x=5+7是個(gè)表達(dá)式,它的值為12。
2-9卜列表達(dá)式的值是多少?
1.201/4
2.201%4
3.201/4.0
解:
1.50
2.I
3.50.25
2-10執(zhí)行完下列語(yǔ)句后,a、b、c三個(gè)變量的值為多少?
a=30;
b=a++;
c=++a;
解:
a:32;b:30:c:32:
2-11在一個(gè)fbr循環(huán)中,可以初始化多個(gè)變量嗎?如何實(shí)現(xiàn)?
解:
在for循環(huán)設(shè)置條件的第一個(gè)”;”前,用,分隔不同的賦值表達(dá)式。
例如:
for(x=0,y=10;x<100;x++,y-H-)
2-12執(zhí)行完下列語(yǔ)句后,n的值為多少?
intn;
fbr(n=0;n<100;n++)
解:
n的值為100
2-13寫(xiě)一條for語(yǔ)句,計(jì)數(shù)條件為n從100至I」200,步長(zhǎng)為2;然后用while和do...while
語(yǔ)句完成同樣的循環(huán)。
解:
for循環(huán):
fbr(intn=100;n<=200;n+=2);
while循環(huán):
intx=100;
while(n<=200)
n+=2;
do...while循環(huán):
intn=100;
do
{
n+=2;
}while(n<=200);
2-14if(x=3)和if(x==3)這兩條語(yǔ)句的差別是什么?
解:
語(yǔ)句if(x=3)把3賦給x,賦值表達(dá)式的值為true,作為if語(yǔ)句的條件;語(yǔ)句if(x==3)首先
判斷x的值是否為3,若相等條件表達(dá)式的值為ture,否則為false。
2-15什么叫做作用域?什么叫做局部變量?什么叫做全局變量,如何使用全局變量?
解:
作用域是一個(gè)標(biāo)識(shí)符在程序正文中有效的區(qū)域。局部變量,一般來(lái)講就是具有塊作用域的變
量;全局變量,就是具有文件作用域的變量。
2-16已知x、y兩個(gè)變量,寫(xiě)一條簡(jiǎn)單的if語(yǔ)句,把較小的的值賦給原本值較大的變量。
解:
if(x>y)
x=y;
else//y>x||y==x
y=x;
2-17修改下面這個(gè)程序中的錯(cuò)誤,改正后它的運(yùn)行結(jié)果是什么?
#include<iostream.h>
voidmain()
inti
intj;
i=10;/*給i賦值
j=20;/*給j賦值*/
cout?Hi+j=?i+j;/*輸出結(jié)果?/
return0;
解:
改正:
#include<iostream.h>
intmain()
(
inti;
intj;
i=10;//給i賦值
j=20;/*給j賦值*/
cout?Hi+j="?i+j;/*輸出結(jié)果*/
return0;
}
程序運(yùn)行輸出:
i+j=30
2-18編寫(xiě)一個(gè)程序,運(yùn)行時(shí)提示輸入一個(gè)數(shù)字,再把這個(gè)數(shù)字顯示出來(lái)。
解:
源程序:
#include<iostream.h>
intmain()
(
inti;
coutw”請(qǐng)輸入?個(gè)數(shù)字:”;
cin?i;
coutw”您輸入?個(gè)數(shù)字是"wiwendl;
return0;
}
程序運(yùn)行輸出:
請(qǐng)輸入一個(gè)數(shù)字:5
您輸入?個(gè)數(shù)字是5
2-19C++有哪幾種數(shù)據(jù)類型?簡(jiǎn)述其值域。編程顯示你使用的計(jì)算機(jī)中的各種數(shù)據(jù)類型的字
節(jié)數(shù)。
解:
源程序:
//include<iostream.h>
intmain()
{
cout?”Thesizeofanintis:\t\t"?sizeofifint)?”bytes.\nM;
cout?"Thesizeofashortintis:\tn?sizeofifshort)?"bytes.\nM;
cout?"Thesizeofalongintis:\t"?sizeofiflong)?”bytes.\n";
cout?"Thesizeofacharis:\t\tH?sizeof^char)?“bytes.\rT;
cout?nThesizeofafloatis:\t\tM?sizeof(float)?'*bytes.\nH;
cout?"Thesizeofadoubleis:\tM?sizeofifdouble)?”bytes.\nM;
return0;
)
程序運(yùn)行輸出:
Thesizeofanintis:4bytes.
Thesizeofashortintis:2bytes.
Thesizeofalongintis:4bytes.
Thesizeofacharis:1bytes.
Thesizeofafloatis:4bytes.
Thesizeofadoubleis:8bytes.
2-20打印ASCII碼為32?127的字符。
解:
//include<iostream.h>
intmain()
(
for(inti=32;i<128;i++)
cout?(char)i;
return0;
程序運(yùn)行輸出:
!"#$%G'()*+,./0123456789:;o?@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\]A'abcdefghijkl
mnopqrstuvwxyz<|>~s
2-21運(yùn)行下面的程序,觀察其輸出,與你的設(shè)想是否相同?
#include<iostream.h>
intmain()
(
unsignedintx;
unsignedinty=100;
unsignedintz=50;
x=y-z;
cout?uDifferenceis:"?x;
x=z-y;
cout?"\nNowdifferenceis:"?x?endl;
return0;
解:
程序運(yùn)行輸出:
Differenceis:50
Nowdifferenceis:4294967246
注意,第:行的輸出并非-50,注意x、y、z的數(shù)據(jù)類型。
2-22運(yùn)行下面的程序,觀察其輸出,體會(huì)i++與++i的差別。
#include<iostream.h>
intmain()
{
intmyAge=39;//initializetwointegers
intyourAgc=39;
cout?nIam:"?myAge?”yearsold.\nu;
cout?"Youarc:"?yourAge?"yearsold\n";
myAge-H-;//postfixincrement
-H-yourAge;//prefixincrement
cout?"Oneyearpasses...\nH;
cout?"Iam:"?myAge?"yearsold.\n";
coutvv"Youare:M?yourAge?Hyearsold\nu;
cout?"Anotheryearpasscs\nn;
cout?"Iam:"?myAge++?”yearsold.\n";
cout?"Youarc:"?-H-yourAgc?”yearsold\nM;
cout?"Let'sprintitagain.\nM;
cout?"Iam:"?myAge?”yearsold.\n";
cout?"Youare:M?yourAge?Hyearsold\nM;
return0;
)
解:
程序運(yùn)行輸出:
Iam39yearsold
Youare39yearsold
Oneyearpasses
Iam40yearsold
Youare40yearsold
Anotheryearpasses
Iam40yearsold
Youare41yearsold
Lefsprintitagain
Iam41yearsold
Youare41yearsold
2-23什么叫常量?什么叫變量?
解:
所謂常量是指在程序運(yùn)行的整個(gè)過(guò)程中其值始終不可改變的量,除了用文字表示常量外,也
可以為常量命名,這就是符號(hào)常量;在程序的執(zhí)行過(guò)程中其值可以變化的量稱為變量,變量
是需要用名字來(lái)標(biāo)識(shí)的。
2-24變量有哪幾種存儲(chǔ)類型?
解:
變量有以下幾種存儲(chǔ)類型:
auto存儲(chǔ)類型:采用堆棧方式分配內(nèi)存空間,屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量
多次覆蓋使用;
register存儲(chǔ)類型:存放在通用寄存器中;
extern存儲(chǔ)類型:在所有函數(shù)和程序段中都可引用;
static存儲(chǔ)類型:在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效。
2-25寫(xiě)出下列表達(dá)式的值:
1.2V3&&6V9
2.!(4<7)
3.!(3>5)||(6<2)
1.true
2.false
3.true
2-26若a=1,b=2,c=3,下列各式的結(jié)果是什么?
1.a|b-c
2.aAb&-c
3.a&b|c
4.a|b&c
解:
1.-1
2.1
3.3
4.3
2-27若a=l,下列各式的結(jié)果是什么?
1.!a|a
2.?a|a
3.aAa
4.a?2
解:
1.1
2.-1
3.0
4.0
2-28編寫(xiě)一個(gè)完整的程序,實(shí)現(xiàn)功能:向用戶提問(wèn)"現(xiàn)在正在下雨嗎?",提示用戶輸入Y
或N?若輸入為Y,顯示“現(xiàn)在正在下雨。";若輸入為N,顯示"現(xiàn)在沒(méi)有下雨。";否則繼
續(xù)提問(wèn)”現(xiàn)在正在下雨嗎?"
解:
源程序:
#include<iostream.h>
^include<stdlib.h>
voidmain()
(
charflag;
whilc(l)
(
cout?”現(xiàn)在正在下雨嗎?(YesorNo):";
cin?flag;
if(toupper(flag)==*Y')
{
cout?”現(xiàn)在正在下雨。
break;
)
if(toupper(flag)=N)
(
cout<V”現(xiàn)在沒(méi)有下雨?!?;
break;
程序運(yùn)行輸出:
現(xiàn)在正在下雨嗎?(YcsorNo):x
現(xiàn)在正在下雨嗎?(YesorNo):l
現(xiàn)在正在下雨嗎?(YcsorNo):q
現(xiàn)在正在下雨嗎?(YesorNo):n
現(xiàn)在沒(méi)有下雨。
或:
現(xiàn)在正在下雨嗎?(YesorNo):y
現(xiàn)在正在下雨。
2-29編寫(xiě)一個(gè)完整的程序,運(yùn)行時(shí)向用戶提問(wèn)”你考試考了多少分?(0700)”,接收輸入
后判斷其等級(jí),顯示出來(lái)。規(guī)則如下:
解:
#include<iostream.h>
voidmain()
(
inti,score;
cout<<"你考試考了多少分?((K100):";
cin?score;
if(scorc>100||scorc<0)
cout<<"分?jǐn)?shù)值必須在0到100之間!
else
{
i=score/10;
switch(i)
(
case10:
case9:
cout?"你的成績(jī)?yōu)閮?yōu)!
break;
case8:
cout你的成績(jī)?yōu)榱迹 保?/p>
break;
case7:
case6:
cout<<"你的成績(jī)?yōu)橹校?/p>
break;
default:
cout?”你的成績(jī)?yōu)椴睿?/p>
)
}
}
程序運(yùn)行輸出:
你考試考了多少分?(0~100):85
你的成績(jī)?yōu)榱迹?/p>
2-30(1)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的菜單程序,運(yùn)行時(shí)顯示"Menu:A(dd)D(elete)S(ort)Q(uit),Select
one:"提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、
S時(shí)分別提示"數(shù)據(jù)已經(jīng)增加、刪除、排序?!陛斎霝镼時(shí)程序結(jié)束。要求使用if...else語(yǔ)
句進(jìn)行判斷,用break、continue控制程序流程。
解:
//include<iostream.h>
#include<stdlib.h>
voidmain()
(
charchoice,c;
while(l)
{
cout?,fMcnu:A(dd)D(clcte)S(ort)Q(uit),Selectone:'1;
cin?c;
choice=touppcr(c);
if(choice=,A,)
(
coutvv”數(shù)據(jù)已經(jīng)增加.”vvendl;
continue;
}
elseif(choice==*D*)
{
cout?”數(shù)據(jù)已經(jīng)刪除.”<<endl;
continue;
)
elseif(choice='S')
(
coutvv”數(shù)據(jù)已經(jīng)排序."vvendl;
continue;
)
elseif(choice=='Q')
break;
}
)
程序運(yùn)行輸出:
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:a
數(shù)據(jù)已經(jīng)增加.
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:d
數(shù)據(jù)已經(jīng)刪除.
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:s
數(shù)據(jù)已經(jīng)排序.
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:q
(2)實(shí)現(xiàn),個(gè)簡(jiǎn)單的菜單程序,運(yùn)行時(shí)顯示"Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:"
提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時(shí)
分別提示"數(shù)據(jù)已經(jīng)增加、刪除、排序?!陛斎霝镼時(shí)程序結(jié)束。要求使用Switch語(yǔ)句。
解:
源程序:
#include<iostream.h>
#include<stdlib.h>
voidmain()
(
charchoice;
while(l)
{
cout?,fMcnu:A(dd)D(clcte)S(ort)Q(uit),Selectone:'1;
cin?choice;
switch(touppcr(choice))
{
case'A':
coutw”數(shù)據(jù)已經(jīng)增加.”wendl;
break;
case*D':
cout?”數(shù)據(jù)已經(jīng)刪除."wendl;
break;
caseS':
cout?”數(shù)據(jù)已經(jīng)排序.”《endl;
break;
case*Q':
cxit(O);
break;
default:
>
)
(
}
程序運(yùn)行輸出:
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:a
數(shù)據(jù)已經(jīng)增加.
Menu:A(dd)D(clcte)S(ort)Q(uit),Selectone:d
數(shù)據(jù)已經(jīng)刪除.
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:s
數(shù)據(jù)已經(jīng)排序.
Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:q
2-31用窮舉法找出1~100間的質(zhì)數(shù),顯示出來(lái)。分別使用while,do-whilc,for循環(huán)語(yǔ)句實(shí)
現(xiàn)。
解:
源程序:
使用while循環(huán)語(yǔ)句:
//include<iostream.h>
#include<math.h>
voidmain。
(
intij,k,flag;
i=2;
while(i<=100)
(
flag=1;
k=sqrt(i);
j=2;
while(j<=k)
|
if(i%j==0)
(
flag=0;
break;
}
}
if(flag)
cout?i?”是質(zhì)數(shù).”《endl;
i++;
使用do...while循環(huán)語(yǔ)句:
#include<iostream.h>
#include<math.h>
voidmain()
{
intij,k,flag;
i=2;
do{
flag=1;
k=sqrt(i);
j=2;
do{
if(i%j==0)
{
flag=0;
break;
j++;
{while(j<=k);
if(flag)
cout?i?”是質(zhì)數(shù)vvendl;
i++;
}whilc(i<=100);
}
使用for循環(huán)語(yǔ)句:
#include<iostrcam.h>
#include<math.h>
voidmain()
(
intij,k,flag;
fbr(i=2;i<=100;i++)
|
flag=1;
k=sqrt(i);
fbr(j=2;j<=k;j++)
(
if(i%j=O)
(
flag=0;
break;
)
)
if(flag)
cout?i?"是質(zhì)數(shù)vvendl;
程序運(yùn)行輸
2是質(zhì)數(shù).
3是質(zhì)數(shù).
5是質(zhì)數(shù).
7是質(zhì)數(shù).
11是質(zhì)數(shù).
13是質(zhì)數(shù).
17是質(zhì)數(shù).
19是質(zhì)數(shù).
23是質(zhì)數(shù).
29是質(zhì)數(shù).
31是質(zhì)數(shù).
37是質(zhì)
數(shù).
41是質(zhì)
數(shù).
43是質(zhì)
數(shù).
47是質(zhì)
數(shù).
53是質(zhì)
數(shù).
59是質(zhì)
數(shù).
61是質(zhì)
數(shù).
67是質(zhì)
數(shù).
獨(dú)混廄較Break語(yǔ)句與Continue語(yǔ)句的不同用法。
數(shù).
73是質(zhì)
孤
跟e提廉程序從循環(huán)體和switch語(yǔ)句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的卜一條語(yǔ)句,不能用在別處;
數(shù)ntinue語(yǔ)句結(jié)束本次循環(huán),接著開(kāi)始判斷決定是否繼續(xù)執(zhí)行下一次循環(huán);
83是質(zhì)
數(shù).
89是質(zhì)
麴3定義一個(gè)表示時(shí)間的結(jié)構(gòu)體,可以精確表示年、月、日、小時(shí)、分、秒;提示用戶輸
只眼離3、日、小時(shí)、分、秒的值,然后完整地顯示出來(lái)。
數(shù).
解:
源程序見(jiàn)"實(shí)驗(yàn)指導(dǎo)"部分實(shí)驗(yàn)二
2-34在程序中定義一個(gè)整型變量,賦以1700的值,要求用戶猜這個(gè)數(shù),比較兩個(gè)數(shù)的大
小,把結(jié)果提示給用戶,直到猜對(duì)為止。分別使用while、do...while語(yǔ)句實(shí)現(xiàn)循環(huán)。
解:
//使用while語(yǔ)句
#include<iostream.h>
voidmain(){
intn=18;
intm=0;
while(m!=n)
|
cout?”請(qǐng)猜這個(gè)數(shù)的值為多少?(0—100):";
cin?m;
if(n>m)
coutw"你猜的值太小了!”《endl;
elseif(n<m)
cout?”你猜的值太大了!"wendl;
else
cout?”你猜對(duì)了!',?endl;
)
)
〃使用do...while語(yǔ)句
#include<iostream.h>
voidmain(){
intn=18;
intm=0;
do{
coutw”請(qǐng)猜這個(gè)數(shù)的值為多少?(0—100):";
cin?m;
if(n>m)
cout<v"你猜的值太小了!"<vendl;
elseif(n<m)
cout?”你猜的值太大了!”《endl;
else
cout<<"你猜對(duì)了!"wendl;
}while(n!=m);
)
程序運(yùn)行輸出:
請(qǐng)猜這個(gè)數(shù)的值為多少?(0??100):50
你猜的值太大了!
請(qǐng)猜這個(gè)數(shù)的值為多少?(0—100):25
你猜的值太大了!
請(qǐng)猜這個(gè)數(shù)的值為多少?(0700):10
你猜的值太小了!
請(qǐng)猜這個(gè)數(shù)的值為多少?(0—100):15
你猜的值太小了!
請(qǐng)猜這個(gè)數(shù)的值為多少?(0—100):18
你猜對(duì)了!
2-35定義枚舉類型weekday,包括Sunday到Saturday七個(gè)元素在程序中定義weekday類型
的變量,對(duì)其賦值,定義整型變量,看看能否對(duì)其賦weekday類型的值。
解:
#include<iostrcam.h>
enumweekday
(
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
voidmain()
(
inti;
weekdayd=Thursday;
cout?"d="?d?endl;
i=d;
cout?=n?i?endl;
d=(weekday)6;
cout?"d=H?d?endl;
d=weekday(4);
cout?"d=11?d?cndl;
}
程序運(yùn)行輸出:
d=4
i=4
d=6
d=4
第三章函數(shù)
3-1C++中的函數(shù)是什么?什么叫主調(diào)函數(shù),什么叫被調(diào)函數(shù),二者之間有什么關(guān)系?如何
調(diào)用一個(gè)函數(shù)?
解:
?個(gè)較為復(fù)雜的系統(tǒng)往往需要?jiǎng)澐譃槿舾勺酉到y(tǒng),高級(jí)語(yǔ)言中的子程序就是用來(lái)實(shí)現(xiàn)這種模
塊劃分的。c和C++語(yǔ)言中的子程序就體現(xiàn)為函數(shù)。調(diào)用其它函數(shù)的函數(shù)被稱為主調(diào)函數(shù),
被其它函數(shù)調(diào)用的函數(shù)稱為被調(diào)函數(shù)。?個(gè)函數(shù)很可能既調(diào)用別的函數(shù)乂被另外的函數(shù)調(diào)
用,這樣它可能在某一個(gè)調(diào)用與被調(diào)用關(guān)系中充當(dāng)主調(diào)函數(shù),而在另一個(gè)調(diào)用與被調(diào)用關(guān)系
中充當(dāng)被調(diào)函數(shù)。
調(diào)用函數(shù)之前先要聲明函數(shù)原型。按如下形式聲明:
類型標(biāo)識(shí)符被調(diào)函數(shù)名(含類型說(shuō)明的形參表);
聲明了函數(shù)原型之后,便可以按如下形式調(diào)用子函數(shù):
函數(shù)名(實(shí)參列表)
3-2觀察下面程序的運(yùn)行輸出,與你設(shè)想的有何不同?仔細(xì)體會(huì)引用的用法。
源程序:
#include<iostream.h>
intmain()
(
intintOne;
int&rSomeRef=intOne;
intOne=5;
cout?nintOne:\t\tH?intOne?endl;
cout?urSomeRef:\tM?rSomeRef?endl;
intintTwo=8;
rSomeRef=intTwo;//notwhatyouthink!
cout?"\nintOnc:\t\tn?intOne?cndl;
cout?nintTwo:\t\tu?intTwo?endl;
cout?"rSomcRcfAt"?rSomeRef?endl;
return0;
}
程序運(yùn)行輸出:
intOne:5
rSomeRef:5
intOne:8
intTwo:8
rSomeRef:8
3-3比較值調(diào)用和引用調(diào)用的相同點(diǎn)與不同點(diǎn)。
解:
值調(diào)用是指當(dāng)發(fā)生函數(shù)調(diào)用時(shí),給形參分配內(nèi)存空間,并用實(shí)參來(lái)初始化形參(直接將實(shí)參
的值傳遞給形參)。這一過(guò)程是參數(shù)值的單向傳遞過(guò)程,一旦形參獲得了值便與實(shí)參脫離關(guān)
系,此后無(wú)論形參發(fā)生了怎樣的改變,都不會(huì)影響到實(shí)參。
引用調(diào)用將引用作為形參,在執(zhí)行主調(diào)函數(shù)中的調(diào)用語(yǔ)句時(shí),系統(tǒng)自動(dòng)用實(shí)參來(lái)初始化形參。
這樣形參就成為實(shí)參的一個(gè)別名,對(duì)形參的任何操作也就直接作用于實(shí)參。
3-4什么叫內(nèi)聯(lián)函數(shù)?它有哪些特點(diǎn)?
解:
定義時(shí)使用關(guān)鍵字inline的函數(shù)叫做內(nèi)聯(lián)函數(shù);
編譯器在編譯時(shí)在調(diào)用處用函數(shù)體進(jìn)行替換,節(jié)省了參數(shù)傳遞、控制轉(zhuǎn)移等開(kāi)銷;
內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語(yǔ)句和switch語(yǔ)句;
內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前;
對(duì)內(nèi)聯(lián)函數(shù)不能進(jìn)行異常接口聲明;
3-5函數(shù)原型中的參數(shù)名與函數(shù)定義中的參數(shù)名以及函數(shù)調(diào)用中的參數(shù)名必須一致嗎?
解:
不必一致,所有的參數(shù)是根據(jù)位置和類型而不是名字來(lái)區(qū)分的。
3-6重載函數(shù)時(shí)通過(guò)什么來(lái)區(qū)分?
解:
重載的函數(shù)的函數(shù)名是相同的,但它們的參數(shù)的個(gè)數(shù)和數(shù)據(jù)類型不同,編譯器根據(jù)實(shí)參和形
參的類型及個(gè)數(shù)的最佳匹配,自動(dòng)確定調(diào)用哪一個(gè)函數(shù)。
3-7編寫(xiě)函數(shù),參數(shù)為兩個(gè)unsignedshortint型數(shù),返回值為第一個(gè)參數(shù)除以第二個(gè)參數(shù)的
結(jié)果,數(shù)據(jù)類型為shortint;如果第二個(gè)參數(shù)為0,則返回值為-1。在主程序中實(shí)現(xiàn)輸入輸
出。
解:
源程序:
/include<iostream.h>
shortintDividcr(unsigncdshortinta,unsignedshortintb)
|
if(b==0)
return-1;
else
returna/b;
)
typedefunsignedshortintUSHORT;
typedefunsignedlongintULONG;
intmain()
{
USHORTone,two;
shortintanswer;
cout?"Entertwonumbers.\nNumberone:
cin?one;
cout?"Numbertwo:
cin?two;
answer=Dividcr(onc,two);
if(answer>>1)
cout?"Answer:"?answer;
else
cout?"Error,can*tdividebyzero!";
return0;
)
程序運(yùn)行輸出:
Entertwonumbers.
Numberone:8
Numbertwo:2
Answer:4
3-8編寫(xiě)函數(shù)把華氏溫度轉(zhuǎn)換為攝氏溫度,公式為:C=(F-32)*5/9;在主程序中提示用戶
輸入一個(gè)華氏溫度,轉(zhuǎn)化后輸出相應(yīng)的攝氏溫度。
解:
源程序見(jiàn)"實(shí)驗(yàn)指導(dǎo)"部分實(shí)驗(yàn)三
3-9編寫(xiě)函數(shù)判斷一個(gè)數(shù)是否是質(zhì)數(shù),在主程序中實(shí)現(xiàn)輸入、輸出。
解:
#includc<iostrcam.h>
#include<math.h>
intprime(inti);〃判一個(gè)數(shù)是否是質(zhì)數(shù)的函數(shù)
voidmain()
{
inti;
COUt<V”請(qǐng)輸入一個(gè)整數(shù):”;
cin?i;
if(prime(i))
cout?i?”是質(zhì)數(shù)wendl;
else
cout?i?”不是質(zhì)數(shù)《endl;
}
intprimc(inti)
|
intj,k,flag;
flag=1;
k=sqrt(i);
fbr(j=2;j<=k;j++)
{
if(i%j=0)
(
flag=0;
break;
)
)
if(flag)
return1;
else
return0;
}
程序運(yùn)行輸出:
請(qǐng)輸入一個(gè)整數(shù):1151
1151是質(zhì)數(shù).
3-10編寫(xiě)函數(shù)求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。
解:
源程序:
#include<iostream.h>
#include<math.h>
intfhl(inti,intj);//求最大公約數(shù)的函數(shù)
voidmain()
{
intij,x,y;
coutvv”請(qǐng)輸入一個(gè)正整數(shù):”;
cin?i;
coutvv”請(qǐng)輸入另一個(gè)正整數(shù):”;
cin?j;
x=fol(ij);
y=i*j/x;
cout?i?“和"v<j<<”的最大公約數(shù)是:"<<x?endl;
cout?i?"flI"?jw”的最小公倍數(shù)是:M?y?endl;
)
intfhl(inti,intj)
{
inttemp;
if(ivj)
(
temp=i;
i=j;
j=i;
}
while(j!=0)
{
temp=i%j;
i=j;
j=temp;
)
returni;
}
程序運(yùn)行輸出:
請(qǐng)輸入一個(gè)正整數(shù):120
請(qǐng)輸入另一個(gè)正整數(shù):72
120和72的最大公約數(shù)是:24
120和72的最小公倍數(shù)是:360
3-11什么叫作嵌套調(diào)用?什么叫作遞歸調(diào)用?
解:
函數(shù)允許嵌套調(diào)用,如果函數(shù)1調(diào)用了函數(shù)2,函數(shù)2再調(diào)用函數(shù)3,便形成了函數(shù)的嵌套
調(diào)用。
函數(shù)可以直接或間接地調(diào)用自身,稱為遞歸調(diào)用。
3-12在主程序中提示輸入整數(shù)儲(chǔ)編寫(xiě)函數(shù)用遞歸的方法求1+2+...+n的值。
解:
#include<iostream.h>
#include<math.h>
intfhl(inti);
voidmain()
{
inti;
COUtVV”請(qǐng)輸入一個(gè)正整數(shù):”;
cin?i;
cout<<”從1累力口至心《ivv”的和為:M?fiil(i)?endl;
)
intfnl(inti)
(
if(i=1)
returnI;
else
returni+fhl(i-1);
)
程序運(yùn)行輸出:
請(qǐng)輸入?個(gè)正整數(shù):100
從1累加到100的和為:5050
3-13編寫(xiě)遞歸函數(shù)GetPower(intx,inty)計(jì)算x的y次累,在主程序中實(shí)現(xiàn)輸入輸出。
解:
源程序:
//include<iostream.h>
longGetPower(intx,inty);
intmain()
(
intnumber,power;
longanswer;
cout?"Enteranumber:
cin?number;
cout?"Towhatpower?
cin?power;
answer=GetPowcr(numbcr,power);
cout?number?”tothe"?power?"thpoweris"?answer?endl;
return0;
}
longGetPower(intx,inty)
(
if(y=1)
returnx;
else
return(x*GctPowcr(x,y-1));
}
程序運(yùn)行輸出:
Enteranumber:3
Towhatpower?4
3tothe4thpoweris81
3-14用遞歸的方法編寫(xiě)函數(shù)求Fibonacci級(jí)數(shù),公式為fib(n)=fib(n-l)+fib(n-2),n>2;
fib(l)=fib(2)=1;觀察遞歸調(diào)用的過(guò)程。
解:
源程序見(jiàn)”實(shí)驗(yàn)指導(dǎo)”部分實(shí)驗(yàn)三
3-15用遞歸的方法編寫(xiě)函數(shù)求n階勒讓德多項(xiàng)式的值,在主程序中實(shí)現(xiàn)輸入、輸出;
解:
#include<iostream.h>
floatp(intn,intx);
voidmain()
intn,x;
coutvv”請(qǐng)輸入正整數(shù)n:
cin?n;
coutw”請(qǐng)輸入正整數(shù)x:
cin?x;
cout?nn=n?n?endl;
cout?”x=H?x?endl;
cout?UPU?n?n(H?x?n)=n?p(n,x)?endl;
)
floatp(intn,intx)
(
if(n==0)
return1;
elseif(n==1)
returnx;
else
return((2*n-l)*x*p(n-l,x)-(n-l)*p(n-2,x))/n;
}
程序運(yùn)行輸出:
請(qǐng)輸入正整數(shù)n:1
請(qǐng)輸入正整數(shù)x:2
n=1
x=2
Pl(2)=2
請(qǐng)輸入正整數(shù)n:3
請(qǐng)輸入正整數(shù)x:4
n=3
x=4
P3(4)=154
3-16使用模板函數(shù)實(shí)現(xiàn)Swap(x,y),函數(shù)功能為交換x、y的值。
解:
源程序:
#include<iostream.h>
template<typenameT>voidswap(T&x,T&y)
Tz;
x=y;
y=z;
)
voidmain()
{
intj=1,k=2;
doublev=3.0,w=4.0;
cout?nj="<<j?uk=n?k?cndl;
cout?”v="?v?"w="?w?endl;
swap。,k);//int
swap(v,w);//double
cout?"Afterswap:"?cndl;
cout?"j=n<<j?Mk="?k?endl;
cout?"v=''?v?Mw="?w?cndl;
}
程序運(yùn)行輸出:
j=1k=2
v=3.14w=4.35
Afterswap:
j=2k=l
v=4.35w=3.14
第四類
章
4-1解釋public和private的作用,公有類型成員與私有類型成員有些什么區(qū)別?
解:
公有類型成員用public關(guān)鍵字聲明,公有類型定義了類的外部接口;私有類型的成員用
private關(guān)鍵字聲明,只允許本類的函數(shù)成員來(lái)訪問(wèn),而類外部的任何訪問(wèn)都是非法的,這樣,
私有的成員就整個(gè)隱蔽在類中,在類的外部根本就無(wú)法看到,實(shí)現(xiàn)了訪問(wèn)權(quán)限的有效控制。
4-2protected關(guān)鍵字有何作用?
解:
protected用來(lái)聲明保護(hù)類型的成員,保護(hù)類型的性質(zhì)和私有類型的性質(zhì)相似,其差別在于繼
承和派生時(shí)派生類的成員函數(shù)可以訪問(wèn)基類的保護(hù)成員。
4-3構(gòu)造函數(shù)和析構(gòu)函數(shù)有什么作用?
解:
構(gòu)造函數(shù)的作用就是在對(duì)象被創(chuàng)建時(shí)利用特定的值構(gòu)造對(duì)象,將對(duì)象初始化為一個(gè)特定的狀
態(tài),使此對(duì)象具有區(qū)別于彼對(duì)象的特征,完成的就是是一個(gè)從一般到具體的過(guò)程,構(gòu)造函數(shù)
在對(duì)象創(chuàng)建的時(shí)候由系統(tǒng)自動(dòng)調(diào)用。
析構(gòu)函數(shù)與構(gòu)造函數(shù)的作用幾乎正好相反,它是用來(lái)完成對(duì)象被刪除前的一些清理工作,也
就是專門(mén)作掃尾工作的。一般情況下,析構(gòu)函數(shù)是在對(duì)象的生存期即將結(jié)束的時(shí)刻由系統(tǒng)自
動(dòng)調(diào)用的,它的調(diào)用完成之后,對(duì)象也就消失了,相應(yīng)的內(nèi)存空間也被釋放。
4-4數(shù)據(jù)成員可以為公有的嗎?成員函數(shù)可以為私有的嗎?
解:
可以,:者都是合法的。數(shù)據(jù)成員和成員函數(shù)都可以為公有或私有的。但數(shù)據(jù)成員最好定義
為私有的。
4-5已知classA中有數(shù)據(jù)成員inta,如果定義了A的兩個(gè)對(duì)象Al、A2,它們各自的數(shù)
據(jù)
成員a的值可以不同嗎?
解:
可以,類的每一個(gè)對(duì)象都有自己的數(shù)據(jù)成員。
4-6什么叫做拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)何時(shí)被調(diào)用?
解:
拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),具有?般構(gòu)造函數(shù)的所有特性,其形參是本類的對(duì)象
的引用,其作用是使用一個(gè)已經(jīng)存在的對(duì)象,去初始化一個(gè)新的同類的對(duì)象。在以下三種情
況下會(huì)被調(diào)用:在當(dāng)用類的一個(gè)對(duì)象去初始化該類的另一個(gè)對(duì)象時(shí);如果函數(shù)的形參是類對(duì)
象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí);如果函數(shù)的返回值是類對(duì)象,函數(shù)調(diào)用完成返回時(shí);
4-7拷貝構(gòu)造函數(shù)與賦值運(yùn)算符(=)有何不同?
解:
賦值運(yùn)算符(=)作用于一個(gè)已存在的對(duì)象;而拷貝構(gòu)造函數(shù)會(huì)創(chuàng)建一個(gè)新的對(duì)象。
4-8定義一個(gè)Dog類,包含的age、weight等屬性,以及對(duì)這些屬性操作的方法。實(shí)現(xiàn)并測(cè)
試這個(gè)類。
解:
源程序:
#include<iostream.h>
classDog
{
public:
Dog(intinitialAge=0,intinitialWcight=5);
?Dog();
intGetAge(){returnitsAge;}//inline!
voidSetAge(intage){itsAge=age;}//inline!
intGetWcight(){returnitsWcight;}//inline!
voidSetWeight(intweight){itsAge=weight;}//inline!
private:
intitsAge,itsWeight;
};
Dog::Dog(intinitialAge,intinitialweight)
(
itsAge=initialAge;
itsWeight=initialweight;
)
Dog::?Dog()//destructor,takesnoaction
intmain()
{
DogJack(2,10);
cout?"JackisaDogwhoisn;
cout?Jack.GctAge()?”yearsoldand";
cout?Jack.GetWeight()?“poundsweightAn";
Jack.SctAgc⑺;
Jack.SetWeight(20);
cout?"NowJackisM;
cout?Jack.GctAgc()?"yearsoldand',;
cout?Jack.GetWeight()?”poundsweight.*';
return0;
)
程序運(yùn)行輸出:
JackisaDogwhois2yearsoldand10poundsweight.
NowJackis7yearsold20poundsweight.
4-9設(shè)計(jì)并測(cè)試一個(gè)名為Rectangle的矩形類,其屬性為矩形的左下角與右上角兩個(gè)點(diǎn)的坐
標(biāo),能計(jì)算矩形的面積。
解:
源程序:
#include<iostream.h>
classRectangle
(
public:
Rectangle(inttop,intleft,intbottom,intright);
-Rectangle(){}
intGetTopOconstjreturnitsTop;}
intGetLeft()const{returnitsLeft;}
intGetBottom()const{returnitsBottom;}
intGetRight()const{returnitsRight;}
voidSetTop(inttop){itsTop=top;}
voidSetLcft(intleft){itsLcft=left;}
voidSetBottom(intbottom){itsBottom=bottom;}
voidSctRight(intright){itsRight=right;}
intGctArca()const;
private:
intitsTop;
intitsLcft;
intitsBottom;
intitsRight;
};
Rectangle::RcctangIc(inttop,intleft,intbottom,intright)
itsTop=top;
itsLcft=left;
itsBottom=bottom;
itsRight=right;
}
intRectangle::GetArea()const
(
intWidth=itsRight-itsLeft;
intHeight=itsTop-itsBottom;
return(Width*Height);
)
intmain()
(
RectangleMyRectangle(100,20,50,80);
intArea=MyRcctangle.GctArca();
cout?HArea:M?Area?”\n”;
return0;
)
程序運(yùn)行輸出:
Area:3000
UpperLeftXCoordinate:20
4-10設(shè)計(jì)一個(gè)用于人事管理的People(人員)類。考慮到通用性,這里只抽象出所有類型
人員都具有的屬性:number(編號(hào))、sex(性別)、birthday(出生日期)、id(身份證號(hào))等
等。其中“出生日期”定義為一個(gè)“日期”類內(nèi)嵌子對(duì)象。用成員函數(shù)實(shí)現(xiàn)對(duì)人員信息的錄入和
顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、帶缺省形參值的成
員函數(shù)、聚集。
解:
本題用作實(shí)驗(yàn)四的選做題,因此不給出答案。
4-11定義一個(gè)矩形類,有長(zhǎng)、寬兩個(gè)屬性,有成員函數(shù)計(jì)算矩形的面積
解:
#include<iostream.h>
classRectangle
public:
Rcctanglc(floatlen,floatwidth)
{
Length=len;
Width=width;
}
-Rectangle(){};
floatGctArca(){returnLength*Width;}
floatGetLength(){returnLength;}
floatGctWidth(){returnWidth;}
private:
floatLength;
floatWidth;
};
voidmain()
|
floatlength,width;
cout?”請(qǐng)輸入矩形的長(zhǎng)度:”;
cin?length;
cout?"請(qǐng)輸入矩形的寬度:
cin?width;
Rectangler(length,width);
cout?"長(zhǎng)為length?"寬為"《w
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 馬哲必考十個(gè)原理
- 熱泵清潔供暖投資運(yùn)營(yíng)標(biāo)準(zhǔn)合同
- 安徽省黃山市歙縣2024-2025學(xué)年四年級(jí)上學(xué)期期中英語(yǔ)試題
- 生態(tài)治理項(xiàng)目招投標(biāo)報(bào)名
- 美容院前臺(tái)接待合同
- 化學(xué)研究部管理要訣
- 保險(xiǎn)業(yè)務(wù)交貨期承諾書(shū)范本
- 科技園區(qū)車(chē)位銷售合同范例
- 房地產(chǎn)市場(chǎng)預(yù)測(cè)
- 建筑加固改造施工合同協(xié)議書(shū)
- 甲亢藥物治療ppt課件
- 12月ACCAF9考試真題答案(優(yōu)推內(nèi)容)
- 烏蘭察布城規(guī)劃管理技術(shù)規(guī)定
- 反洗錢(qián)終結(jié)性考試題目及答案
- 學(xué)生家長(zhǎng)會(huì)調(diào)查問(wèn)卷
- 個(gè)人借條范本版免費(fèi)下載
- 人工智能課件3專家系統(tǒng)
- 飛行模擬器視景顯示系統(tǒng)的設(shè)計(jì)
- 肺炎PPTPPT課件
- 新生兒訪視技術(shù)規(guī)范
- 淺談如何在生物教學(xué)中滲透健康教育
評(píng)論
0/150
提交評(píng)論