C考試題庫及答案精簡_第1頁
C考試題庫及答案精簡_第2頁
C考試題庫及答案精簡_第3頁
C考試題庫及答案精簡_第4頁
C考試題庫及答案精簡_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C++期末考試題庫一、單項選擇題:1.能作為C++程序的根本單位是(C)。A.字符B.語句C.函數D.源程序文件2.程序中主函數的名字為〔A〕。A.mainB.MAINC.MainD.任意標識符3.關于C++與C語言的關系的描述中,〔D〕是錯誤的。A.C語言是C++的一個子集; B.C語言與C++是兼容的; C.C++對C語言進展了一些改良; D.C++和C語言都是面向對象的4.可用作C++語言用戶標識符的一組標識符是(B)。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof5.存儲以下數據,占用存儲字節最多的是〔D〕。A.0B.‘0’C.“0〞6.設inta=12;則執行完語句a+=a*a;后,a的值是(C)。A.12B.144C.156D.2887.假設在程序中a、b、c均被定義成整型,所賦的值都大于1,則以下能正確表示代數式的表達式是(D)。8.以下說法中正確的選項是〔B〕。A.C++程序總是從第一個定義的函數開場執行B.C++程序總是從main函數開場執行C.C++函數必須有返回值,否則不能使用函數D.C++程序中有調用關系的所有函數必須放在同一個程序文件中9.下面有關構造函數的描述中,正確的選項是〔B〕。A.構造函數可以帶有返回值B.構造函數的名字與類名完全一樣C.構造函數必須帶有參數D.構造函數必須定義,不能缺省10.10.在聲明類時,下面的說法正確的選項是〔

