重點(diǎn)知識(shí)點(diǎn)總結(jié)及習(xí)題_第1頁
重點(diǎn)知識(shí)點(diǎn)總結(jié)及習(xí)題_第2頁
重點(diǎn)知識(shí)點(diǎn)總結(jié)及習(xí)題_第3頁
重點(diǎn)知識(shí)點(diǎn)總結(jié)及習(xí)題_第4頁
重點(diǎn)知識(shí)點(diǎn)總結(jié)及習(xí)題_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++的特點(diǎn):1.支持抽象數(shù)據(jù)類一個(gè)c++程序由一個(gè)或多個(gè)函數(shù)構(gòu)成,并且在這些函數(shù)中只有一個(gè)主函數(shù)2據(jù)類型、運(yùn)算符與表達(dá)布爾型

字符型char空類型

單精度型雙精度型

指針類型數(shù)組類型

枚舉類型聯(lián)合類型結(jié)構(gòu)類型類類型2.1C+整數(shù)1,false可以轉(zhuǎn)換成整數(shù)0。與此對(duì)應(yīng),整數(shù)也可以隱式的轉(zhuǎn)換成bool值:非0true,0false。char據(jù)通常占用1個(gè)字節(jié)的空間。intlongintdoublelongint時(shí),int和最小值是什么:char、short、int、long、float、double、longdouble、unsigned。一般不同,并且在內(nèi)存中分別占據(jù)不同的單元。枚舉:將變量的值一一列舉出來,每個(gè)枚舉成員(枚舉符)都與一個(gè)整數(shù)相對(duì)應(yīng)。按默化。如果某個(gè)枚舉中所有枚舉符的值均非負(fù),該枚舉的表示范圍是[0:2K-1],2K值范圍就是[-2K:2K-1]。它在內(nèi)存中占據(jù)一個(gè)單元。類類型:類是體現(xiàn)面 命名:遵循標(biāo)識(shí)符命名規(guī)則。定義:格式:typedef<已有類型名><新類型名>布爾常量字符常量97。以轉(zhuǎn)義字符‘\’開始的字符常量后跟不同的字符表示不同的特殊字符。字符串常量‘\0‘a(chǎn)b‘\0注意字符常量與字符串常量在表示、、運(yùn)算方面的區(qū)別。整型常量(默認(rèn)情況下為正數(shù)。00-70378,01230x0X0-9A-F(a-f)的字母0x123,0x3ab。浮點(diǎn)型常量如:11.3、.2、2.3e10、-2.3E-1枚舉常量枚舉形式:enum<枚舉名>{<枚舉符表>};符號(hào)常量定義形式:const量的值不可以改變。constC+1.-p.next,p-2++-++---233+-*和Newp=newdelete*/+3%5(45<<8>>3,6<<=>==789!3?=及其擴(kuò)展*=,2.1C+C++中,I/O使用了流的概念-字符(或字節(jié))I/O設(shè)備傳送和接收一系列字節(jié)從內(nèi)存流出到一個(gè)設(shè)備。要使用C++標(biāo)準(zhǔn)的I/O流庫的功能,需要包括兩個(gè)頭文件:iostream.h用于提供基本的輸入輸出功能,iomanip.h用于提供格式化的功能。I/O的書寫格式(基本數(shù)據(jù)類型的輸入輸出頭文件iostream.h包含有cin和cout對(duì)象,對(duì)應(yīng)于標(biāo)準(zhǔn)輸入流和標(biāo)準(zhǔn)輸出流。流運(yùn)出,可以向cout輸出流字符。 oworld.”<<endl; oworld,然后換行inti,j; //i,j所在頭文件 設(shè)顯示小數(shù)精度為n 設(shè)域?qū)挒閚 16進(jìn)制數(shù)小寫輸出 指定在數(shù)值前輸出進(jìn)制(0表示八進(jìn)制,0x0X表示十六進(jìn)制)表2.2 I/O流的常用控制符(1)char、int、shortint、longint、double、long(2)signedint、unsigned本題主要考查的知識(shí)點(diǎn)是各種類型所占用的空間的大小以及相應(yīng)的表數(shù)范圍。在32位計(jì)算機(jī)中,char1字節(jié),shortint2個(gè)字節(jié),int4個(gè)字節(jié),longint4個(gè)字節(jié),double8sizeof符用于求解某種數(shù)據(jù)類型的大小。shortlongint。答案為: 飾符signed和unsigned只能用于修飾字符型和整型。答案為: (c)my name:d。 int{

constintx;return}本題主要考查對(duì)符號(hào)常量的理解。constconst-a&&b-公 year4100400主要考查對(duì)邏輯表達(dá)式的理解和書寫。答案為:6:下列選項(xiàng)中兩個(gè)表達(dá)式的運(yùn)算結(jié)果相同的是((a)3/2和 (b)3/2和 仍為整型即1;3.0/2和3/2.0中一個(gè)操作數(shù)為整型另一個(gè)為浮點(diǎn)型,運(yùn)算時(shí)整型隱式轉(zhuǎn)換1.5。答案為:(c)。 voidmain(){inta=2,b=4,i=0,x;}a>ba>b&&++i++ii0。答案100x%2?“oddeven”11000001100001'a',!0%11%10,100&&00。答案為:0。x%20,0?”odd”:”even”結(jié)例題9:下列程序運(yùn)行結(jié)果為: voidmain(){intdoubleb=23.123456789;cout<<setfill('');}a,b’\t’為轉(zhuǎn)義字符,其含義是跳過一個(gè)制表位。不設(shè)置輸62323.1235所以使用完后要還原為6位默認(rèn)值四行中設(shè)置setprecision(0)與setprecision(1)③n。所以第五行輸出結(jié)果為:23.1234568。setiosflags(ios::scientific(默認(rèn)為6位)時(shí),以指數(shù)形式顯示結(jié)果。否則根據(jù)設(shè)置的(或默認(rèn)的)顯示精度顯示n位有效⑤setiosflags(ios::showbase)為指定在數(shù)值前輸出進(jìn)制。hex置基數(shù)為16,且該操作保持效力,所以使用完后應(yīng)該恢復(fù)為默認(rèn)值10進(jìn)制。第九行輸出結(jié)果為:0x17 ⑥setw(n)設(shè)域?qū)挒閚個(gè)字符,setfill(c)c,setiosflags(ios::left)為 一 選擇C++語言基本數(shù)據(jù)類型的是((a)字符 一、C++語言程序自定義標(biāo)識(shí)符是(。 8( a=1,b=2,c=3,則表達(dá)是++a||-b&&++c( () (enum則下列敘述中錯(cuò)誤的是((a)枚舉常量RED的值為1 (b)枚舉常量BLUE的值為1(c)枚舉常量YELLOW的值為7 (d)枚舉常量PURPLE的值為15下列程序的運(yùn)行結(jié)果正確的是(void{constdoublepi=3.1415926;}intx=3,y=5;x&y++%3( 下列常量正確的是((a)” (c) (d)1.8E-charx=97x((a)1個(gè) (b)2個(gè) (c)4個(gè) (d)8個(gè) 若要為unsignedint定義一個(gè)新的名字UINT應(yīng)采用的語句 Voidmain(){inta,ba=;b=;a=/2;}大多數(shù)C++程序都要包含頭文件 三 編程sizeof運(yùn)算符。一、選擇題dabbcabcda二、填空題2\0typedefunsignedint a- 三、編程題#include<iostreamh>voidmain(){int //用于檢查輸入數(shù)據(jù)的{}}

#include<iostreamh>voidmain(){intenummonth{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};char*p;cout<<"Thesizeofchar<<"Thesizeofint<<"Thesizeofshortintis:"<<sizeof(short<<"Thesizeoflongintis:"<<sizeof(long<<"Thesizeoffloat<<"Thesizeofdouble<<"Thesizeoflongdoubleis:"<<sizeof(long<<"Thesizeofsignedint<<"Thesizeofunsignedint<<"Thesizeofarray<<"Thesizeofmonth<<"Thesizeofp}3C++指按照語句在程序中出現(xiàn)的先后次序一條一條的順次執(zhí)行包含語句表達(dá)式語句,空語句:指只有一個(gè)分號(hào)而沒有表達(dá)式的語句,它不作任何操作和運(yùn)算。格式為:;函數(shù)調(diào)用語句:是由函數(shù)調(diào)用表達(dá)式加一個(gè)語句結(jié)束標(biāo)志(分號(hào)“;”)構(gòu)成的語句。制來實(shí)現(xiàn)。printf和scanf是標(biāo)準(zhǔn)的輸入輸出函數(shù),主要在C程序設(shè)計(jì)中使用,其包含在頭文件stdio.h中。在C++中,I/O流完全取代了它們,使用I/O流輸入輸出時(shí),必須iostream.h。從鍵盤輸入語句格式為:cin>12>>…];cout1[<注意:連續(xù)輸入多項(xiàng)數(shù)據(jù)時(shí)應(yīng)鍵入空白字符(Tab)將相鄰的兩項(xiàng)數(shù)據(jù)分開。而連續(xù)輸出時(shí),cout不會(huì)在相鄰數(shù)據(jù)項(xiàng)間加分隔符,為了增強(qiáng)顯示效作為結(jié)束。注意空語句;和空復(fù)合語句{}是等價(jià)的。if格式:if(<if…else

12>可以是一條語句也可以是復(fù)合語句。②if語句支持多種形式的嵌套使用,但一般嵌套層次不超過三層。另外約定else總是case11>case2…casenn>[default:n+1>]}breakswitchdefault(defaultswitch)。caseswitchcasebreakswitch但在要表示一個(gè)范圍,或描述一類對(duì)象時(shí)(A,B,CD)有可能幾casebreak環(huán)控制語句:while,do…while,forwhilewhilewhilewhiledo…while是的,所以應(yīng)盡量使用while語句而避免使用do…while語句。循環(huán),退出for循環(huán);<表達(dá)式3>可以稱為修正表達(dá)式,一般用于在每次循環(huán)體執(zhí)行之后,break例題1:下列程序的運(yùn)行結(jié)果為 voidmain({charc=’@’if(c>='A'&&c<='Z')cout<<"是大寫字母";elseifc>='a&&c<='z')cout<<"是小寫字母";elsecout<<"是其它字符}ifcc>='A&&c<='Z',如果滿足則輸出"";否則判斷cc>='a'&&c<='z',如果滿足則輸出"是小寫字母"否則輸出"是其它字符"。elseif配對(duì)。2:已定義:chargrade;A、B、C時(shí)輸出合格,成績?yōu)镈時(shí)輸出不合格,switch語句正確的是()。casecasecase‘C’:cout<<”合格”;break;case‘Dcout<<”不合格”;break;default:cout<<”請(qǐng)重新輸入:”;}casecasecase‘Ccout<<”合格case‘D’:cout<<”不合格”;default:cout<<”請(qǐng)重新輸入:”;}case‘A‘B’,Ccout<<”合格”;break;case‘D’:cout<<”不合格”;break;default:cout<<”請(qǐng)重新輸入:”;}caseA:casecaseC:cout<<”合格”;break;caseD:cout<<”不合格”;break;default:cout<<”請(qǐng)重新輸入:”;}switchswitch語句執(zhí)行過程中,找到第一個(gè)相匹配的表達(dá)式casebreakswitch語句執(zhí)行其后的語句。求;switchcasecase分支,選項(xiàng)c錯(cuò)誤;case后的表達(dá)式只能是整型、字符型或枚舉型常量表達(dá)式,選項(xiàng)d中case后的A、B、C、Da。 y=x- { i int { int

1100sumsum賦值。答案為:將①改為inti=1,sum=0;whilewhile(i<=100);例題4:循環(huán)語句for(inti=0;i<=5&&!i;i++)cout<<i<<endl;執(zhí)行循環(huán)次數(shù)為 )(a)1次 (b)3次 (c)5次 (d)6次本題考查對(duì)for循環(huán)的理解以及表達(dá)式運(yùn)算。執(zhí)行for循環(huán)i的初0,第一次循環(huán)時(shí)表達(dá)式0<=5&&!0結(jié)果為1所以執(zhí)行循環(huán)體輸出0i自加為1,計(jì)算表1<=5&&!1結(jié)果0,所以退出循環(huán)。答案為:i,sum=0;與上邊程序段不等價(jià)的是()intsum=0,i=1;inti=1,sum=0;{}inti=1,sum=0;{}inti,sum=0;本題主要考查對(duì)各種循環(huán)結(jié)構(gòu)的以及它們之間轉(zhuǎn)換關(guān)系的理解。本題中的程序段是求解1到100的和,循環(huán)結(jié)束后i的值為101,sum的值為5050。選項(xiàng)a、b分別用do…whilewhile循環(huán)完成求解1到100的和;選項(xiàng)c是循環(huán),通過break語句退出循環(huán),其作用也是求解1100選項(xiàng)d中i先自加然后求和,其作用為求解2101的和,循環(huán)結(jié)i101,sum5150。答案為:d。 voidmain(){intx,y,cmultiple;{}}voidmain(){int{}}7本題考查理解程序的能力。(1)中求解兩個(gè)數(shù)x,y的最小公倍數(shù)思路為若x能夠被y整除則x就是這兩個(gè)數(shù)的最小公倍數(shù),否則判斷x的整數(shù)倍是否能被y整除,直到x某個(gè)倍數(shù)可以被y整除,則該數(shù)即為這兩個(gè)數(shù)的最小公倍數(shù)。(2)中求解兩個(gè)數(shù)x,y的最大公約數(shù)思路0,x和y答案為:(1):168(2)最大公約數(shù)121*2<1+2,232*3>2+3void{intnum,product=1,sum=0,n;{ ①n=num ②n){ ③ }if(product>sum)}}本題中變量num表示1100product用于存放每位數(shù)的乘積,變量sum用于存放每位數(shù)的和變量n用于存放求解每位數(shù)的中間結(jié)果。外層for循環(huán)用于控制判斷1100內(nèi)層while用于計(jì)算每位數(shù)的積與每位數(shù)的和,if語句用于判斷該數(shù)的初它是num的副本而后用于存放計(jì)算每位數(shù)的中間結(jié)果;②處為退出while循環(huán)的條件,當(dāng)n100答案為:①②③8:以下程序的功能是判斷一個(gè)數(shù)是否為素?cái)?shù)。請(qǐng)?zhí)羁?。void{int intisprime=1;for(inti=2;i<=num-1;i++) {}

}

cout<<num<<"是一個(gè)素?cái)?shù)。"<<endl;cout<<num<<"endl;本題中變量num存放要判斷的數(shù),變量isprime用于記錄該數(shù)是否為素?cái)?shù),當(dāng)isprime1時(shí)即該數(shù)為素?cái)?shù),否則為合數(shù)。判斷思路為如果num能被2到num-1的任意一個(gè)數(shù)整除則該數(shù)不是素?cái)?shù)。①處需要輸入待判斷的數(shù),②處為判斷條件,當(dāng)檢測(cè)到2到num-1中第一個(gè)能num答案為:①cin>>num②num%i==0③9:3,5,7voidmain(){int

cout<<num<<"3、5、7cout<<num<<"3、5、7}算法思想:判斷某年某月有多少天,每個(gè)月的天數(shù)有四種可能:、、、、、、月為天,4、6、9、11月為30閏年的2月有29閏年則2月為28天。因?yàn)槊縱oidmain(){intyear,month,days,leap;swit{casecasecasecasecasecasecase12:days=31;break;case4:casecasecase11:days=30;break;caseelseif(year%4==0&&year%100!=0)elseleap=0;if(leap)days=29; }}11:編寫一個(gè)程序。計(jì)算若一頭母牛,它每年年初生一頭小母牛,每頭小母牛從出生10假設(shè)f(n)表示第n年的母牛數(shù),已知f(0)=0,f(1)=2,f(2)=3,f(3)=4,推得在第n年時(shí)應(yīng)有f(n-3)頭母牛出f(n-3)頭母牛,所以第n年共有f(n-1)+f(n-3)頭母牛據(jù)此得出數(shù)學(xué)表達(dá)式:f(n)=f(n-1)+f(n-3)。在下邊的參考程序中分別用變量sum、sum1、sum2、sum3f(n),f(n-1),f(n-2),f(n-3)n410。voidmain(){intsum1=2,sum2=3,sum3=4,sum=0,n=10;for(inti=4;i<=n;i++){}}例題12:計(jì)算 項(xiàng)相加,所以采用循環(huán)結(jié)構(gòu)處理。循環(huán)的條件是當(dāng)時(shí)繼續(xù)運(yùn)算直到這個(gè)條件不滿足時(shí)就達(dá)到了題目要求的精度,則停止運(yùn)算。循環(huán)體中完成三件事,首先是求出本次(第i次)循環(huán)中的的值,然后計(jì)算當(dāng)前的e,最后完成循環(huán)變量增1的操作。在求解本題時(shí)主#includeiostream.h>intmain(){doublee=1.0;doublex=1.0;inti=1;{}}

cout<<"e="<<e<<endl;return0;一 選擇 ) while(!1)(a)0 (d)無數(shù) )voidmain(){intforif(i%2)cout<<i;elsecontinue;}} 二 填空 continue語句實(shí)現(xiàn)的作用是 3.若輸入”china2008!”,運(yùn)行下列程序的輸出結(jié)果為 #include<iostream.h>#include<stdio.h>voidmain(){charintletters=0,digits=0,others=0;cout<<"Pleaseinputalinecharaters"<<endl;while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')

if(c>='0'&&}

}1!+2!+……+18!的計(jì)算,請(qǐng)將程序補(bǔ)充完整。voidmain(){doublesum=0,fac=1;for(inti=1;i<=18;i++){ }}三 編程70-7960-690-59 153=13+53+331531000

