C++語言程序設(shè)計復(fù)習(xí)資料_第1頁
C++語言程序設(shè)計復(fù)習(xí)資料_第2頁
C++語言程序設(shè)計復(fù)習(xí)資料_第3頁
C++語言程序設(shè)計復(fù)習(xí)資料_第4頁
C++語言程序設(shè)計復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章C++語言概述1.2單選題1.下列關(guān)于面向?qū)ο蟾拍畹拿枋鲋?,錯誤的是(C)。A.面向?qū)ο蠓椒ū让嫦蜻^程方法更加先進(jìn)B.面向?qū)ο蠓椒ㄖ惺褂昧艘恍┟嫦蜻^程方法中沒有的概念C.面向?qū)ο蠓椒ㄌ娲私Y(jié)構(gòu)化程序設(shè)計方法D.面向?qū)ο蟪绦蛟O(shè)計方法要使用面向?qū)ο蟮某绦蛟O(shè)計語言2.下列各種高級語言中,不是面向?qū)ο蟮某绦蛟O(shè)計語言是(D)。A.C++B.JavaC.VBD.C3.下列關(guān)于類的描述中,錯誤的是(A)。A.類就是C語言中的結(jié)構(gòu)類型B.類是創(chuàng)建對象的模板C.類是抽象數(shù)據(jù)類型的實現(xiàn)D.類是具有共同行為的若干對象的統(tǒng)一描述體4.下列關(guān)于對象的描述中,錯誤的是(C)。A.對象是類的一個實例B.對象是屬性和行為的封裝體C.對象就是C語言中的結(jié)構(gòu)變量D.對象是現(xiàn)實世界中客觀存在的某種實體5.下列關(guān)于C++程序中使用提取符和插入符的輸入/輸出語句的描述中,錯誤的是(C)。A.提取符是對右移運算符(>>)重載得到的B.插入符是對左移運算符(<<)重載得到的C.提取符和插入符都是雙目運算符,它們要求有兩個操作數(shù)D.提取符和插入符在輸入/輸出語句中不可以連用1.3填空題1.C++語言具有面向?qū)ο蠓椒ㄖ幸蟮娜筇匦裕悍庋b性、繼承性和多態(tài)性。2.C++程序中,有且僅有一個主函數(shù)。3.C++程序是由類和函數(shù)組成的。4.C++源程序的擴(kuò)展名是cpp。5.使用插入符進(jìn)行標(biāo)準(zhǔn)輸出文件輸出時,使用的輸出流對象名是cout。1.4上機(jī)調(diào)試下列程序,并分析輸出結(jié)果1.#include<iostream.h>voidmain(){inti,j;cout<<"Enterij:";cin>>i>>j;cout<<"i="<<i<<','<<"j="<<j<<endl;cout<<"i+j="<<i+j<<','<<"i*j="<<i*j<<endl;}假定,輸入數(shù)據(jù)如下:Enterxy:59答:i=5,j=9i+j=14,i*j=452.#include<iostream.h>intmax(int,int);voidmain(){inta,b,c;a=5;b=8;c=max(a,b);cout<<"max("<<a<<','<<b<<")="<<c<<endl;}intmax(intx,inty){returnx>y?x:y;}答:max(5,8)=81.5編譯下列程序,修改所出現(xiàn)的錯誤,獲得正確結(jié)果1.main(){cout<<"Inmain().\n"}答:修改后如下:#include<iostream.h>voidmain(){cout<<"Inmain().\n";}2.#include<iostream.h>voidMAIN(){cin>>a;intb=a+a;cout<<"b=<<b<<\n";}答:修改后如下:#include<iostream.h>voidmain(){inta;cin>>a;intb=a+a;cout<<"b=”<<b<<”\n";}3.#include<iostream.h>voidmain(){inti,j;i=5;intk=i+j;COUT<<"i+j="<<k<<endl;}答:#include<iostream.h>voidmain(){inti,j;j=10;i=5;intk=i+j;cout<<"i+j="<<k<<endl;}2.2單選題1.下列變量名中,非法的是(C)。A.A25B.My_carC.My-strD.a(chǎn)bc2.下列常量中,十六進(jìn)制int型常量是(A)。A.0x5fB.x2aC.046D.7a3.下列常量中,不是字符常量的是(B)。A.'\n'B."y"C.'x'D.'\7'4.在函數(shù)體內(nèi)定義了下述變量a,a的存儲類為(D)。inta;A.寄存器類B.外部類C.靜態(tài)類D.自動類5.下列關(guān)于變量存儲類的描述中,錯誤的是(C)。A.任何變量定義后都具有一個確定的存儲類B.變量的存儲類確定了變量的作用域和壽命C.定義變量時沒有存儲類說明符者一律為自動類D.內(nèi)部靜態(tài)類變量和外部靜態(tài)類變量的存儲類說明符都是static6.下列關(guān)于變量數(shù)據(jù)類型的描述中,錯誤的是(A)。A.定義變量時int型數(shù)據(jù)類型可以省略B.變量的數(shù)據(jù)類型可以決定該變量占內(nèi)存的字節(jié)數(shù)C.變量的數(shù)據(jù)類型是可以被強制的D.變量的數(shù)據(jù)類型是有高低之分的7.長雙精度浮點型常量的后綴是(C)。A.UB.FC.LD.無8.下列運算符中,不能用于浮點數(shù)操作的是(D)。A.++B.+C.*=D.&(雙目)9.下列運算符中,優(yōu)先級最高的是(A)。A.*(雙目)B.||C.>>D.%=10.下列運算符中,優(yōu)先級最低的是(B)。A.==B.?:C.|D.&&11.已知:inta(3);下列表達(dá)式中,錯誤的是(C)。A.a(chǎn)%2==0B.a(chǎn)--+2C.(a2)++D.a(chǎn)>>=212.已知:intb(5),下列表達(dá)式中,正確的是(D)。A.b="a"B.++(b1)C.b%2.5D.b=3,b+1,b+213.下列關(guān)于類型轉(zhuǎn)換的描述中,錯誤的是(C)。A.類型轉(zhuǎn)換運算符是(<類型>)B.類型轉(zhuǎn)換運算符是單目運算符C.類型轉(zhuǎn)換運算符通常用于保值轉(zhuǎn)換中D.類型轉(zhuǎn)換運算符作用于表達(dá)式左邊14.下列表達(dá)式中,其值為0的是(A)。A.5/10B.!0C.2>4?0:1D.2&&2||015.下列表達(dá)式中,其值不為邏輯值的是(A)。A.算術(shù)表達(dá)式B.關(guān)系表達(dá)式C.逗號表達(dá)式D.邏輯表達(dá)式16.下列關(guān)于數(shù)組概念的描述中,錯誤的是(B)。A.?dāng)?shù)組中所有元素類型是相同的B.?dāng)?shù)組定義后,它的元素個數(shù)是可以改變的C.?dāng)?shù)組在定義時可以被初始化,也可以不被初始化D.?dāng)?shù)組元素的個數(shù)與定義時的每維大小有關(guān)17.下列關(guān)于數(shù)組維數(shù)的描述中,錯誤的是(C)。A.定義數(shù)組時必須將每維的大小都明確指出B.二維數(shù)組是指該數(shù)組的維數(shù)為2C.?dāng)?shù)組的維數(shù)可以使用常量表達(dá)式D.?dāng)?shù)組元素個數(shù)等于該數(shù)組的各維大小的乘積18.下列關(guān)于數(shù)組下標(biāo)的描述中,錯誤的是(B)。A.C++語言中數(shù)組元素的下標(biāo)是從0開始的B.?dāng)?shù)組元素下標(biāo)是一個整常型表達(dá)式C.?dāng)?shù)組元素可以用下標(biāo)來表示D.?dāng)?shù)組元素的某維下標(biāo)值應(yīng)小于該維的大小值19.下列關(guān)于初始值表的描述中,錯誤的是(C)。A.?dāng)?shù)組可以使用初始值表進(jìn)行初始化B.初始值表是用一對花括號括起的若干個數(shù)據(jù)項組成的C.初始值表中數(shù)據(jù)項的個數(shù)必須與該數(shù)組的元素個數(shù)相等D.使用初始值表給數(shù)組初始化時,沒有被初始化的元素都具有默認(rèn)值20.下列關(guān)于字符數(shù)組的描述中,錯誤的是(D)。A.字符數(shù)組中的每一個元素都是字符B.字符數(shù)組可以使用初始值表進(jìn)行初始化C.字符數(shù)組可以存放字符串D.字符數(shù)組就是字符串21.下列關(guān)于字符串的描述中,錯誤的是(C)。A.一維字符數(shù)組可以存放一個字符串B.二維字符數(shù)組可以存放多個字符串C.可以使用一個字符串給二維字符數(shù)組賦值D.可以用一個字符串給二維字符數(shù)組初始化22.已知:inta[5]={1,2,3,4};下列數(shù)組元素值為2的數(shù)組元素是(B)。A.a(chǎn)[0]B.a(chǎn)[1]C.a(chǎn)[2]D.a(chǎn)[3]23.已知:intab[][3]={{1,5,6},{3},{0,2}};數(shù)組元素ab[1][1]的值為(A)。A.0B.1C.2D.324.已知:chars[]="abcd";輸出顯示字符'c'的表達(dá)式是(C)。A.sB.s+2C.s[2]D.s[3]25.已知:charss[][6]={"while","for","else","break"};輸出顯示"reak"字符串的表達(dá)式是(B)。A.ss[3]B.ss[3]+1C.ss+3D.ss[3][1]2.3填空題1.C++語言中,基本數(shù)據(jù)類型包含有整型、浮點型、字符型、空值型和布爾型。2.變量的存儲類可分為自動類、寄存器類、外鄒類和靜態(tài)存儲類。3.浮點型常量可分為單精度、雙精度和長雙精度浮點型常量。4.結(jié)合性從右至左的運算符有單目運算符、雙目運算符和賦值運算符。5.條件表達(dá)式是由三目運算符組成的,該表達(dá)式的類型是由冒號左邊和右邊兩個操作數(shù)中類型高的操作數(shù)類型決定的。6.已知:doubledd[][3]={{1.2,2.4,3.6},{4.8,5.2},{6.4}};這里dd是一個二維數(shù)組的數(shù)組名,該數(shù)組共有9個元素,每個元素的類型是double。數(shù)組元素dd[0][0]的值是1.2,dd[1][1]的值是5.2,數(shù)組元素dd[2][2]的值是0。7.已知:charss[][6]={"while","break","for","else"};字符數(shù)組ss是二維數(shù)組,它的第1維大小應(yīng)該是4。使用cout和<<輸出字符串"for"時,對應(yīng)的表達(dá)式是ss+2。使用cout和<<輸出字符串"break"的子串"reak"時,對應(yīng)的表達(dá)式是ss[1]+1。使用cout和<<輸出字符串else中的字符's'時,對應(yīng)的表達(dá)式是ss[3][2]。2.4分析下列程序2.#include<iostream.h>voidmain(){constintA=8;constcharCH='k';constdoubleD=8.5;cout<<"A="<<A<<endl;cout<<"CH+2="<<char(CH+2)<<endl;cout<<"D-5.8="<<D-5.8<<endl;}答:A=8CH=2=mD-5.8=2.73.#include<iostream.h>inta=9;voidmain(){intb=5;cout<<"a+b="<<a+b<<endl;staticintc;cout<<"c+a="<<c+a<<endl;constlongintd=8;cout<<"a+d-b="<<a+d-b<<endl;}答:a+b=14c+a=9a+d-b=124.#include<iostream.h>voidmain(){inta=3;charb='m';cout<<"a="<<a<<','<<"b="<<b<<endl;{inta=5;b='n';cout<<"a="<<a<<','<<"b="<<b<<endl;}cout<<"a="<<a<<','<<"b="<<b<<endl;}答:a=5,b=ma=3,b=na=3,b=n3.2單選題1.下列關(guān)于語句的描述中,錯誤的是(A)。A.C++程序中的函數(shù)是由若干條語句組成的B.每條語句都要實現(xiàn)某種操作C.條件語句是用來實現(xiàn)分支操作的D.循環(huán)語句是用來在一定條件下重復(fù)執(zhí)行某段程序的2.下列關(guān)于條件語句的描述中,錯誤的是(C)。A.if語句中最多只能有一個else子句B.if語句的if體內(nèi)可以出現(xiàn)開關(guān)語句C.if語句中elseif子句和else子句的順序是沒有限制的D.if語句中else子句是與它最近的if子句配對的3.下列關(guān)于開關(guān)語句的描述中,錯誤的是(B)。A.開關(guān)語句中,case子句的個數(shù)是不受限制的B.開關(guān)語句中,case子句的語句序列中一定要有break語句C.開關(guān)語句中,default子句可以省略D.開關(guān)語句中,右花括號具有退出開關(guān)語句的功能4.下列關(guān)于循環(huán)語句的描述中,錯誤的是(A)。A.while循環(huán)語句中<條件>給定的表達(dá)式不能為非0的常量,否則便是死循環(huán)B.for循環(huán)語句的循環(huán)體內(nèi)可以出現(xiàn)while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句C.循環(huán)語句的循環(huán)體可以是空語句D.循環(huán)語句的循環(huán)體內(nèi)可以出現(xiàn)break語句,也可以出現(xiàn)continue語句5.已知:inti(3);下列do-while循環(huán)語句的循環(huán)次數(shù)是(D)。do{cout<<i--<<endl;i--;}while(i!=0);A.0B.3C.1D.無限6.下列for循環(huán)語句的循環(huán)次數(shù)是(B)。for(inti(0),j(5);i=3;i++,j--);A.3B.無限C.5D.07.下列while循環(huán)語句的循環(huán)次數(shù)是(A)。while(inti(0))i--;A.0B.1C.2D.無限8.下列程序段執(zhí)行后,j值是(B)。for(inti(0),j(0);i<10;i++)if(i)j++;A.0B.9C.10D.無限9.已知:typedefcharCH;下列描述中,正確的是(A)。A.使用CH定義的變量是char型變量B.使用CH定義的是一個字符常量C.使用CH定義的變量其類型不確定D.使用CH定義的是一個字符串10.下列關(guān)于預(yù)處理命令的描述中,錯誤的是(D)。A.預(yù)處理命令最左邊的標(biāo)識符是#B.預(yù)處理命令是在編譯前處理的C.宏定義命令可以定義符號常量D.文件包含命令只能包含.h文件3.3填空題1.表達(dá)式語句是一個表達(dá)式后邊加上分號(;)組成的??照Z句是只有一個分號的語句。2.復(fù)合語句是由兩條條或兩條條以上的語句加上花括號({})組成的。3.分程序是一種帶有說明語句的復(fù)合語句。4.循環(huán)語句的共同特點是都應(yīng)具有循環(huán)體和退出循環(huán)的條件。5.下列程序是求100之內(nèi)的能被7整除的自然數(shù)之和。#inelude<iostream.h>voidmain(){intsum;_sum=0_;for(inti(1);__i<=100_;i++)if(_i%7==0__)sum+=i;cout<<sum<<endl;}3.4上機(jī)調(diào)試下列程序,并分析其輸出結(jié)果1.#include<iostream.h>voidmain(){inta(8),b(5);if(!a)b--;elseif(b)if(a)a++;elsea--;elseb++;cout<<a<<','<<b<<endl;}答:9,52.#include<iostream.h>voidmain(){inta(10);while(--a){if(a==5)break;if(a%2==0&&a%3==0)continue;cout<<a<<endl;}}答:9873.#include<iostream.h>voidmain(){intb(10);do{++b;cout<<++b<<endl;if(b==15)break;}while(b<15);cout<<"ok!"<<endl;}答:121416ok!4.#include<iostream.h>voidmain(){intw(5);do{switch(w%2){case1:w--;break;case0:w++;break;}w--;cout<<w<<endl;}while(w>0);}答:31-15.#include<iostream.h>voidmain(){inta(4),b(5),i(0),j(0);switch(a){case4:switch(b){case4:i++;break;case5:j++;break;default:i++;j++;}case5:i++;j++;break;default:i++;j++;}cout<<i<<','<<j<<endl;}答:1,26.#include<iostream.h>voidmain(){intb(10);for(inti=9;i>=0;i--){switch(i){case1:case4:case7:b++;break;case2:case5:case8:break;case3:case6:case9:b+=2;}}cout<<b<<endl;}答:194.2單選題1.下列關(guān)于定義一個指向double型變量的指針,正確的是(B)。A.inta(5);double*pd=a;B.doubled(2.5),*pd=&d;C.doubled(2.5),*pd=d;D.doublea(2.5),pd=d;2.下列關(guān)于創(chuàng)建一個int型變量的引用,正確的是(A)。A.inta(3),&ra=a;B.inta(3),&ra=&a;C.doubled(3.1);int&rd=d;D.inta(3),ra=a;3.下列關(guān)于指針概念的描述中,錯誤的是(B)。A.指針中存放的是某變量或?qū)ο蟮牡刂分礏.指針的類型是它所存放的數(shù)值的類型C.指針是變量,它也具有一個內(nèi)存地址值D.指針的值(非常量指針)是可以改變的4.下列關(guān)于引用概念的描述中,錯誤的是(A)。A.引用是變量,它具有值和地址值B.引用不可以作數(shù)組元素C.引用是變量的別名D.創(chuàng)建引用時必須進(jìn)行初始化5.已知:inta[5],*p=a;則與++*p相同的是(D)。A.*++pB.a(chǎn)[0]C.*p++D.++a[0]6.已知:inta[]={1,2,3,4,5},*p=a;在下列數(shù)組元素地址的表示中,正確的是(C)。A.&(a+1)B.&(p+1)C.&p[2]D.*p++7.已知:inta[3][4],(*p)[4];下列賦值表達(dá)式中,正確的是(A)。A.p=a+2B.p=a[1]C.p=*aD.p=*a+28.已知:intb[3][5]={0};下列數(shù)組元素值的表示中,錯誤的是(D)。A.**(b+1)B.(*(b+1))[2]C.*(*(b+1)+1)D.*(b+2)9.已知:inta=1,b=2,*p[2];下列表達(dá)式中正確的是(C)。A.p=&aB.p=&bC.p[0]=&a,p[1]=&bD.p[]={&a,&b};10.已知:inta(5),&ra=a;下列描述中,錯誤的是(D)。A.ra是變量a的引用,即為變量的別名B.ra的值為5C.ra的地址值為&aD.改變ra的值為10,變量a值仍為54.3填空題1.單目運算符&作用在變量名左邊,表示該變量的地址值,單目運算符*作用在指針名的左邊,表示取該變量的值。2.指向一維數(shù)組元素的指針是一級指針,指向二維數(shù)組元素的指針是一級指針,指向一維數(shù)組的指針是二級指針,指向一級指針的指針是二級指針,一維一級指針數(shù)組名是二級指針的地址值,二維數(shù)組的數(shù)組名是二級指針的地址值。3.在一個二維數(shù)組b[3][5]中,b[0]與*b是等價的,&b[1]與b+1是等價的。4.指針的運算有4種,它們是賦值運算、一個指針加減整型數(shù)的運算、兩個指針相減和比較運算。5.引用不是變量,它是某個變量或?qū)ο蟮膭e名。引用的值是被引用的變量的值,引用的地址值是被引用的變量的地址值。4.4分析下列程序的輸出結(jié)果1.#include<iostream.h>voidmain(){inta[]={5,4,3,2,1};int*p=&a[2];intm(5),n;for(inti(2);i>=0;i--){n=(*(p+i)<*a)?*(p+i):*a;cout<<n<<endl;}}答:1235.2單選題1.當(dāng)一個函數(shù)沒有返回值時,該函數(shù)類型應(yīng)說明為(A)。A.voidB.intC.無D.任意2.下列關(guān)于設(shè)置函數(shù)默認(rèn)的參數(shù)值的描述中,錯誤的是(C)。A.可對函數(shù)的部分參數(shù)或全部參數(shù)設(shè)置默認(rèn)值B.在有函數(shù)說明時,默認(rèn)值應(yīng)設(shè)置在函數(shù)說明時,而不是定義時C.設(shè)置函數(shù)默認(rèn)參數(shù)值時,只可用常量不可用含有變量的表達(dá)式D.設(shè)置函數(shù)參數(shù)默認(rèn)值應(yīng)從右向左設(shè)置3.下列關(guān)于被調(diào)用函數(shù)中return語句的描述中,錯誤的是(D)。A.一個函數(shù)中可以有多條return語句B.return語句具有返回程序控制權(quán)的作用C.函數(shù)通過return語句返回值時僅有一個D.一個函數(shù)中有且僅有一條return語句4.函數(shù)返回值的類型是由(B)決定的。A.調(diào)用該函數(shù)的調(diào)用函數(shù)的類型B.定義該函數(shù)時所指定的類型C.return語句中表達(dá)式的類型D.接收函數(shù)返回值的變量或?qū)ο蟮念愋?.下列設(shè)置函數(shù)參數(shù)默認(rèn)值的說明語句中,錯誤的是(C)。A.intfun(intx,inty=10);B.intfun(intx=5,int=10);C.intfun(intx=5,inty);D.intfun(intx,inty=a+b);(其中,a和b是已定義過具有有效值的變量)6.下列選擇重載函數(shù)的不同實現(xiàn)的判斷條件中,錯誤的是(D)。A.參數(shù)類型不同B.參數(shù)個數(shù)不同C.參數(shù)順序不同D.函數(shù)返回值不同7.已知:intfun(int&a),m=10;下列調(diào)用fum()函數(shù)的語句中,正確的是(C)。A.fun(&m);B.fun(m*2);C.fun(m);D.fun(m++);8.在函數(shù)的引用調(diào)用中,函數(shù)的實參和形參分別應(yīng)是(C)。A.變量值和變量B.地址值和指針C.變量名和引用D.地址值和引用9.在函數(shù)的傳址調(diào)用中,函數(shù)的實參和形參分別應(yīng)是(B)。A.變量值和變量B.地址值和指針C.變量名和引用D.地址值和引用10.說明一個內(nèi)聯(lián)函數(shù)時,應(yīng)加關(guān)鍵字是(A)。A.inlineB.staticC.voidD.extern5.3填空題1.如果將調(diào)用一個函數(shù)的過程分為3個步驟,第1步是轉(zhuǎn)去執(zhí)行被調(diào)用函數(shù),第2步是執(zhí)行被調(diào)用函數(shù)的語句,第3步是返回操作。2.函數(shù)的存儲類分兩種,它們分別是外部函數(shù)和內(nèi)部函數(shù),其中內(nèi)部函數(shù)的存儲類說明不可省略,該說明符是static。3.使用關(guān)鍵字inline說明的函數(shù)稱為內(nèi)聯(lián)函數(shù),具有相同函數(shù)名但具有不同實現(xiàn)的函數(shù)稱為重載函數(shù)。4.在調(diào)用一個函數(shù)過程中可以直接或間接地調(diào)用該函數(shù),則該函數(shù)稱為被調(diào)用函數(shù)。這種調(diào)用稱為嵌套調(diào)用。5.在引用調(diào)用中,函數(shù)實參用變量名,形參用引用名。5.4分析下列程序的輸出結(jié)果1.#include<iostream.h>intfun(intn){intp(1),s(0);for(inti(1);i<n;i++){p*=i;s+=p;}returns;}voidmain(){ints=fun(4);cout<<s<<endl;}答:97.#include<iostream.h>voidswap(int&,int&);voidmain(){inta(8),b(5);cout<<"a="<<a<<','<<"b="<<b<<endl;swap(a,b);cout<<"a="<<a<<','<<"b="<<b<<endl;}voidswap(int&i,int&j){intt;t=i;i=j;j=t;}答:a=8,b=5a=5,b=86.2單選題1.下列關(guān)于類的定義格式的描述中,錯誤的是(C)。A.類中成員有3種訪問權(quán)限B.類的定義可分說明部分和實現(xiàn)部分C.類中成員函數(shù)都是公有的,數(shù)據(jù)成員都是私有的D.定義類的關(guān)鍵字通常用class,也可用struct2.下列關(guān)鍵字中,不屬于定義類時使用的關(guān)鍵字是(D)。A.classB.structC.publicD.default3.下列關(guān)于成員函數(shù)的描述中,錯誤的是(A)。A.成員函數(shù)的定義必須在類體外B.成員函數(shù)可以是公有的,也可以是私有的C.成員函數(shù)在類體外定義時,前加inline可為內(nèi)聯(lián)函數(shù)D.成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值4.下列關(guān)于對象的描述中,錯誤的是(D)。A.定義對象時系統(tǒng)會自動進(jìn)行初始化B.對象成員的表示與C語言中結(jié)構(gòu)變量的成員表示相同C.屬于同一個類的對象占有內(nèi)存字節(jié)數(shù)相同D.一個類所能創(chuàng)建對象的個數(shù)是有限制的5.下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是(C)。A.構(gòu)造函數(shù)可以重載B.構(gòu)造函數(shù)名同類名C.帶參數(shù)的構(gòu)造函數(shù)具有類型轉(zhuǎn)換作用D.構(gòu)造函數(shù)是系統(tǒng)自動調(diào)用的6.下列關(guān)于析構(gòu)函數(shù)的描述中,錯誤的是(A)。A.析構(gòu)函數(shù)的函數(shù)體都為空B.析構(gòu)函數(shù)是用來釋放對象的C.析構(gòu)函數(shù)是系統(tǒng)自動調(diào)用的D.析構(gòu)函數(shù)是不能重載的7.下列關(guān)于靜態(tài)成員的描述中,錯誤的是(C)。A.靜態(tài)成員都是使用static來說明的B.靜態(tài)成員是屬于類的,不是屬于某個對象的C.靜態(tài)成員只可以用類名加作用域運算符來引用,不可用對象引用D.靜態(tài)數(shù)據(jù)成員的初始化是在類體外進(jìn)行的8.下列關(guān)于常成員的描述中,錯誤的是(C)。A.常成員是用關(guān)鍵字const說明的B.常成員有常數(shù)據(jù)成員和常成員函數(shù)兩種C.常數(shù)據(jù)成員的初始化是在類體內(nèi)定義它時進(jìn)行的D.常數(shù)據(jù)成員的值是不可以改變的9.下列關(guān)于友元函數(shù)的描述中,錯誤的是(B)。A.友元函數(shù)不是成員函數(shù)B.友元函數(shù)只可訪問類的私有成員C.友元函數(shù)的調(diào)用方法同一般函數(shù)D.友元函數(shù)可以是另一類中的成員函數(shù)10.下列關(guān)于類型轉(zhuǎn)換函數(shù)的描述中,錯誤的是(C)。A.類型轉(zhuǎn)換函數(shù)是一種成員函數(shù)B.類型轉(zhuǎn)換函數(shù)定義時不指出類型,也沒有參數(shù)C.類型轉(zhuǎn)換函數(shù)的功能是將其函數(shù)名所指定的類型轉(zhuǎn)換為該類類型D.類型轉(zhuǎn)換函數(shù)在一個類中可定義多個6.3填空題1.類體內(nèi)成員有3個訪問權(quán)限,說明它們的關(guān)鍵字分別是公有、私有和保護(hù)。2.使用class定義的表中,成員的默認(rèn)訪問權(quán)限是私有的;由struct定義的類中,成員的默認(rèn)的訪問權(quán)限是公有的。3.如果一個類中沒有定義任何構(gòu)造函數(shù)時,系統(tǒng)會自動提供一個默認(rèn)構(gòu)造函數(shù);同樣,類中沒有定義析構(gòu)函數(shù)時,系統(tǒng)會自動提供一個默認(rèn)析構(gòu)函數(shù)。4.靜態(tài)成員是屬于類的,它除了可以通過對象名來引用外,還可以使用類名限定來引用。5.友元函數(shù)是被說明在類體內(nèi)的非成員函數(shù)。友元函數(shù)可訪問該類中的成員。6.完成下列類的定義。classA{public:A(){a=0;}intintGeta(A&m);private:inta;};intGeta(A&m){returnm.a;}6.4分析下列程序的輸出結(jié)果1.#include<iostream.h>classA{public:A(){a1=a2=0;cout<<"Defaultconstructorcalled.\n";}A(inti,intj);~A(){cout<<"Destructorcalled.\n";}voidPrint(){cout<<"a1="<<a1<<','<<"a2="<<a2<<endl;}private:inta1,a2;};A::A(inti,intj){a1=i;a2=j;cout<<"Constructorcalled.\n";}voidmain(){Aa,b(5,8);a.Print();b.Print();}答:Defaultconstructorcalled.Constructorcalled.a1=0,a2=0a1=5,a2=8Destructorcalled.Destructorcalled.2.#include<iostream.h>classB{public:B(){cout<<++b<<endl;}~B(){cout<<b--<<endl;}staticintGetb(){returnb;}private:staticintb;};intB::b=10;voidmain(){Bb1,b2,b3;cout<<B::Getb()<<endl;}答:111213131312113.#include<iostream.h>classDate{public:Date(inty,intm,intd){year=y;month=m;day=d;}friendvoidPrint(Date&);private:intyear,month,day;};voidPrint(Date&d){cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl;}voidmain(){Dated1(2005,10,1),d2(2005,12,9);Print(d1);Print(d2);}答:2005/10/12005/12/96.5編程題1.按下列要求編程:(1)定義一個描述矩形的類Rectangle,包括的數(shù)據(jù)成員有寬(width)和長(length);(2)計算矩形周長;(3)計算矩形面積;(4)改變矩形大小。通過實例驗證其正確性。答:編程如下:#include<iostream.h>classRectangle{public:Rectangle(inta,intb){width=a;length=b;}intArea(){returnwidth*length;}intPeriment(){return2*(width+length);}voidChangesize(inta,intb){width=a;length=b;}voidPrint();private:intwidth,length;};voidRectangle::Print(){cout<<"AREA="<<Area()<<endl;cout<<"PERIMENT="<<Periment()<<endl;}voidmain(){Rectangler(5,8);r.Print();r.Changesize(3,9);r.Print();}7.4分析下列程序的輸出結(jié)果1.#include<iostream.h>classA{public:A(inti){a=i;}A(){a=0;cout<<"Defaultconstructorcalled."<<a<<endl;}~A(){cout<<"Destructorcalled."<<a<<endl;}voidPrint(){cout<<a<<endl;}private:inta;};voidmain(){Aa[4],*p;intn=1;p=a;for(inti=0;i<4;i++)a[i]=A(++n);for(i=0;i<4;i++)(p+i)->Print();}答:Defaultconstructorcalled.0Defaultconstructorcalled.0Defaultconstructorcalled.0Defaultconstructorcalled.0Destructorcalled.2Destructorcalled.3Destructorcalled.4Destructorcalled.52345Destructorcalled.5Destructorcalled.4Destructorcalled.3Destructorcalled.28.2單選題1.下列關(guān)于繼承的描述中,錯誤的是(B)。A.繼承是重用性的重要機(jī)制B.C++語言支持單重繼承和雙重繼承C.繼承關(guān)系不是可逆的D.繼承是面向?qū)ο蟪绦蛟O(shè)計語言的重要特性2.下列關(guān)于基類和派生類的描述中,錯誤的是(C)。A.一個基類可以生成多個派生類B.基類中所有成員都是它的派生類的成員C.基類中成員訪問權(quán)限繼承到派生類中不變D.派生類中除了繼承的基類成員還有自己的成員3.下列關(guān)于派生類的描述中,錯誤的是(D)。A.派生類至少有一個基類B.一個派生類可以作另一個派生類的基類C.派生類的構(gòu)造函數(shù)中應(yīng)包含直接基類的構(gòu)造函數(shù)D.派生類默認(rèn)的繼承方式是public4.派生類的對象可以直接訪問的基類成員是(A)。A.公有繼承的公有成員B.保護(hù)繼承的公有成員C.私有繼承的公有成員D.公有繼承的保護(hù)成員5.下列描述中,錯誤的是(D)。A.基類的protected成員在public派生類中仍然是protected成員B.基類的private成員在public派生類中是不可訪問的C.基類public成員在private派生類中是private成員D.基類public成員在protected派生類中仍是public成員6.派生類構(gòu)造函數(shù)的成員初始化列表中,不能包含的初始化項是(B)。A.基類的構(gòu)造函數(shù)B.基類的子對象C.派生類的子對象D.派生類自身的數(shù)據(jù)成員7.下列關(guān)于子類型的描述中,錯誤的是(B)。A.在公有繼承下,派生類是基類的子類型B.如果類A是類B的子類型,則類B也是類A的子類型C.如果類A是類B的子類型,則類A的對象就是類B的對象D.在公有繼承下,派生類對象可以初始化基類的對象引用8.下列關(guān)于多繼承二義性的描述中,錯誤的是(D)。A.一個派生類的多個基類中出現(xiàn)了同名成員時,派生類對同名成員的訪問可能出現(xiàn)二義性B.一個派生類有多個基類,而這些基類又有一個共同的基類,派生類訪問公共基類成員時,可能出現(xiàn)二義性C.解決二義性的方法是采用類名限定D.基類和派生類中同時出現(xiàn)同名成員時,會產(chǎn)生二義性8.3填空題1.繼承的3種方式是公有、私有和保護(hù)。2.如果類A繼承了類B,則類A被稱為派生類,類B被稱為基類。3.在保護(hù)繼承方式下,基類的public成員成為派生類的保護(hù)成員,基類的protected成員成為派生類的保護(hù)成員。4.當(dāng)一個派生類中含有子對象時,該派生類的析構(gòu)函數(shù)中應(yīng)包含直接基類的析構(gòu)函數(shù)、子對象類的析構(gòu)函數(shù)和自身類的析構(gòu)函數(shù)。5.派生類的構(gòu)造函數(shù)的成員初始化列表中可以包含的初始化項有基類的構(gòu)造函數(shù)、子對象類的構(gòu)造函數(shù)、常數(shù)據(jù)成員和派生類其他非靜態(tài)數(shù)據(jù)成員。8.4分析下列程序的輸出結(jié)果1.#include<iostream.h>classA{public:A(inti,intj){a1=i;a2=j;}voidMove(intx,inty){a1+=x;a2+=y;}voidPrint(){cout<<'('<<a1<<','<<a2<<')'<<endl;}private:inta1,a2;};classB:privateA{public:B(inti,intj,intk,intl):A(i,j){b1=k;b2=l;}voidPrint(){cout<<b1<<','<<b2<<endl;}voidf(){A::Print();}voidfun(){Move(5,8);}private:intb1,b2;};voidmain(){Aa(11,12);a.Print();Bb(31,32,33,34);b.fun();b.Print();b.f();}答:(11,12)33.34(36,40)8.5編程題1.按下列要求編程:按照右邊圖中所示的各類的關(guān)系,編程輸出它們的信息。各類中的數(shù)據(jù)成員如下:Person:char*name(姓名),*dept(系別)Student:char*grade(年級)Teacher:char*lesson(授課名)StudentTeacher(在職讀研):char*major(專業(yè)方向)PersonTeacherStudentTeacherStudent答:編程如下:#include<iostream.h>#include<string.h>classPerson{public:Person(char*s){name=newchar[strlen(s)+1];strcpy(name,s);}voidPrint(){cout<<"姓名:"<<name<<endl;}protected:char*name;};classStudent:virtualpublicPerson{public:Student(char*s,char*t):Person(s){grad=newchar[strlen(t)+1];strcpy(grad,t);}voidPrint(){Person::Print();cout<<"年級:"<<grad<<endl;}protected:char*grad;};classTeacher:virtualpublicPerson{public:Teacher(char*s,char*t):Person(s){lesson=newchar[strlen(t)+1];strcpy(lesson,t);}voidPrint(){Person::Print();cout<<"授課名:"<<lesson<<endl;}protected:char*lesson;};classStudentTeacher:publicStudent,publicTeacher{public:StudentTeacher(char*p,char*q,char*r,char*s):Student(p,q),Teacher(p,r),Person(p){Major=newchar[strlen(s)+1];strcpy(Major,s);}voidPrint(){Student::Print();cout<<"專業(yè)方向:"<<Major<<endl;}protected:char*Major;};voidmain(){Studentstu("馬寧","06級");Teachertea("王新","高等代數(shù)");StudentTeacherstutea("劉力","07級","數(shù)據(jù)結(jié)構(gòu)","計算機(jī)軟件");stu.Print();tea.Print();stutea.Print();}9.2單選題1.下列運算符中,不可以重載的是(D)。A.&&B.&C.[]D.?:2.下列關(guān)于運算符重載的描述中,錯誤的是(B)。A.運算符重載不改變優(yōu)先級B.運算符重載后,原來運算符操作不可再用C.運算符重載不改變結(jié)合性D.運算符重載函數(shù)的參數(shù)個數(shù)與重載方式有關(guān)3.下列關(guān)鍵字中,用來說明虛函數(shù)的關(guān)鍵字是(C)。A.inlineB.operatorC.virtualD.public4.下列的成員函數(shù)中,純虛函數(shù)是(A)。A.virtualvoidf1()=0B.voidf1()=0;C.virtualvoidf1(){}D.virtualvoidf1()==0;5.含有一個或多個純虛函數(shù)的類稱為(A)。A.抽象類B.具體類C.虛基類D.派生類6.下列關(guān)于虛函數(shù)的描述中,錯誤的是(C)。A.虛函數(shù)是一個成員函數(shù)B.虛函數(shù)具有繼承性C.靜態(tài)成員函數(shù)可以說明為虛函數(shù)D.在類的繼承的層次結(jié)構(gòu)中,虛函數(shù)是說明相同的函數(shù)7.下列各種類中,不能定義對象的類是(B)。A.派生類B.抽象類C.嵌套類D.虛基類8.下列關(guān)于抽象類的描述中,錯誤的是(D)。A.抽象類中至少應(yīng)該有一個純虛函數(shù)B.抽象類可以定義對象指針和對象引用C.抽象類通常用作類族中最頂層的類D.抽象類的派生類必定是具體類9.一個類的層次結(jié)構(gòu)中,定義有虛函數(shù),并且都是公有繼承,在下列情況下,實現(xiàn)動態(tài)聯(lián)編的是(D)。A.使用類的對象調(diào)用虛函數(shù)B.使用類名限定調(diào)用虛函數(shù),其格式如下:<類名>::<虛函數(shù)名>C.使用構(gòu)造函數(shù)調(diào)用虛函數(shù)D.使用成員函數(shù)調(diào)用虛函數(shù)10.下列關(guān)于動態(tài)聯(lián)編的描述中,錯誤的是(C)。A.動態(tài)聯(lián)編是函數(shù)聯(lián)編的一種方式,它是在運行時來選擇聯(lián)編函數(shù)的B.動態(tài)聯(lián)編又可稱為動態(tài)多態(tài)性,它是C++語言中多態(tài)性的一種重要形式C.函數(shù)重載和運算符重載都屬于動態(tài)聯(lián)編D.動態(tài)聯(lián)編只是用來選擇虛函數(shù)的9.3填空題1.C++語言多態(tài)性主要表現(xiàn)在動態(tài)聯(lián)編、函數(shù)重載和運算符重載。2.

溫馨提示

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

評論

0/150

提交評論