〕。A.可以在類的聲明中給數據成員賦初值B.數據成員的數據類型可以是registerC.private,public,protected可以按任意順序出現D.沒有用private,public,protected定義的數據成員是公有成員11.在下面有關析構函數特征的描述中,正確的選項是〔A〕。A.一個類可以有多個析構函數B.析構函數與類名完全一樣C.析構函數不能指定返回類型D.析構函數可以有一個或多個參數12.構造函數是在〔B〕時被執行的。A.程序編譯B.創立對象C.創立類D.程序裝入內存13.下面有關靜態成員函數的描述中,正確的選項是〔B〕A.在靜態成員函數中可以使用this指針B.在建立對象前,就可以為靜態數據成員賦值C.靜態成員函數在類外定義是,要用static前綴D.靜態成員函數只能在類外定義14.下面有關友員函數的描述中,真確的說法是〔A〕A.友員函數是獨立于當前類的外部函數B.一個友員函數不可以同時定義為兩個類的友員函數C.友員函數必須在類的外部進展定義D.在類的外部定義友員函數時必須加上friend關鍵字15.友員的作用之一是〔A〕A.提高程序的運行效率B.加強類的封裝C.實現數據的隱蔽性D.增加成員函數的種類16.使用派生類的主要原因是〔A〕A.提高代碼的可重用性B.提高程序的運行效率C.加強類的封裝性D.實現數據的隱藏17.在C++中繼承方式有幾中〔C〕A.1B.2C.3D.418.假設已經定義好了類student,現在要定義類derived,它是從student私有派生的,則定義類derived的正確寫法是〔D〕A.classderived::studentprivate{//………….}B.classderived::studentpublic{//………….}C.classderived::publicstudent{//………….}D.classderived::privatestudent{//………….}19.派生類的對象對它的基類成員中〔C〕是可以訪問的。A.公有繼承的公有成員; B.公有繼承的私有成員;C.公有繼承的保護成員;D.私有繼承的公有成員。20.類中定義的成員默認為〔A〕訪問屬性。A.publicB.privateC.protectedD.friend21.以下存儲類標識符中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速度,選用〔A〕適宜。A.內聯函數; B.重載函數; C.遞歸調用;D.嵌套調用。22.C++對C語言作了很多改良,以下描述中〔D〕使得C語言發生了質變,從面向過程變成了面向對象。A.增加了一些新的運算符;B.允許函數重載,并允許設置缺省參數;C.規定函數說明必須用原型;D.引進了類和對象的概念;23.按照標識符的要求,〔A〕符號不能組成標識符。A.連接符B.下劃線D.數字字符24.以下變量名中,〔A〕是合法的。ACHINABbyte-sizeCdoubleDA+a25.以下各種函數中,〔C〕不是類的成員函數。A構造函數B析構函數C友元函數D拷貝構造函數26.以下〔A〕是正確的語句。A;Ba=17Cx+yDcout<<"\n"27.不能作為函數重載判斷的依據的是(B)A.返回類型B.constC.參數個數D.參數類型28.通常,拷貝構造函數的參數是(C)A.某個對象名B.某個對象的成員名29.下面對靜態數據成員的描述中,正確的選項是(C)A類的不同對象有不同的靜態數據成員值B類的每個對象都有自己的靜態數據成員C靜態數據成員是類的所有對象共享的數據D靜態數據成員不能通過類的對象調用30.假定AB為一個類,則執行ABx;語句時將自動調用該類的(B)31.C++程序從上機到得到結果的幾個操作步驟依次是(B)。A.編譯、編輯、連接、運行B.編輯、編譯、連接、運行C.編譯、運行、編輯、連接D.編輯、運行、編輯、連接32.假定一條定義語句為“inta[10],x,*p=a;〞,假設要把數組a中下標為3的元素值賦給x,則不正確的語句為〔A〕。A.x=p[3];B.x=*(a+3);C.x=a[3];D.x=*p+3;33.關于封裝,以下說法中不正確的選項是〔D〕。A.通過封裝,對象的全部屬性和操作結合在一起,形成一個整體B.通過封裝,一個對象的實現細節被盡可能地隱藏起來〔不可見〕C.通過封裝,每個對象都成為相對獨立的實體D.通過封裝,對象的屬性都是不可見的34.預處理命令在程序中都是以(B)符號開頭的。A.*B.#C.&D.@35.存儲以下數據,占用存儲字節最少的是〔B〕。A.0B.‘0’C.“0〞36.程序運行中需要從鍵盤上輸入多于一個數據時,各數據之間應使用(D)符號作為分隔符。A.空格或逗號B.逗號或回車C.逗號或分號D.空格或回車37.假定變量m定義為“intm=7;〞,則定義變量p的正確語句為〔B〕。A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;38.下面的哪個保存字不能作為函數的返回類型?C。A.voidB.intC.newD.long39.采用重載函數的目的是〔B〕。A.實現共享B.減少空間C.提高速度 D.使用方便,提高可讀性AB為一個類,則(C)為該類的拷貝構造函數的原型說明。A.AB(ABx);B.AB(intx);C.AB(AB&x);D.voidAB(AB&x);41、C++對C語言作了很多改良,以下描述中〔D〕使得C語言發生了質變,從面向過程變成了面向對象。A、增加了一些新的運算符;B、允許函數重載,并允許設置缺省參數;C、規定函數說明必須用原型;D、引進了類和對象的概念;42、所謂數據封裝就是將一組數據和與這組數據有關操作組裝在一起,形成一個實體,這實體也就是(A)。43、關于new運算符的以下描述中,〔C〕是錯誤的。A、它可以用來動態創立對象和對象數組;B、使用它創立的對象或對象數組可以使用運算符delete刪除;C、使用它創立對象時要調用構造函數;D、使用它創立對象數組時必須指定初始值;44、〔D〕不是構造函數的特征。A、構造函數的函數名與類名一樣;B、構造函數可以重載;C、構造函數可以設置缺省參數;D、構造函數必須指定類型說明。45、假定一個類的構造函數為B(intx,inty){a=x--;b=a*y--;},則執行Bx(3,5);語句后,x.a和x.b的值分別為(C)A、3和5B、5和3C、3和15D、20和546、關于成員函數特征的以下描述中,〔A〕是錯誤的。A、成員函數一定是內聯函數;B、成員函數可以重載;C、成員函數可以設置缺省參數值;D、成員函數可以是靜態的;47、在公有繼承的情況下,基類成員在派生類中的訪問權限〔B〕。A、受限制B、保持不變C、受保護D、不受保護48、友元的作用是〔A〕。A、提高程序的運用效率;B、加強類的封裝性;C、實現數據的隱藏性;D、增加成員函數的種類;49、在C++中,關于以下設置缺省參數值的描述中,〔B〕是正確的。A、不允許設置缺省參數值;B、在指定了缺省值的參數右邊,不能出現沒有指定缺省值的參數;C、只能在函數的定義性聲明中指定參數的缺省值;D、設置缺省參數值時,必須全部都設置;50、關于delete運算符的以下描述中,〔C〕是錯誤的。A、它必須用于new返回的指針;B、使用它刪除對象時要調用析構函數;C、對一個指針可以使用屢次該運算符;D、指針名前只有一對方括號符號,不管所刪除數組的維數。51、constint*p說明不能修改〔C〕。A、p指針;B、p指針指向的變量;C、p指針指向的數據類型;D、上述A、B、C三者;52、當需要翻開A盤上的以xxk.dat文件用于輸入時,則定義文件流對象的語句為(B)。A、fstreamfin(“〞,1)B、ifstreamfin(“〞,ios::nocreate)C、ofstreamfin(“〞)D、ifstreamfin(“〞,ios::app)53、派生類的對象對它的基類成員中〔A〕是可以訪問的。A、公有繼承的公有成員;B、公有繼承的私有成員;C、公有繼承的保護成員;D、私有繼承的公有成員;54、假定一個字符串的長度為n,則定義存儲該字符串的字符數組的長度至少為〔C〕。A、n-1B、nC、n+1D、n+255、在inta=3;*p=&a;中,*p的值是〔D〕。A、變量a的地址值B、無意義C、變量p的地址值D、356、以下常量中,〔D〕不是字符常量。A、’\005’B、’\n’C、’c’D、“a〞57、在inta=3,*p=&a;中,*p的值是〔D〕。A〕變量a的地址值B〕無意義C〕變量p的地址值D〕358、以下4個選項中,不能看作一條語句的是〔B〕。A)if(b==0)m=1;n=2;B)a=0,b=0,c=0;C)if(a>0);D){;}59、〔D〕不是構造函數的特征。A〕構造函數的函數名與類名一樣B〕構造函數可以重載C〕構造函數可以設置缺省參數D〕構造函數必須指定類型說明60、以下程序段中與語句k=a>b1:0;功能等價的是〔D〕。A〕if(a>b)k=1;B〕if(a>b)k=0C〕if(a>b)k=1;D〕if(a<b)k=0;elsek=0;elsek=1;61、以下常量中,〔D〕不是字符常量。A〕’\005’B〕’\n’C)’c’D〕"a"62、表示“x大于1而小于10〞的邏輯表達式是〔B〕。A〕1<x<10B〕x>1&&x<10C)!(x<=1||x>=10)D〕x>1||x<1063、關于成員函數特征的以下描述中,〔A〕是錯誤的。A〕成員函數一定是內聯函數B〕成員函數可以重載C〕成員函數可以設置缺省參數值D〕成員函數可以是靜態的64、有以下程序#include<iostream.h>voidmain(){inti,s=0;for(i=1;i<10;i+=2)s+=i;cout<<s;}程序執行后的輸出結果是〔C〕。A〕自然數1~9的累加和B〕自然數1~10的累加和C〕自然數1~9中的奇數之和D〕自然數1~10中的偶數之和65、設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是〔D〕。A〕p=1;B〕*q=2;C〕q=p;D〕*p=5;66、〔A〕能正確輸出結果:C++。A〕chars[]="C++";cout<<s<<endl;B〕chars[3]="C++";cout<<s<<endl;C〕chars[3]={'C','+','+','\0'};cout<<s<<endl;D〕chars[3]={'C','+','+'};cout<<s<<endl;67、有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a,b;b=p[5];b中的值是〔B〕。A〕5B〕6C〕8D〕968、有以下程序#include<iostream.h>voidmain(){char*p[10]={"abc","aabdfg","dcdbe","abbd","cd"};cout<<p[3]<<endl;}執行后輸出結果是BA〕dcdbeB〕abbdC〕abcD〕abb69、以下靜態數據成員的特性中,〔C〕是錯誤的。A〕說明靜態數據成員時前邊要加修飾符staticB〕靜態數據成員要在類體外進展初始化C〕靜態數據成員不是所有對象所共用的D〕引用靜態數據成員時,要在其名稱前加<類名>和作用域運算符70、有以下語句structS{intg;charh;}T;則下面表達中不正確的選項是〔C〕。A〕S是構造體名B〕該構造體包含2個成員C〕S是struct類型的變量D〕T是structS類型的變量71、派生類的對象對它的基類成員中〔A〕是可以訪問的。A〕公有繼承的公有成員B〕公有繼承的私有成員C〕公有繼承的保護成員D〕私有繼承的公有成員72、實現運行時的多態性用。DA、重載函數B、構造函數C、析構函數D、虛函數73.以下變量名中,〔A〕是合法的。A.CHINAB.byte-sizeC.doubleD.A+a74.在intb[][3]={{1},{3,2},{4,5,6},{0}};b[2][2]的值是〔D〕。A.0 B.2 C.5 D.675.以下各運算符中,〔B〕優先級最高。A.+〔雙目〕B.*〔單目〕C.<=D.*=76.以下for循環的次數為〔B〕。for(inti(0),x=0;!x&&i<=5;i++)A.5 B.6 C.1 D.無限77.下述關于break語句的描述中,〔C〕是正確的。A. break語句可用于循環體內,它將退出該重循環。B. break語句可用于開關語句中,它將退出開關語句。C. break語句可用于if體內,它將退出if語句。D. break語句在一個循環體內可以出現屢次。78.在一個被調用函數中,關于return語句使用的描述,〔D〕是錯誤的。A. 被調用函數中可以不用return語句。B. 被調用函數中可以使用多個return語句。C. 被調用函數中,如果有返回值,就一定要有return語句。D. 被調用函數中,一個return語句可返回多個值給調用函數。79.在C++中,關于以下設置參數默認的描述中,〔C〕是正確的。A. 不允許設置參數的默認值。B. 設置參數默認值只能在定義函數時設置。C. 設置參數默認值時,應該是先設置右邊的再設置左邊的。D. 設置參數默認值時,應該全部參數都設置。80.以下存儲類標識符中,要求通過函數來實現一種不太復雜的功能,并且要求加快執行速度,選用〔A〕適宜。A.內聯函數 B.重載函數 C.遞歸調用D.嵌套調用81.以下的各類函數中,〔C〕不是類的成員函數。A.構造函數 B.析構函數 C.友元函數 D.拷貝初始化構造函數82. 〔D〕不是構造函數的特征A. 構造函數的函數名與類名一樣B. 構造函數可以重載C. 構造函數可以設置缺省參數D. 構造函數必須指定類型說明83. f1(int)是類A的公有成員函數,p是指向成員函數f1()的指針,采用〔C〕是正確的。A. p=f1B. p=A::f1C.p=A::f1()D.p=f1()84. 以下定義中,〔A〕是定義指向數組的指針p。A. int*p[5]B. int(*p)[5]C. (int*)p[5]D. int*p[]85.循環while(inti=0)i--;執行次數是〔A〕。A.0B.1C.5D.無限86. 設intx;,則經過〔C〕后,語句*px=0;可將x值置為0。A.int*px;B.intconst*px=&x;C.int*constpx=&x;D.constint*px=&x;87. 設voidf1(int*m,long&n);inta;longb;則以下調用合法的是〔B〕。A.f1(a,b);B.f1(&a,b);C.f1(a,&b);D.f1(&a,&b)88.關于對象概念的描述中,〔A〕是錯誤的。A.對象就是C語言中的構造變量; B.對象代表著正在創立的系統中的一個實體; C.對象是一個狀態和操作〔或方法〕的封裝體; D.對象之間的信息傳遞是通過消息進展的;89.在以下double型常量表示中,〔A〕是錯誤的。A.E15; B..35; C.3E5; D.3E-590.以下給字符數組進展初始化中,〔A〕是正確的。A.chars1[]="12345abcd";B.chars2[3]="xyz";C.chars3[][3]={‘a’,’x’,’y’};D.chars4[2[3]={"xyz","mnp"};91.對于int*pa[5];的描述,〔D〕是正確的。A. pa是一個指向數組的指針,所指向的數組是5個int型元素;B. pa是一個指向某個數組中第5個元素的指針,該元素是int型變量;C. pa[5]表示某個數組的第5個元素的值;D. pa是一個具有5個元素的指針數組,每個元素是一個int型指針;92.以下各運算符中,〔A〕優先級最低。A.?:B.|C.||D.!=93.以下for循環的循環體執行次數為〔D〕。for(inti(0),j(10);i=j=4;i++,j--)A.0; B.1; C.4; D.無限;94.下述關于開關語句的描述中,〔A〕是正確的。A. 開關語句中default子句可以沒有,也可以有一個;B. 開關語句中每個語句序列中必須有break語句;C. 開關語句中default子句只能放在最后;D. 開關語句中case子句后面的表達式可以是整形表達式。95.以下存儲類標識符中,〔C〕的可見性與存在性不一值。A.外部類; B.自動類; C.內部靜態類;D.存放器類。96.下述靜態數據成員的特征中,〔D〕是錯誤的。A. 說明靜態數據成員時前邊要加修飾符static;B. 靜態數據成員要在類體外進展初始化;C. 引用靜態數據成員時,要在靜態數據成員名前加<類名>和作用域運算符;D. 靜態數據成員不是所有對象所共用的。97.〔A〕是析構函數的特征。A.一個類中只能定義一個析構函數;B.析構函數與類名不同;C.析構函數的定義只能在類體內;D.析構函數可以有各個或多個參數。;98. :p是一個指向類A數據成員m的指針,A1是類A的一個對象。如果要給m賦值為5,〔C〕是正確的。A.A1.p=5;B.A1->p=5;C.A.*p=5;D.*A1.p=5;99. 關于new運算符的以下描述中,(D)是錯的。A. 它可以用來動態創立對象和對象數組;B. 使用它創立的對象或對象數組可以使用運算符delete刪除;C. 使用它創立對象時要調用構造函數;D. 使用它創立對象數組時必須指定初始值。100. 派生類的構造函數的成員初始化列中,不能包含〔C〕。A. 基類的構造函數;B. 派生類中子對象的初始化;C. 基類的子對象初始化;D. 派生類中一般數據成員的初始化101. 派生類的對象對它的基類成員中〔A〕是可以訪問的。A. 公有繼承的公有成員; B. 公有繼承的私有成員;C. 公有繼承的保護成員;D. 私有繼承的公有成員。102.C++類體系中,不能被派生類繼承的有〔A〕。103.下面標識符中正確的選項是〔A〕。A._abcB.3abC.intD.+ab104.以下哪項〔D〕不是面向對象程序設計的主要特征?105.假設有以下定義,則說法錯誤的選項是(D)。inta=100,*p=&a;A.聲明變量p,其中*表示p是一個指針變量B.變量p經初始化,獲得變量a的地址C.變量p只可以指向一個整形變量D.變量p的值為100106.對數組名作函數的參數,下面描述正確的選項是〔B〕。A.數組名作函數的參數,調用時將實參數組復制給形參數組。B.數組名作函數的參數,主調函數和被調函數共用一段存儲單元。C.數組名作參數時,形參定義的數組長度不能省略。D.數組名作參數,不能改變主調函數中的數據。107.關于靜態成員的描述中,〔B〕是錯誤的。A.靜態成員可分為靜態數據成員和靜態成員函數。B.靜態數據成員定義后必須在類體內進展初始化。C.靜態數據成員初始化不使用其構造函數。D.靜態數據成員函數中不能直接引用非靜態成員。108.以下關于構造函數的描述中,錯誤的選項是〔D〕。A.構造函數可以設置默認的參數B.構造函數在定義類對象的自動執行C.構造函數可以是內聯函數D.構造函數不可以重載109.假設OneClass為一個類,則該類的拷貝初始化構造函數的聲明語句為〔C〕。A.OneClass(OneClassp);B.OneClass&(OneClassp);C.OneClass(OneClass&p);D.OneClass(OneClass*p);110.如果類A被說明成類B的友元,則〔D〕。A.類A的成員即類B的成員。B.類B的成員即類A的成員。C.類A的成員函數不得訪問類B的成員。D.類B不一定是類A的友元。111、關于對象和類的關系,說法正確的選項是〔C〕。A)同屬于一類的對象,具有一樣的數據成員和成員函數。B)對象是具體,是類的對象,同其他變量一樣,先定義后使用。C)同一類的不同對象,其具有的操作可不同,具體的操作也不同。D)不同類的對象,可有一樣的操作。112、以下關于C++函數的說明中正確的選項是〔D〕。A)內聯函數就是定義在另一函數體內部的函數。B)函數體的最后一條語句必須是RETURN語句。C)標準C++要求在調用一個函數之前,必須先聲明其原型。D)編譯器會根據函數的返回值類型和參數表來區分函數的不同重載形式。113、以下關于虛函數的說明中,正確的選項是〔B〕。A)從虛基類繼承的函數都是虛函數。B)虛函數不得是靜態成員函數。C)只能通過指針和引用調用虛函數。D)抽象類中的成員函數都是虛函數。114、以下符號中可以用作C++標識符的是〔A〕。A)_radiusB)foo~barC)elseD)3room115、以下語句中錯誤的選項是〔B〕。A)constintbuffer=256;B)constintinttemp;C)constdouble*point;D)constdouble*rt=newdouble(5.5)116、以下關于實參和形參說法錯誤的選項是〔D〕。A〕實參可以是變量、常量、或表達式。B〕實參與形參的類型必須一致,否則會發生“類型不匹配〞的錯誤。C〕實參對形參的數據傳遞是單向傳遞,調用完畢后,實參單元被釋放。D〕形參必須是變量

。117、關于內聯函數說法錯誤的選項是〔C〕。A〕不是任何一個函數都可定義成內聯函數。B〕內聯函數的函數體內不能含有復雜的構造控制語句。C〕遞歸函數可以被用來作為內聯函數。D〕內聯函數一般適合于只有1~5行語句的小函數。118、關于保護繼承的說法正確的選項是〔D〕。A〕基類的公有成員、私有成員可被子類繼承下來,而且性質不變。B〕基類的公有成員、私有成員可被子類繼承下來,而且性質改變為保護成員。C〕基類的公有成員、私有成員可被子類繼承下來,而且性質均改變為私有成員。D〕基類的公有成員、私有成員可被子類繼承下來,性質不變,私有成員不被繼承。119、關于函數的返回值說法正確的選項是〔A〕。A)由return語句返回時,只帶回一值,其類型在函數定義時確定。B)其類型由調用表達式決定。