*********************************AABCABCDEABCDEF 第二天早上又將剩下的桃子一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),發(fā)現(xiàn)只剩一個(gè)桃子了,求猴子第一天究竟摘 baadpleaseinputalinecharaters voidmain(){doublegrade;char*{}elseelseif(grade>=60)}voidmain(){intnum1,num2,num3,num;{}{}{}}voidmain(){"<<endl;for(inti=100;i<=200;i++){}}voidmain(){intcout<<"100~999中的水仙花數(shù)為:"<<endl;for(inti=100;i<=999;i++){}}voidmain(){intcout<<"1000之內(nèi)的所有完數(shù)為:"<<endl;for(inti=1;i<=1000;i++){for(intj=1;j<=i/2;j++)}}voidmain(){int{cout<<'';cout<<"*";}{cout<<'';cout<<"*";}}voidmain(){inti,j;charx;{cout<<'';{}}}voidmain(){intfor(intday=1;day<10;day++)//dayn}voidmain(){charplay1,play2;char*result;{{caseif(play2=='Rresult="2elseif(play2=='Presult="1贏!";elseresult="平局!";case'R':if(play2=='P')result="2贏!";elseif(play2=='Sresult="1贏!";elseresult="平局!";caseif(play2=='Sresult="2elseif(play2=='Rresult="1贏!";elseresult="平局!";}}}voidmain(){intcout<<"20項(xiàng)為:"<<endl;for(int{}}voidmain(){for(inttitle=1;title<=9;title++)for(int{for(intline=1;line<=row;line++)}}第4型。構(gòu)成數(shù)組的這組元素在內(nèi)存中占用一組連續(xù)的單元??梢杂靡粋€(gè)的數(shù)組名標(biāo)識(shí)一維數(shù)組的定義1,2,n};‘\0(格式 這樣會(huì)引起邏輯錯(cuò)誤??梢酝ㄟ^sizeof(數(shù)組名)/sizeof(數(shù)組類型)來求得實(shí)際的數(shù)組長二維數(shù)組的定義1][2];序被在一維的空間中的。12二維數(shù)組的初始化第二、所有數(shù)值按順序在一個(gè)花括號(hào)中給出。格式:1][若該數(shù)組為nm10n-1,20m-11:下面定義數(shù)組的語句正確的是(inti=6;chara[i]=“constinti=5;chara[i]= chara[6]=”chara5=”除const變量以外的變量,選項(xiàng)a中i為變量;選項(xiàng)b中字符串“o”含有6個(gè)字符,a5da5“o”含有6個(gè)字符,無法放在一個(gè)字符變量中。所以答案為:c2:ainta[][3]={{1,2,3},{4}};,a[1][2]的值為( 例題3:已知數(shù)組定義為inta[2][4];,下列對(duì)數(shù)組元素正確的為( 對(duì)二維數(shù)組的格式為:數(shù)組名[下標(biāo)1][下標(biāo)2];n行m列的二維數(shù)組其第一維的下標(biāo)從0到n-1,第二維的下標(biāo)從0到m-1。選項(xiàng)a和c格式錯(cuò)誤,d中下標(biāo)越界。答案為:b4:下列程序段錯(cuò)誤的是(charstr1[8];charcharstr1[8];for(inti=0;i<7;i++)charstr1[8],str2[8]=””;strcpy函數(shù)將一個(gè)字符串到該字符數(shù)組或者用循環(huán)語句逐個(gè)為字符數(shù)組元素賦值。不5:下列說法正確的是( (b)定義inta[2];,則數(shù)組a有兩個(gè)數(shù)組元素(c)inta[3];,則該數(shù)組中元素分別為:a[0],a[1],a[2],a[3]。數(shù)組中所有的元素具有相同類型,選項(xiàng)a錯(cuò)誤;定義inta[3];則數(shù)組a中含有三個(gè)元素分答案為:b例題6:運(yùn)行下列程序結(jié)果為 voidmain(){int{}}3×3intmain(){intchars[20]="Todayissunday!",t[10]="sun";{ &&s[j]==t[k];j++,k++); {cout<<"tsi<<endl;returni;}}return-}s0tttstss1skt(下標(biāo)js(下標(biāo)。因此,答案為:①t[k]!='\0'②t[k]=='\0'8:1010個(gè)數(shù)。、n-1(n,每次循環(huán)都從剩下的數(shù)中選擇出最小的一個(gè)。如下給出排序過、0123第2第3 20 100#include<iostream.h>intmain(){constintCOUNT=10;intlist[COUNT];inti,j,tmp; {{}} return}C++中對(duì)數(shù)組下標(biāo)說法正確的是(數(shù)組定義為:inta[2][2]={1,2,3,4}a[1][0]%3( 數(shù)組定義為:inta[][2]={5,6,1,2,3,8};則能用于計(jì)算數(shù)組下標(biāo)的是( 運(yùn)行下列程序結(jié)果為(voidmain(){intfor(inti=3;i>=0;i--} 運(yùn)行下列程序結(jié)果為(voidmain(){int{}{}}mn數(shù)組包 行 個(gè)元素 a4ii-1voidmain(){intfor(inti=0; }voidmain(){charstr[20];inti=0,j=0;while(str[j]) for(j--;i<j&&str[i]==str[j];i++,j--); } voidmain(){int{}} voidmain(){int{}}輸入為:241634×4(即該點(diǎn)的值在它所在的行中有17個(gè)人圍成一個(gè)圈(0-16),從第0號(hào)的人開始從1報(bào)數(shù),凡報(bào)到3的倍數(shù)的人 ①j++147258369**voidmain(){constintA1=2,A2=3,A3=2;inti,j,k;double{}}voidmain(){intarray[4][4],i,j,k,max,col,flag=0;{{{}}{}{}}}voidmain(){constintMAX=100;charstr[MAX];int{if(str[i]=='}}#include<iostream.h>voidmain(){constLENGTH=100;charstr[LENGTH];for(inti=0;{if(str[i]=='\0')str[i]=str[i]+}}voidmain(){intchars1[20]="o",s2[10]="world";{}}voidmain(){intarray[17],n=17,i,j=1;{{}{}}{)}}voidmain(){intarray[7]={1,3,5,7,9,11,13},x,low=0,high=6,mid,flag=0;{{}

}

}voidmain(){constintROW=10;constintCOL=10;intyh[ROW][COL],row,col;{}{{}}{}} 函數(shù)類型函數(shù)名(形式參數(shù)列表{}函數(shù)可以有返回值也可以沒有返回值,當(dāng)沒有返回值時(shí),函數(shù)類型為void型。每個(gè)函int函數(shù)類型函數(shù)名(形式參數(shù)列表格式:儲(chǔ)空間和初值。參數(shù)傳遞主要有兩種方式:按值傳遞和傳遞。按值傳遞傳遞形參值的改變就是對(duì)實(shí)參值的改變傳遞中需在定義形式參數(shù)時(shí)在形參前加符“&地址傳遞行匹配,仍無法匹配時(shí),則報(bào)錯(cuò)。函數(shù)重載解析與函數(shù)定義或的順序無關(guān)。0(指針。因此在被調(diào)用實(shí)參類型進(jìn)行參數(shù)類型檢查時(shí)并查數(shù)組的長度,因此在定義形參時(shí)可以只寫數(shù)組名[],②將被調(diào)用函數(shù)的形式參數(shù)為數(shù)組的,當(dāng)形式參數(shù)是一個(gè)數(shù)組類型的時(shí)程序的內(nèi)存區(qū)域①②③④棧區(qū),存放程序的局部數(shù)據(jù),即各個(gè)函數(shù)中的數(shù)據(jù)。局部變量 全局變量外部變量的定義位置開始到本文件結(jié)束為止外部變量可被作用域內(nèi)的所有函數(shù)直接,①在同一源文件中,允許外部變量和變量同名。在變量的作用域內(nèi),外部變量將被而不起作用。變量時(shí),需要在函數(shù)內(nèi)對(duì)被的外部變量進(jìn)行說明。外部變量說明的一般形式為: 數(shù)據(jù)類型外部變量[定義格式:static 數(shù)據(jù)類型變量表;句話說,在程序執(zhí)行期間,靜態(tài)變量始終存在,但其它函數(shù)是不能它們的。②定義但不初始化,則自動(dòng)賦以"0"(整型和實(shí)型)或'\0'(字符型;且每次調(diào)用它們所①在全局變量前加一個(gè)static,使該變量只在這個(gè)源文件中可用,稱之為全局靜態(tài)變量。②靜態(tài)生命期局部生命期動(dòng)態(tài)生命期這種生命期由程序中特定的函數(shù)調(diào)用(malloc()free())或操作符(newdelete)來1:下列函數(shù)定義語句正確的是(voidfun1(inti,int{}voidfun1(inti,int{void{cout<<”Thisis}}voidfun1(inti,int{}

return1;voidfun1(inti,int{}函數(shù)類型函數(shù)名(形式參數(shù)列表){}選項(xiàng)a中多了一個(gè)分號(hào);函數(shù)可以嵌套調(diào)用但是不能嵌套定義,選項(xiàng)b在函數(shù)定義函數(shù)是錯(cuò)誤的;若果函數(shù)類型定義為void型,則該函數(shù)沒有返回值,選項(xiàng)c定義了void型函數(shù)2:C++函數(shù)的敘述中,正確的是(函數(shù)在被調(diào)用之前必須先或定定義為void型,選項(xiàng)b錯(cuò)誤;如果一個(gè)函數(shù)自己調(diào)用自己則稱為遞歸調(diào)用,這是允許的。選項(xiàng)d錯(cuò)誤。函數(shù)在調(diào)用之前必須已經(jīng)或定義過。答案為:c。例題3:下面的函數(shù)語句正確的是(intfun(intvar1=1,char*var2=”Beijing”,doubleintfun(int,char*=”Beijing”,doubleintfun(intvar1=1,char*var2=”Beijing”,doublevar3=3.14159);intfun(int,char*,doublevar3=12.34);intfun(intvar1=1,char*,double本題主要考查帶默認(rèn)參數(shù)的函數(shù)原型方法函數(shù)調(diào)用時(shí)實(shí)參與形參按照從左到右順序匹配,在對(duì)默認(rèn)值進(jìn)行定義時(shí)應(yīng)該從右向左定義。選項(xiàng)a和d都沒有遵從對(duì)默認(rèn)值定義時(shí)應(yīng)該c3:b例題4:運(yùn)行下列程序結(jié)果為 #include<iostream.h>intf(int[],int);voidmain(){inta[]={-1,3,5,-7,9,-}intf(inta[],int{inti,t=1;if(a[i]>0)t*=a[i];returnt;}6a1355:運(yùn)行下列程序結(jié)果為(voidmain({charif(strcmp(str[2],s)<0)strcpy(s,str[2]);}strcpy(chardestination[],constcharstrncpy(chardestination[],constcharsource[],intnumchars); [],constcharsource[]); [],constcharsource[],intintstrcmp(constcharstring[],constcharstrlen(constcharstring[]例題6:運(yùn)行下列程序的結(jié)果為 voidfun1(constdouble&{}voidfun2(double{}voidfun3(double{}void{} 參數(shù)也就是說對(duì)非const參數(shù)不允許做類型轉(zhuǎn)換本題中對(duì)于函數(shù)fun1以及fun3在調(diào)用時(shí)參數(shù)都發(fā)生了數(shù)據(jù)類型轉(zhuǎn)換,而對(duì)于函數(shù)fun2它的參數(shù)為非const的參fun2d。例題7:運(yùn)行下列程序的結(jié)果為 intfindmax(intIarg[]);floatfindmax(floatFarg[]);doublefindmax(doubleDarg[]);{intfloatdoublecout<<"largestvalueintheIargis"<<(findmax(Iarg))<<"\n";cout<<"largestvalueintheFargis"<<(findmax(Farg))<<"\n";cout<<"largestvalueintheDargis"<<(findmax(Darg))<<"\n";return0;}intfindmax(int{intfor(int{{}}return}floatfindmax(float{floatmax=0;for(inti=0;i<6;i++){{}}return}doublefindmax(double{doublemax=0;for(inti=0;i<6;i++){{}}return}findmax()函數(shù),根據(jù)傳findmax()函數(shù)實(shí)現(xiàn)了重載。largestvalueintheIargis88largestvalueintheFargis363.2largestvalueintheDargis78.3454例題8:運(yùn)行下列程序的結(jié)果為 intfun(int,int);voidmain(){}intfun(intn,int{ints1,n1;{}returnn-} 7654531201f(7,917-1=6例題9:運(yùn)行下列程序結(jié)果為 void{for(int{staticintvar1=1;intvar2=1;}}void{}區(qū),直到程序運(yùn)行結(jié)束。靜態(tài)局部變量只在第一次調(diào)用時(shí)被初始化。在本程序中for循環(huán)3var210:voidfun1(int);voidmain(){void}voidfun1(int{}voidfun1(double{}fun1。但是在主函以整型數(shù)據(jù)作為形參的fun1函數(shù)的定義或那么盡管調(diào)用時(shí)賦的實(shí)參1是整型,也無法調(diào)用以整型數(shù)據(jù)作為形參的fun1函數(shù)只能通過隱式數(shù)據(jù)類型轉(zhuǎn)換與以double類型作為fun111:voidoutput(intvar1,int{}void{intvar1=300;int}本題主要考查變量的作用域在主函數(shù)中定義的變量var1和var2其作用域?yàn)楸境绦蚍秶?,在函?shù)outputvar1var2的作用output函數(shù)范圍內(nèi),因?yàn)樗椭骱瘮?shù)中定義的變量同名,所以在該函數(shù)范圍內(nèi)會(huì)主函數(shù)中定義的同名變量,其中的變量var1和var2的操作都是針對(duì)于形參變量,與主函數(shù)中定義的變量無關(guān)。當(dāng)對(duì)output函數(shù)的調(diào)用結(jié)束后,形參變量,返回主函數(shù),在主函數(shù)中的變量var1和var2仍為主函oname(voidmain(intargc,char*mainmainmain …vc6.0project→settings…→debug→”programarguments:”中,輸入以空格分隔的各參數(shù)。程序文件名參數(shù)1voidmain(intargc,char*{cout<<"}例題13:使用重載函數(shù)的方法定義兩個(gè)函數(shù),用來分別求出兩個(gè)int型數(shù)的點(diǎn)間距離和double型數(shù)的點(diǎn)間距離。兩個(gè)int型點(diǎn)分別為A(5,8),B(12,15);兩個(gè)double型點(diǎn)分別為(x2(x2x1)2(y2。函數(shù)sqrt()的作用是求平方根,使用該函數(shù)應(yīng)包含頭文件void{doubledoubledistance(double,double,double,double);intx1=5,y1=8,x2=12,y2=15;doublexd1=1.5,yd1=5.2,xd2=3.7,yd2=4.6;doubledisi=distance(x1,y1,x2,y2);cout<<"int型數(shù)的點(diǎn)間距離:";doubledisd=distance(xd1,yd1,xd2,yd2);cout<<"double型數(shù)的點(diǎn)間距離:";}doubledistance(inta1,intb1,inta2,int{cout<<"\n調(diào)用計(jì)算兩個(gè)int型數(shù)的點(diǎn)間距離函數(shù)\n";doubles=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));returns;}doubledistance(doublea1,doubleb1,doublea2,double{cout<<"\ndouble\n";returnsqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));}14:fibonacci本題主要考查對(duì)遞歸函數(shù)的應(yīng)用對(duì)于fibonacci數(shù)列邊已經(jīng)介紹這里使用遞歸完成,intfib(intn){if(n<3)returnreturn(fib(n-2)+fib(n-}void{for(inti=1;i<=10;i++)}15:打印某一年的年歷。intDayOfYear(inty);intDaysOfMonth(intm);voidPrintMonth(intm);voidPrintHead(intm);boolIsLeapYear(inty);intweekDay;intyear;void{{cerr<<"1900。\n";} "<<year<<"年日歷\n";cout<<"\nfor(inti=1;i<=12;i++)}voidPrintMonth(int{PrintHead(mintdays=DaysOfMonth(m);//該月的天數(shù)for(inti=1;i<=days;i++){if(weekDay==0){ }}}voidPrintHead(int{}

for(inti=0;i<weekDay;i++) intDaysOfMonth(intm){casecasecasecasecasecasecase12:returncasecasecasecase11:returncasereturn29;return}return}boolIsLeapYear(int{}52nnintDayOfYear(int{intn=y-1900;returnn;}下列函數(shù)定義語句正確的是(voidfun(int{}

intvar1=0;voidfun(int{}intfun(int{}

return1;returnintfun(int{return1;}下列敘述中正確的是(return(C++語言中函數(shù)返回值的類型是由()(a)return語句中的表達(dá)式類型 C++中,關(guān)于參數(shù)默認(rèn)值的描述正確的是(使用重載函數(shù)編程序的目的是( (d)節(jié)省空系統(tǒng)在調(diào)用重載函數(shù)時(shí),下列不能作為確定調(diào)用哪個(gè)重載函數(shù)的依據(jù)的選項(xiàng)是((a)函數(shù) 運(yùn)行下列程序結(jié)果為(inlineintabs(intx){returnx<0?-}void{intvar1=10,var2=-} (b)(c) (d)|var1|+|var2|=-數(shù)組作為函數(shù)的形參,把數(shù)組名作為函數(shù)的實(shí)參時(shí),傳遞給函數(shù)的是((c)0運(yùn)行下列程序結(jié)果為(#include<iostream.h>intf(int[][3],int,int);voidmain(){int}intf(inta[][3],introw,int{inti,j,t=1;if(i==j)}return} 運(yùn)行下列程序的輸出結(jié)果為(intvar;{int{intvar=5;}return0;} 類型 在一個(gè)函數(shù)的定義或前加上關(guān)鍵字 方式 方式 #include<iostream.h>voidswap(int&,int&);voidmain(){inta=66,b=4;}voidswap(int&x,int{intt=x;} #include<iostream.h>#includevoidfun(intarray[],intn);voidmain(){intinti;}voidfun(intarray[],int{inti;}運(yùn)行下列程序,若輸入12345則輸出結(jié)果 voidrev(intn){intx;{}}void{} voidfun(charPrChar='$',intnum=10);{charch;intnum;return}voidfun(charch,int{for(int{}} #include<iostream.h>voidfun();voidmain({inti;}voidfun({staticintm=0;}編寫函數(shù)將華氏溫度轉(zhuǎn)換為攝氏溫度,公式為c(F3259PX(x)((2*n-1)*x*Pn-1(x)-(n-1)*Pn-

(n(n(ncbccbacbddcmain 813213414.doubleftoc(double);voidmain(){}doubleftoc(double{doublec;returnc;}intnumo=0,nume=0;voidsta(inta[],int);voidmain(){constintint}voidsta(inta[],int{for(inti=0;i<n;i++)}

intabs(int);doubleabs(double);voidmain(){inta=-doubleb=-3.14;}intabs(int{}doubleabs(double{}doublep(double,int);voidmain(){}doublep(doublex,int{return

return}

intisprime(int);voidmain(){for(inti=6;i<=100;i+=2)for(intj=3;j<=i/2;j+=2){{}}}intisprime(int{intx=sqrt(n);for(inti=2;i<=x;i++)returnreturn}第6 指針、和動(dòng)態(tài)空間管動(dòng)

類型數(shù)據(jù)類型*unsignedlongint。&*間接運(yùn)算在指針變量的定義和指針變量的中都有*p。但指針時(shí)的*p與定義指針變量時(shí)含義是不同,在指針變量的定義中如int*p;是指p是一個(gè)指向整型的指針,而在時(shí)*pp所指向的變量。const格式:const*指針常量*const指針變量名=指向常量的指針常量格式:const*const指針變量名=數(shù)組元素的如定義inta[5];則對(duì)數(shù)組的第i+1個(gè)元素的可以用a[i]或*(a+i)。intb[2][3];b[0],b[1]分別代表第一行和第二行的首地址。所以要數(shù)組元素b[i][j]可以用下列幾種形式:*(*(b+i)+j)、*(b[i]+j)、*(b+i)[j]、如定義一個(gè)指向數(shù)組元素的指針,inta[5],*p=a;i+1個(gè)元素的可以用*(p+i)它等價(jià)于a[i]。對(duì)于二維數(shù)組如定義intb[2][3],*q=b[0];則數(shù)組元素b[i][j]可以用以下幾種形(*指針名)[常量表達(dá)式*指針數(shù)組名[常量表達(dá)式函數(shù)指針就是指向函數(shù)的指針。(*函數(shù)指針名(參數(shù)表(*(函數(shù)指針數(shù)組](常用的字符串處理函數(shù):函數(shù)原型:char*strcat(char*s1,chars2s1s1的地址函數(shù)原型:intstrcmp(constchar*s1,constchar*s2,[int函數(shù)原型:char*strcpy(char*s1,constchar函數(shù)說明:將s2所指向的字符串到s1所指向的字符數(shù)組中,然后返回s1的地址函數(shù)原型:intstrlen(constchar動(dòng)態(tài)分newnew運(yùn)算符用于申請(qǐng)所需的內(nèi)存單元,返回指定類型的一個(gè)指針。new動(dòng)態(tài)分配某種類型的變量格式:指針=new說明:指針應(yīng)預(yù)先,指針指向的數(shù)據(jù)類型與new后的數(shù)據(jù)類型相同。若申請(qǐng)成功,則返回分配單元的首地址給指針;否則(比如沒有足夠的內(nèi)存空間0new動(dòng)態(tài)分配數(shù)組格式:指針=new數(shù)據(jù)類型[常量表達(dá)式newdeletedelete運(yùn)算符用于new申請(qǐng)到的內(nèi)存空間。格式一:delete指針;格式二:delete[常量]指針; 的格式為:類型&名=變量名是對(duì)所維系的目標(biāo)賦值,而不是將維系到另一個(gè)目標(biāo)上。③對(duì)void進(jìn) ④不能建 ⑤本身不是一種數(shù)據(jù)類型,所以沒有的,也沒有的指針⑥不可以有空1:下列語句正確的是(intintvar1=100,*p=var1;//cannotconvertfrom'int'to'intintvar1=100;char*p=&var1;//cannotconvertfrom'int*'to'charintvar1=100,*q;void*p=&var1;q=p;//cannotconvertfrom'void*' 'inta中pb中定義了bc中將一個(gè)整型變量的地址賦給了指向例題2:有如下定義intarray[3]={0,1,2},*p=array;,則要數(shù)組中的第二個(gè)元素,下列語句錯(cuò)誤的是((a) (b) (c)*array+ (d)arraypad都是求出第二個(gè)元素的地址,然后取該地址中的值,所以這兩個(gè)選項(xiàng)實(shí)現(xiàn)了對(duì)數(shù)組中第二個(gè)元素的;選項(xiàng)b為下3:程序改錯(cuò)題voidmain(){constchar*p="oworld!";//①intlen=0;while(p++)p-cout<<"thelenthof"<<p<<"+)地址是否存在,這是錯(cuò)誤的。應(yīng)改為:while(*p++)len++;4int*f()f代表的是( 例題5:運(yùn)行下列程序結(jié)果為 constintN=3;voidprocess(float*p,intn,float(*fun)(float*p,intn));floatarr_add(floatarr[],intn){intfloat}floatodd_add(float*p,int{intfloatsum=0;}floatarr_ave(float*p,int{intfloatsum=0,ave;}floatarr_max(floatarr[],int{intfloatmax;}voidprocess(float*p,intn,float(*fun)(float*p,int{floatresult;}void{voidprocess(float*p,intn,float(*fun)(float*p,intn));floatarr_add(floatarr[],intn);floatodd_add(float*p,intn);floatarr_ave(float*p,intn);floatarr_max(floatarr[],intn);staticfloata[]={1.5,3.8,5.6};intn=N;cout<<"\nthesumof"<<n<<"elementis:"<<"\n";cout<<"\nthesumofoldelementis:"<<"\n";cout<<"\nthesumofaverageof"<<n<<"elementis:"<<"\n";cout<<"\nthesumofumof"<<n<<"elementis:"<<"\n";}process(float*p,intn,float*fun)(float*p,intn))的作用是通過函數(shù)指針調(diào)用不同的函數(shù)(其中第三個(gè)參數(shù)為函數(shù)指針process()函數(shù),傳遞的第一個(gè)實(shí)參為數(shù)組首地thesumof3elementis:thesumofoldelementthesumofaverageof3element0thesum umof3element6:對(duì)于下列函數(shù)定義,說法正確的是(void{intint*p=&var1,*q=&var2;}void{intint&p=var1,&q=var2;}fun1與fun2fun1p、q中均存放var2的地址;運(yùn)行fun2p、q均為var2fun1pvar1的地址,qvar2fun2pvar1的別名,qvar2的別名。fun1p、qvar2fun2pvar1的別名,qvar2的別本題主要考查和指針的區(qū)別。對(duì)于函數(shù)fun1(),p和q為指向整型的指針,它們分別被var1var2的地址,p=q則使pq中的地址即為var2的地址,所以最終p,q里都存放var2的地址對(duì)于函數(shù)fun2(),p和q為它們分別被初始化為var1和var2的別名,一旦被初始化,它就不能在指向其他對(duì)象。p=q的作用是讓var1的值var2var1和var23pqvar1和var2的別名。必須被初始化為指向一個(gè)對(duì)象,一旦初始化了它就不能再指向其他對(duì)象;intstrcmp1(constchar*str1,constchar*str2);voidmain(){chars1[100],s2[100];intresult;

}

intstrcmp1(constchar*str1,constchar{{{}}

return*str1-return*str1-}10個(gè)國家名稱,用指針數(shù)組實(shí)現(xiàn)排序輸出。voidccmp(char*a[]);voidmain(){char"Oman","Romania"Spainfor(inti=0;i<10;i++)}voidccmp(char{char*p;inti,j;{{}}}iintx的別名,正確的定義語句是((a)int (b)int (c)int (d)int在下列指針表達(dá)式中,與下標(biāo)a[i][j]不等效的是((a) (b) (c) (d)charstr[5],str[1]的地址的是((a) (b) (c) 已知:inta[]={1,2,3,4,5,6},*p=a,xx5的是((a) (b)p+=5;x=*p++ (c) (d)p+=4;若有說明:inti,j=6,*p;p=&ii=j等價(jià)的語句是((a) (b) (c) p1p2int型一維數(shù)組的指針變量,kint型變量,則不能正確執(zhí)行的語句是((a) (b) (c) (d)下面函數(shù)的功能是(intfun(char{char*y=x;returny-x-1;} (b)求字符串存放位(c)比較兩個(gè)字符串的大 (d)將字符串x連接到字符串y后執(zhí)行以下程序段后,m的值為(intintm,*p=&a[0][0];(a) (b) (c) (d)ptr正確敘述是( ptrint則輸出結(jié)果是((a) (b) (c) (d) #include<iostream.h>voidmain(){intint}max=15,min-=-5,請(qǐng)將程序補(bǔ)充完整。constintvoidmax_min(intarr[],int*pt1,int*pt2,int{int{if(arr[i]>*pt1) if(arr[i]<*pt2) }return}void{voidmax_min(intarr[],int*pt1,int*pt2,intn); int*pt1,*pt2,a,b; } char*month_name(int{staticchar"ILLEGALMONTH","JANUARY",}void{char*month_name(int } voidcallbyval(inta,intb,int}voidcallbypointer(int*a,int*b,int*{}voidcallbyreference(int&a,int&b,int&}void{inta=1,b=2,c=3;int&a1=a;int&b1=a;int&}(該程序僅處理金額為0.00-99999.99元10234.56char*ap=”char*bp=”howare③一個(gè)元素,保持有序iaabdbbaacd MONTH voidmain(){doubleconstchar*c[8]={"萬","仟","佰","拾","元","角","分"};intb[7]={0};intcout<<"\n請(qǐng)輸入金額(0.00~99999.99):\n";{}{{--}{}{}{}

}}#includevoidSwap(char*&str1,char*&void{char*ap="char*bp="howarecout<<ap<<endl<<bp<<endl;Swap(ap,bp);cout交換以后cout<<ap<<endl<<bp}voidSwap(char*&str1,char*&{char*temp=str1;}struct{intdata;node*next;intcreat(node* //{node*p,*s;inta;cout<<"請(qǐng)按從大到小的順序輸入結(jié)點(diǎn)值,0結(jié)束:\n";{if(!(s=(node //分配結(jié)點(diǎn)空間,可以該用newreturn{}}

//每次將新建結(jié)點(diǎn)s到頭結(jié)點(diǎn)后(逆序return}voidshowlist(node* //{node*q; {}}intlen(node //求表長(不包含頭結(jié)點(diǎn){node*p=h->next;inti=0;{}return}intinsert(node //一個(gè)元素,保持有序{intnodecout<<"請(qǐng)輸入要的數(shù)\n";return{{}}return}intdel(node //刪除鏈表中第i{intnodecout<<"請(qǐng)輸入要?jiǎng)h除數(shù)的位置:";{}{

return1;{ //p} //q}return}void{node{cout<<""<<len(head)<<endl<<endl;}}第8 類和對(duì)象的創(chuàng)class{類成員的控制(priate(poteced(public私有成員只能被本類的成員函數(shù)及其友元當(dāng)中未指定控制時(shí),系統(tǒng)類的數(shù)據(jù)成員與成員函數(shù)類定義中數(shù)據(jù)成員的數(shù)據(jù)類型和名稱,不能在類內(nèi)說明數(shù)據(jù)成員的同時(shí)為其賦初返回類型類名::函數(shù)名(參數(shù)表)},在類外將該成員函數(shù)定義為內(nèi)聯(lián)函數(shù)。只要在定義前加關(guān)鍵字inline,以顯示定義內(nèi)聯(lián)函數(shù)的有顯式和隱式兩種形式。隱式:直接將成員函數(shù)定義在類顯示:將內(nèi)聯(lián)函數(shù)定義在類外,其 前要加關(guān)鍵字inline,以顯式地① {}②析構(gòu)函數(shù)的名字必須是~{}new動(dòng)態(tài)申請(qǐng)空間,在析構(gòu)函數(shù)中用delete內(nèi)存空間。生成??截悩?gòu)造函數(shù)名與類名相同,但參數(shù)是本類對(duì)象的??截悩?gòu)造函數(shù)沒有返回值。{} 。。class類名類名 ){}定義一維對(duì)象數(shù)組的一般格式為:[常量表達(dá)式];對(duì)象數(shù)組的<類名*指針變量名static說明的那些數(shù)據(jù)成員。靜態(tài)數(shù)據(jù)成員屬于類而不對(duì)靜態(tài)數(shù)據(jù)成員初始化只能在類行,一般在在類與main()之間的位置。=值;對(duì)靜態(tài)數(shù)據(jù)成員的可以有兩種形式: 或?qū)ο竺o態(tài)函數(shù)名使元時(shí)一定要慎重。友元關(guān)系是單向的,也是不能傳遞的。一個(gè)普通函數(shù)作為某個(gè)類的友元時(shí)即為友元函數(shù)在該函數(shù)中可以其由friendfriend(參數(shù)表沒有區(qū)別。通常友元函數(shù)的定義在類行。問由friend語句所在的類的對(duì)象的私有成員和公有成員。當(dāng)一個(gè)類A的成員函數(shù)作為另一個(gè)類B的友元函數(shù)時(shí),在類B中的格式為friend::函數(shù)名(參數(shù)表AB的友類,則類A中的所有成員函數(shù)都是類B的友元成員函數(shù),所以可以通過對(duì)象名B的私有成員和公有成員。當(dāng)類A為類B的友類時(shí),在類B中的格式為:firiendclass友元類名>;friend友元類名1.下列程序段是否有錯(cuò),若有錯(cuò)請(qǐng)改錯(cuò)。class {intx,y;voidsetpoint(int, intpoint::setpoint(intxx,int { return }void{point }class{intx,y;voidsetpoint(int, intgetx(); 成員函數(shù)getx()的函數(shù)原型intgety(); 成員函數(shù)gety的函數(shù)原型voidpoint:setpoint(intxx,intyy{;}intpoint // returnintpoint // return2student的構(gòu)造函數(shù)的說明的是((a)voidstudent(int (b)intstudent( void型在內(nèi)。構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù),可帶有參數(shù)a、b均有返回值類型,不能作為構(gòu)造函數(shù)。選c為常成員函數(shù),構(gòu)造函數(shù)不能為常成員函數(shù)。答案為:d3.下列說法正確的是(可以定義修改對(duì)象數(shù)據(jù)成員的const不允許任何成員函數(shù)調(diào)用const對(duì)象,除非該成員函數(shù)也為constconstconstconstconst成員函數(shù)。c++編譯器不允許任何成員函數(shù)調(diào)用const對(duì)象,除非該成員函數(shù)本身也為const。constconstconstconstconst4.運(yùn)行下列程序后,constructingA!”和destructingA!”分別輸出幾次(classA{intx;{cout<<"constructing{cout<<"void{AA*p=newA;deletep;}(a)2次,2次 (b)3次,3次 (c)1次,3次 (d)3次,1次2次構(gòu)造函數(shù);newAA3次構(gòu)造函數(shù)。deletep;會(huì)撤消new運(yùn)算分配的空間,它會(huì)調(diào)用1次析構(gòu)函數(shù)。主函數(shù)結(jié)束時(shí)要數(shù)組所23次。答案為:b例題5.運(yùn)行下列程序的結(jié)果為 classcourse{intcharname[50];course(intcsid,char{cout<<"constructingcourse!"<<endl;}{}int{returnid;}char*getname(){return}class{charname[10];intage;coursec1;student(char*sname,intsage,intcid,char {cout<<"constructingstudent!"<<endl;}{cout<<"destructing}void{<<"course<<"course}void{studentst1("tom",23,1,"c++programminglanguage");}student類的對(duì)象course類的構(gòu)造函數(shù),最后才執(zhí)行constructingcourse!constructingstudent!courseid:1coursename:c++programminglanguagedestructingstudent!destructing例題6.運(yùn)行下列程序輸出結(jié)果為 classA{A(intX){cout<<"ok!";}int{Areturn}a1ok例題7.運(yùn)行下列程序結(jié)果為 constdoublePI=3.14159;classcircle{doublestaticintnum;circle(circle&);doublegetr();{}{}double{return}doublegetradius(circle{return}circle{circlec4(5);return}intcircle::num=0;voidmain(){circlec1(1);circlec2(c1);circlec4(1);}1238.讀程序?qū)懡Y(jié)果或者程序填空。class{constinti;int&j;A(int&void{}void{intx=1;A}例題9.運(yùn)行下列程序結(jié)果為 classstaticinti;intvoidf(){Objob2;cout<<ob2.getVal();}intmain(){Objob1;deleteob3;cout<<Obj::getVal();return}函數(shù),使得靜態(tài)成員的值為2,ob2.getVal()返回靜態(tài)數(shù)據(jù)成員i的值,即輸出2。函數(shù)f()ob2i1。接著在主函數(shù)中用new運(yùn)算符動(dòng)態(tài)分配空間,又一次調(diào)用構(gòu)造函數(shù)使i加1,所以再次輸出時(shí)i的值為2。最后用deleteob3所指的對(duì)象空間,則會(huì)調(diào)用析構(gòu)函數(shù)使i的值減1,因此i1。本題答案為:22110ABBC的友元,則下列說法正確的是(類B是類C的友 (b)類A是類C的友(c)類A,B,C互為友元 :5classnum{intx,y; num::num(intx,int{ }intsum(num&{return}void{int }本題主要考查友元的應(yīng)用以及對(duì)不同作用域變量的方法下列各項(xiàng)中不能用于類的成員控制權(quán)限的關(guān)鍵字是( 2.下列關(guān)于構(gòu)造函數(shù)的說法錯(cuò)誤的是((b)void類型。class{intage;char*name;student類的成員age是( classpoint{intx,y;point(intx1,intpointpoint類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是((a)2次 (b)3次 (c)4次 (d)5次5.在下列哪種情況下不會(huì)調(diào)用拷貝構(gòu)造函數(shù)(6.下列關(guān)于友元的描述錯(cuò)誤的是(在友元函數(shù)中可以通過this指針直接對(duì)象的私有成員#include<iostream>usingnamespacestd;classAA{intn;AA(intk):n(k){}intget(){returnn;}intget()const{returnintmain({AAconstAAb(6);cout<<a.get()<<b.get();return0;}運(yùn)行該程序結(jié)果為( #includeiostream.h>classTest{Test(){n+=2;~Test(){n-=3;staticintgetNum(){returnn;}staticintintTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<<Test::getNum()<<endl;return0;}執(zhí)行后的輸出結(jié)果是((a)n=0 9.下列程序的運(yùn)行結(jié)果為(class{staticintnum;A&fun(){return*this;}intA::num=0;voidg(A&a){cout<<a.fun}void{A} usingnamespacestd;classMyClass{MyClass(charc){cout<<c;}intMyClassp1,*p2;p2=newMyClass('X');deletep2;return} 函數(shù) 在類中靜態(tài)成員的關(guān)鍵字 完成 class {double circle(double { }doublearea();//面 void classintnum;voidset(int{ }//Anumint int{Aa;return0;}classA{inti;floatj;charA(intx,floaty,char{ }

//初始化成員cvoid{ }void{A}Objectid=0Object#include<iostream.h>classPoint{Point(intxx=0,intyy=0){ ;Y=yy;countP++;}Point(){countP--;}intGetX(){returnX;}intGetY(){returnstaticvoidGetC(){cout<<"Objectid="<<countP<<endl;}intstaticint intmain({A.GetC(return}classInsertSort{void{//此函數(shù)假設(shè)已排序序列初始化狀態(tài)只包含a[0]a[1]…a[n-1]for(inti=1;i<n;++i){int {}}}(hour(minute(ecod4.-5.this指針②double12.①A::num=num;②returnnum;intclasscube{doublex;cube(double{;}doublevolume();doublesarea();double{return}double{return}void{doublecube()<<}classTime{inthour;intminute;intintsethour(int);intsetminute(int);intsetsecond(int);intgethour();intgetminute();intgetsecond();voidshow12();voidshow24();{return{return}}{return{}}

return1;{return{}}

return1;intTime::getminute(){returnminute;}void{}

void{}void{inth,m,s;Timet;{}}第9 繼承性與派生派生類的和權(quán)限派生類 <{派生類新定義的成員派生類的權(quán)限②在派生類中可以直接基類的公有成員和保護(hù)成員但對(duì)于私有成員的只能通私有繼承②在派生類中可以直接基類的公有成員和保護(hù)成員但對(duì)于私有成員的只能通③在基類和派生類定義以外對(duì)基類的所有成員均無法直接也無法通過派生類的對(duì)象間接。保護(hù)繼承②在派生類中可以直接基類的公有成員和保護(hù)成員但對(duì)于私有成員的只能通③在基類和派生類定義以外對(duì)基類的所有成員均無法直接也無法通過派生類的對(duì)象間接。派生類構(gòu)造函數(shù)定義格式為:<派生類名>::<派生類名>(參數(shù)總表):基類名(參數(shù)表),1(1),…,對(duì)象成n(n){} 多重繼承的格式為<{派生類成員造函數(shù)的執(zhí)行次序嚴(yán)格按照時(shí)從左到右的順序來執(zhí)行的與定義派生類構(gòu)造函數(shù)定義多重繼承構(gòu)造函數(shù)的格式為:<派生類名>::<派生類名>(參數(shù)總

溫馨提示

  • 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. 人人文庫網(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)論