C)函數可以沒有返回值,這時在函數定義,函數的類型說明就沒必要了。D)函數調用就要有返回值,否則調用就沒意義了。120、關于構造化程序設計方法說法錯誤的選項是〔D〕。

A〕在數據處理過程中,采用的是自頂向下、分而治之的方法。B〕將整個程序按功能劃分為幾個可獨立編程的子過程模塊。C〕以“對象〞或“數據〞為中心。D〕數據和處理數據的過程代碼是別離的、相互獨立的實體。121、運算符重載是對已有的運算符賦予多重含義,因此〔C〕。A〕可以對根本類型〔如int類型〕的數據,重新定義“+〞運算符的含義。B〕可以改變一個已有運算符的優先級和操作數個數。C〕只能重載C++中已經有的運算符,不能定義新運算符。D〕C++中已經有的所有運算符都可以重載。122、關于C++程序說法不正確的選項是〔D〕。A)C++程序由函數構成,但只有一個main()函數。B)C++程序中main()函數可以在程序的任何位置。C)C++程序由main()函數開場執行,由main()完畢執行。D)main()都是沒有參數的。123、下面有關重載函數的說法中正確的選項是〔C〕。

A)重載函數必須具有不同的返回值類型。B)重載函數形參個數必須不同。

C)重載函數必須有不同的形參列表。D)重載函數名可以不同。二、填空:1.C++語言的頭文件與源程序文件擴展名分別是〔.h〕和〔.cpp〕。2.在C++程序中使用根本輸入與輸出流時需要包含的頭文件名是〔iostream〕。3.在C++語言中,惟一的一個三目運算運算符是〔:〕。4.C++中當一個函數無返回值時,則函數的類型是〔void〕。5.一個類中可以有〔多〕個構造函數,只能有〔一〕個析構函數。6.一般情況下,按照面向對象的要求,把類中的數據成員(屬性)定義為〔私有〕權限,而把成員函數(方法)定義為〔公有〕權限.7.在定義類的對象時,C++程序將自動調用該對象的〔構造〕函數初始化對象自身.在撤銷類的對象時,C++程序將自動調用該對象的〔析構〕函數.8.類繼承中,缺省的繼承方式是〔私有繼承〕.9.在C++語言中,用轉義字符序列〔'\n'〕或操縱符〔endl〕表示輸出一個換行符。10.表達式a=a+l表示成增量表達式為〔++a〕。11.當不需要函數返回任何值時,則應把該函數類型定義為〔void〕。12.用于輸出表達式值的標準輸出流對象是〔cout〕。,用于從鍵盤上為變量輸人值的標準輸人流對象是〔cin〕。13、變量分為全局和局部兩種,〔全局變量默認初始化為0〕。變量沒有賦初值時,其值是不確定的。14、假定類AB中有一個公用屬性的靜態數據成員bb,在類外不通過對象名訪問該成員bb的寫法為〔AB::bb〕。15、類的成員分為_數據成員_和_成員函數_。16、一個_類_和_對象_的關系,正如根本數據類型與該類型的變量一樣,如intx;。17、對一個類中的數據成員的初始化可以通過構造函數中的_賦值_實現,也可以通過構造函數中的_初始化列表_實現。18、類有兩種用法:一種是_定義對象_,即生成類的對象;另一種是通過_派生_,派生出新的類。19、C++語言提供的_多態_機制允許一個派生類繼承多個基類,即使這些基類是相互無關的。20、聲明虛函數的方法是在基類中的成員函數原型前加上關鍵字_virtual_。21、如果一個類中有一個或多個純虛函數,則這個類稱為_虛基類_。22、靜態數據成員在定義或說明時,前面要加上關鍵字_static_。23、如果成員函數不需要訪問類的_非靜態_成員,則可以把它聲明為靜態成員函數。24、友元可以是_全局函數_,也可以是_其他類的成員函數_。25、假設需要把一個函數“voidfun();〞定義為一個類A的友元函數,則應在類A的定義中參加一條語句:_friendvoidfun〔〕;_。26、運算符函數中的關鍵字是_operator_,它和_運算符_一起組成該運算符函數的函數名。27、類中運算符重載一般采用兩種形式:_成員函數_和_友元函數_。28、面向對象程序設計的3大機制為:_封裝性_、_繼承性_和_多態性_。2、類的訪問權限有_public_、_private_和_protected_三種。29、構造函數是_對象_被創立時自動執行,對象消失時自動執行的成員函數稱為_析構函數_。30、如果類A繼承了類B,則類A稱為_基類_,類B稱為_派生類_。31、如果一個特定的類型S當且僅當它提供了類型T的行為時,則稱類型S是類型T的__子類型_。32、在類定義中,將_=0_置于虛函數的函數原型的末尾可以聲明該函數為純虛函數。33、類的靜態成員分為_靜態數據成員_和_靜態成員函數_。34、友元函數的聲明可以放在類的_私有_局部,也可以放在類的_共有_局部,它們是沒有區別的。35、如果說類B是類A的友元類,則類B的所有成員函數都是類A的_成員函數_。36、設a和b是兩個整型變量,我們用a+b的形式求這兩個變量的和;設c和d為浮點型變量,我們用c+d的形式求這兩個變量的和。顯然運算符“+〞具有不同的用途,這是_運算符重載_的例子。37、對于雙目運算符,假設重載為類的成員函數,有1_個參數;假設重載為友元函數,則有_2個參數。38、當建立__一個新的對象___,程序自動調用該類的構造函數。39、在C++中有二種參數傳遞方式:__傳值___和___引用__。40、模板對處理數據的類型的要求不同可以分為兩種類型:__函數模板__和__類模板__。41、異常是通過_檢查〔try〕__、_拋出〔throw〕__和__捕捉〔catch〕__來實現的。42、虛函數實現了C++的__多態__機制,類實現了C++的___封裝__機制。43、面向對象程序設計的___繼承___機制提供了重復利用程序資源的一種途徑。44、C++語言程序設計的三種根本構造是:_順序構造_、_選擇構造_、__循環構造__。45、為了防止嵌套的條件語句if-else的二義性,C++語言規定else與__if__配對使用。46、定義函數時,在函數的類型前加上修飾詞___inline___,指明將該函數定義為內聯函數。47、有說明語句:*p;則*p++運算首先訪問___*p___,然后使__p____的值加1。48、執行int*p=newint操作,可以得到一個動態分配整型對象的__指針____。49、有說明語句:int*p;則(*p)++運算首先訪問___*p___,然后使__*p____的值加1。50.C++目標程序經___編譯鏈接___后生成擴展名為exe的可執行程序文件。51.16位計算機中整型占___2_______個字節存儲空間。52.要在屏幕上顯示"Hello,world!"應執行語句cout<<_______"Hello,world!";_____。53.表達式8&3的結果是___0_______。54.作為語句的函數調用是通過____函數的副作用____來表達的。55.執行if(x>=0||x<=0)cout<<"abcd";elsecout<<"wxyz";屏幕上顯示的是____abcd____。56.設一維整型數組data已進展了初始化,則其元素個數可由操作符sizeof通過表達式____sizeof(data)/sizeof(int)___計算出來。57.假設一全局變量只允許本程序文件中的函數使用,則定義它時應加上修飾符__static______。58.設有intw[3][4];,pw是與數組名w等價的數組指針,則pw應初始化為____int*[4]pw=w;_____。59.要使引用pr代表變量char*p;,則pr應初始化為________char*&pr=p;________。60.在C++中封裝性、繼承性和_____多態性61.假設inta=1,b=2;則表達式a+++--b的值為__2____。62.C++語言支持的兩種多態性分別是編譯時的多態性和__運行時___的多態性。63.設有如下程序構造:classBox{…};voidmain(){BoxA,B,C;}該程序運行時調用___3__次構造函數;調用___3__次析構函數。64.目前,有兩種重要的程序設計方法,分別是:___面向過程__和___面向對象___。65.函數重載時要求同名函數的_參數個數__或_參數類型__不同,否則無法確定是哪個函數。66.靜態數據成員是類的所有對象中的____共享__成員,而非靜態數據成員是屬于___一個具體___對象的。67.設A為test類的對象且賦有初值,則語句testB(A);表示__將對象A復制給對象B___。68.面向對象程序設計方法中的每個對象都具有_屬性__和___方法__兩方面的特征。6_的所有對象中共享_的成員,不是_某個對象___的成員,靜態成員在___類的聲明中__進展引用性說明,在_其文件作用域的其他地方_進展定義性說明。70.“封裝〞指的是_將有關的數據和操作代碼封裝在一個對象中,形成一個根本單位,各個對象之間相互獨立,互不干擾,且將對象中某些局部對外隱藏_。71.可以讓新類繼承已定義的類的_數據成員_和_成員函數_,這個新類稱為__繼承_,原來的類稱為___基類__。新類可以從一個類中派生,這叫__單繼承__,也可以從多個類中派生,稱為__多重繼承_。72.指針類型變量用于存儲__另一變量的地址__,在內存中它占有____一個__存儲單元。73.類有三種繼承方式,分別是:__公有繼承_、__保護繼承__、___私有繼承_。四、寫出程序運行結果1、#include<iostream.h>inta[]={2,4,6,8,10};int&index(inti){returna[i];}voidmain(){inti;index(3)=12;for(i=0;i<=4;i++)cout<<a[i]<<"";}結果24612102、#include<iostream.h>voidf(int*m,intn){inttemp;temp=*m;*m=n;n=temp;}voidmain(){inta=5,b=10;f(&a,b);cout<<a<<""<<b<<endl;}10103、#include<iostream.h>inti=15;voidmain(){inti;i=100;∷i=i+1;cout<<∷i<<endl;}1014、#include<iostream.h>classtoy{public:toy(intq,intp){quan=q;price=p;}intget_quan(){returnquan;}intget_price(){returnprice;}private:intquan,price;};main(){toyop[3][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80),toy(90,16),toy(11,120),};inti;for(i=0;i<3;i++){cout<<op[i][0].get_quan()<<",";cout<<op[i][0].get_price()<<"\n";cout<<op[i][1].get_quan()<<",";cout<<op[i][1].get_price()<<"\n";}cout<<"\n";return0;}10,2030,4850,6870,8090,1611,1205、#include<iostream.h>classexample{public:example(intn){i=n;cout<<"Constructing\n";}~example(){cout<<"Destructing\n";}intget_i(){returni;}private:inti;};intsqr_it(exampleo){returno.get_i()*o.get_i();}main(){examplex(10);cout<<x.get_i()<<endl;cout<<sqr_it(x)<<endl;return0;}Constructing10Destructing10010Destructing6、#include<iostream.h>classTest{private:intx;public:Test(){cout<<“構造函數被執行〞<<endl;x=0;}~Test(){cout<<“析構函數被執行〞<<endl;voidprint(){cout<<“x=〞<<x<<endl;}};voidmain(){Testobj1,obj2;obj1.print();obj2.print();}構造函數被執行構造函數被執行x=0x=0析構函數被執行析構函數被執行7、#include<iostream.h>classA{public:A(int*s){cout<<s<<endl;}};classB:publicA{public:B(char*s1,char*s2):A(s1){cout<<s2<<endl;}};classC:publicA{public:C(char*s1,char*s2):A(s1){cout<<s2<<endl;}};classD:publicB,C{public:D(char*s1,char*s2,char*s3,char*s4):B(s1,s2),C(s3,s4){cout<<s4<<endl;}};voidmain(){Dd(“classA〞,〞classB〞,〞classC〞,〞classD〞);}classAclassBclassCclassDclassD8、#include<iostream.h>classBase{public:virtualvoiddisp(){cout<<〞baseclass〞<<endl;}};classDerivel:publicBase{public:voiddisp(){cout<<〞derivelclass〞<<endl;}};classDerive2:publicBase{public:voiddisp(){cout<<〞derive2class〞<<endl;}};voidmain(){Base*p;Baseb;Derive1d1;Derive2d2;p=&b;p->disp();p=&d1;p->disp();p=&d2;p->disp();}baseclassderivelclassderive2class9、#include<iostream.h>classSample{private:intx;staticinty;public:Sample(inta);voidprint();};Sample::Sample(inta){x=a;y++;}voidSample::print(){cout<<〞x=〞<<x<<〞,y=〞<<y<<endl;}intSample::y=25;voidmain(){Samples1(5);Samples2(10);s1.print();s2.print();}x=5,y=27x=10,y=2710、#include<iostream.h>classSample{private:intx;public:Sample(){}Sample(inta){x=a;}voiddisp(){cout<<〞x=〞<<x<<endl;}friendSampleoperator+(Sample&s1,Sample&s2);};Sampleoperator+(Sample&s1,Sample&s2){returnSample(s1.x+s2.x);}voidmain(){Sampleobj1(10);Sampleobj2(20);Sampleobj3;obj3=obj1+obj2;obj3.disp();}x=3011、#include<iostream.h>classTest{private:intx;public:Test(){cout<<“構造函數被執行〞<<endl;x=0;}voidprint(){cout<<“x=〞<<x<<endl;}};voidmain(){Testobj1,obj2;obj1.print();obj2.print();}構造函數被執行構造函數被執行x=0x=012、#include<iostream.h>classA{protected:intx;public:A(intx){A::x=x;cout<<〞classA〞<<endl;}};classB{private:Aa1;public:B(intx):a1(x){cout<<〞classB〞<<endl;}};classC:publicB{private:Aa2;public:C(intx):B(x),a2(x){cout<<〞classC〞<<endl;}};classD:publicC{public:D(intx):C(x){cout<<〞classD〞<<endl;}};voidmain(){Ddobj(10);}classAclassBclassAclassCclassD13、#include<iostream.h>classPoint{private:intx;inty;public:Point(inta,intb){x=a;y=b;}virtualintarea(){return0;}};classRectangle:publicPoint{private:intlength;intwidth;public:Rectangle(inta,intb,intl,intw):Point(a,b){length=l;width=w;}virtualintarea(){returnlength*width;}};voiddisp(Point&p){cout<<“面積是:〞<<p.area()<<endl;}voidmain(){Rectanglerect(3,5,7,9);Disp(rect);}面積是:6314、#include<iostream.h>classSample{private:intx;staticinty;public:Sample(inta);voidprint();};Sample::Sample(inta){x=a;y=x++;}voidSample::print(){cout<<〞x=〞<<x<<〞,y=〞<<y<<endl;}intSample::y=25;voidmain(){Samples1(5);Samples2(10);s1.print();s2.print();}x=6,y=10x=11,y=1015、#include<iostream.h>classSample{private:intx;public:Sample(){}Sample(inta){x=a;}voiddisp(){cout<<〞x=〞<<x<<endl;}Sampleoperator+(Sample&s);};SampleSample::operator+(Sample&s){returnSample(x+s.x);}voidmain(){Sampleobj1(20);Sampleobj2(20);Sampleobj3;obj3=obj1+obj2;obj3.disp();}x=4016、#include<iostream.h>classA{inta,b;public:A(){a=b=0;}A(intaa,intbb):a(aa),b(bb){cout<<〞a=〞<<a<<〞,〞<<〞b=〞<<b<<endl;}~A(){cout<<〞Destructor!〞<<endl;}};voidmain(){Ax,y(2,3);}a=2,b=3Destructor!Destructor!17、#include<iostream.h>classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print(){cout<<R1<<":"<<R2<<endl;}voidR::print()const{cout<<R1<<";"<<R2<<endl;}voidmain(){Ra(5,4);a.print();constRb(20,52);b.print();}5:420;5218、#include<iostream.h>classA{public:virtualvoidact1();voidact2(){act1();}};voidA::act1(){cout<<"A::act1()called."<<endl;}classB:publicA{public:voidact1();};voidB::act1(){cout<<"B::act1()called."<<endl;}voidmain(){Bb;b.act2();}#include<iostream.h>voidfun(int,int,int*);voidmain(){intx,y,z;fun(2,3,&x);fun(4,x,&y);fun(x,y,&z);cout<<x<<','<<y<<','<<z<<endl;}voidfun(inta,intb,int*c){b*=a;*c=b-a;}B::act1()called.19、#include<iostream.h>classAA{public:AA(inti,intj) {A=i;B=j;cout<<"Constructor\n";} AA(AA&obj) {A=obj.A+1;B=obj.B+2;cout<<"Copy_Constructor\n";} ~AA() {cout<<"Destructor\n";} voidprint() {cout<<"A="<<A<<",B="<<B<<endl;}private:intA,B; };voidmain(){AAa1(2,3);AAa2(a1); a2.print(); AA*pa=newAA(5,6); pa->print();deletepa;}ConstructorCopy_ConstructorA=3,B=5ConstructorA=5,B=6DestructorDestructorDestructor20、#include<iostream.h>voidff(intx),ff(doublex);voidmain(){floata(88.18);ff(a);charb('a');ff(b);}voidff(intx){ cout<<"ff(int):"<<x<<endl;}voidff(doublex){ cout<<"ff(double):"<<x<<endl;}ff(int):9721、#include<iostream.h>classAA{public:AA(inti,intj) {A=i;B=j;cout<<"Constructor\n";} AA(AA&obj) {A=obj.A+1;B=obj.B+2;cout<<"Copy_Constructor\n";} ~AA() {cout<<"Destructor\n";} voidprint() {cout<<"A="<<A<<",B="<<B<<endl;}private:intA,B; };voidmain(){AAa1(2,3);AAa2(a1); a2.print(); AA*pa=newAA(5,6); pa->print();deletepa;}ConstructorCopy_ConstructorA=3,B=5ConstructorA=5,B=6DestructorDestructorDestructor22、#include<iostream.h>voidSwap(int&a,int&b);voidmain(){ intx(10),y(7); cout<<"x="<<x<<"y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<"y="<<y<<endl;}voidS&a,int&b){ inttemp; temp=a; a=b; b=temp;}x=10y=7x=7y=1023、#include<iostream.h>classA{public: A(); A(inti,intj); ~A(){cout<<"Donstructor.\n";} voidprint();private: inta,b;};A::A(){ a=b=10;cout<<"Defaultconstructor.\n";}A::A(inti,intj){a=i,b=j;cout<<"Constructor.\n";}voidA::print(){cout<<"a="<<a<<",b="<<b<<endl;}voidmain(){ Am,n(15,18); m.print(); n.print();}Defaultconstructor.Constructor.a=10,b=10a=15,b=18Donstructor.Donstructor24、#include<iostream.h>

classSample

{

intn;

staticintsum;

public:

Sample(intx){n=x;}

voidadd(){sum+=n;}

voiddisp()

{

cout<<"n="<<n<<",sum="<<sum<<endl;

}

};

intSample::sum=0;

voidmain()

{

Samplea(2),b(3),c(5);

a.add();

a.disp();

b.add();

b.disp();

c.add();

c.disp();

}n=2,sum=2n=3,sum=5n=5,sum=1025、#include<iostream.h>

classSample

{

intx;

public:

Sample(){};

Sample(inta){x=a;}

Sample(Sample&a){x=a.x+++10;}

voiddisp(){cout<<"x="<<x<<endl;}

};

voidmain()

{

Samples1(2),s2(s1);

s1.disp();

s2.disp();

}

x=3x=1226、#include<iostream.h>

classA

{

public:

A(char*s){cout<<s<<endl;}

~A(){}

};

classB:publicA

{

public:

B(char*sl,char*s2):A(sl)

{

cout<<s2<<endl;

}

};

classC:publicA

{

public:

C(char*sl,char*s2):A(sl)

{

cout<<s2<<endl;

}

};

classD:publicB,publicC

{

public:

D(char*sl,char*s2,char*s3,char*s4):B(sl,s2),C(sl,s3)

{

cout<<s4<<endl;

}

voidmain()

{

Dd("classA","classB","classC","classD");

}

classAclassBclassAclassCclassD27、#include<iostream.h>

classSample

{

intn;

public:

Sample(inti){n=i;}

friendintadd(Sample&s1,Sample&s2);

};

intadd(Sample&s1,Sample&s2)

{

returns1.n+s2.n;

}

voidmain()

{

Samples1(10),s2(20);

cout<<add(s1,s2)<<endl;

}

3028、#include<iostream.h>

classSample

{

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a;y=b;}

~Sample()

{

if(x==y)

cout<<"x=y"<<endl;

else

cout<<"x!=y"<<endl;

}

voiddisp()

{

cout<<"x="<<x<<",y="<<y<<endl;

}

};

voidmain()

{

Samples1(2,3);

s1.disp();

}x=2,y=3x!=y五、指出以下程序的錯誤,并說明為什么:1、#include<iostream.h>classStudent{intsno;intage;voidprintStu();voidsetSno(intd);};voidprintStu(){cout<<"\nStudentNo.is

溫馨提示

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

評論

0/150

提交評論