計算機二級五十套真題的總結

2021-10-12 11:47:10 字數 4549 閱讀 3567

常成員函式:c++中使用const關鍵字來說明函式稱為常成員函式,常成員函式不能更新物件中的資料成員。常成員函式不能修改任何的資料成員

常物件除了可以呼叫靜態成員函式外,還可以呼叫常成員函式,

虛函式是非static型別的成員函式,基類中可以利用virtual關鍵字來宣告虛函式,派生類中定義相同原型函式時可不必加virtual說明,直接重寫基類中的函式。在派生類中的虛函式必須與基類中的虛函式具有相同的引數個數與型別。

虛函式在執行階段和類的物件繫結在一起,這樣成為動態聯編。虛函式宣告只能出現在類宣告中虛函式原型中,而不能在成員的函式體實現的時候。必須由成員函式來呼叫或者通過指標、引用來訪問虛函式。

如果通過物件名來訪問虛函式,則聯編在編譯過程中認為是靜態聯編。

在成員函式的宣告前面加上virtual關鍵字,即可把函式宣告為虛函式。虛函式可以是另乙個函式的友元函式而不能是靜態成員函式。

虛函式在執行階段和類的物件繫結在一起,這樣成為動態聯編。虛函式宣告只能出現在類宣告中虛函式原型中,而不能在成員的函式體實現的時候。

必須由成員函式來呼叫或者通過指標、引用來訪問虛函式。如果通過物件名來訪問虛函式,則聯編在編譯過程中認為是靜態聯編。

如果派生類沒有實現基類的乙個純虛函式,則該派生類是乙個抽象類。

純虛函式是在宣告虛函式時被「初始化」為0的虛函式。純虛函式是一種特殊的虛函式,它沒有具體的實現。

派生類derived由基類base公有派生,在派生類建構函式宣告時系統會自動呼叫基類的預設建構函式。呼叫derived d('derived');後,執行類derived建構函式的derived(char c),系統自動呼叫基類的預設建構函式base(),輸出字母base;再執行派生類的建構函式derived(char c),輸出字母derived。

extern用於宣告外部變數的,register宣告暫存器型別變數,無cpu型別。它們都不能宣告類成員。public宣告為公有訪問許可權。

類的定義,如果有自身類物件,使得迴圈定義,選項b)錯誤。在類中具有自身類的指標,可以實現鍊錶的操作,當然也可以使用物件的引用,類中可以有另乙個類的物件,即成員物件。

位址作為實參,表示實參與形參代表同乙個物件。如果實參是數值,形參也是普通變數,此時形參是實參的備份。

(p+i)+j p[i]+j &p[i][j]都表示b陣列第i+1行、第j+1列元素的位址。

*(*(p+i)+j) *(p[i]+j) p[i][j]都表示b陣列第i+1、第j+1列元素的值。

類模板本身在編譯時是不會產生**的,只有在其實例化以後才產生**。定義乙個物件時,不能省略其實參。

類模板不是乙個實實在在的類,本身在編譯中不會生成任何**;用類模板定義乙個物件時,不能省略實參;類模板的成員函式都是模板函式。c++中可以為類模板的引數設定預設值

建構函式:c++中,若沒有類的顯式宣告建構函式則系統會為其提供乙個預設的建構函式,若提供了建構函式則會將系統提供的預設的建構函式覆蓋。呼叫建構函式時,實參必須與形參匹配。

但是如果宣告乙個物件指標時,不是定義乙個物件,不呼叫物件的建構函式。

c++程式中的執行子類,首先執行基類的建構函式,然後執行資料成員類的建構函式,最後執行子類本身的建構函式,所以輸出結果為abc。

析構函式可以宣告為虛函式,但是建構函式不能宣告為虛函式;類的虛函式僅對派生類中重定義的函式起作用,對其他函式沒有影響。析構函式不能被繼承

不能被繼承有:建構函式、拷貝建構函式、賦值函式、析構函式友元函式

虛函式可以被繼承

拷貝建構函式是乙個特殊的建構函式,它用乙個已知的物件初始化乙個正在建立的同類物件,它不能指定函式返回型別;只有乙個引數,是同類的某個物件名的引用。每乙個類中都必須有乙個拷貝建構函式,如果類中未宣告,編譯器會自動生成乙個公有的拷貝建構函式。

c++中擁有純虛函式的類稱為抽象類。抽象類不能用來定義物件。如果乙個抽象類的派生類沒有重定義來自基類的某個純虛函式,則該函式在派生類中仍是純虛函式,該類仍為抽象類。

在成員函式的宣告前面加上virtual關鍵字,即可把函式宣告為虛函式。虛函式可以是另乙個函式的友元函式而不能是靜態成員函式。

如果是乙個虛函式,指標指向誰,便呼叫屬於誰的虛函式。由主函式main入手,定義testclass1類的指標物件p指向派生類testclass2。因為基類和派生類中都有fun函式,題目要求輸出為2,就是基類物件訪問派生類中fun函式。

通過虛函式與指向基類物件的指標變數的配合使用,就能方便呼叫同名函式。所以這裡將基類中的fun函式宣告為virtual。並且當乙個成員函式被宣告為虛函式後,其派生類中的同名函式自動成為虛函式。

由主函式main 入手,定義了類d物件obj。其中d為類b和c的公有繼承,a是c的虛基類。題目中要求的輸出結果為「abcd」,依次為類a,類b,類c,類d中建構函式的輸出語句。

為了保證基類通過多條路徑被派生類繼承時,即保證a只被繼承一次,輸出乙個a,所以不但需要宣告a為c的虛基類,同樣也要宣告a為b的虛基類。

因為成員函式可以在類體內定義,也可以在類體外定義,所以成員函式不一定都是內聯函式;成員函式可以過載,可以設定引數的預設值,成員函式可以是靜態的。

靜態資料成員函式只能在類外進行初始化。必須在類體內說明。可以在類的建構函式中對靜態資料成員進行初始化。

靜態資料成員不能在引數初始化表對靜態資料成員初始化,只能在類體外進行初始化。

運算子過載的概念。c++語言規定》以及所有的型別轉換運算子只能作為成員函式過載,如果要過載為友元函式就必須過載為非成員函式。運算子過載的概念。

c++語言規定》以及所有的型別轉換運算子只能作為成員函式過載,如果要過載為友元函式就必須過載為非成員函式。

程式中的testclas1為testclass的派生類,主函式main中定義testclass物件*p,testclass1物件obj1,然後p引用obj1,執行p->who()則是呼叫基類中的who函式,輸出testclass。

陣列作為引數實參傳遞的是陣列的首位址。所以主調函式和被調函式共用一段儲存單元。

this指標是成員函式所屬物件的指標,它指向類物件的位址;它隱含於每個類的非靜態成員函式中;this指標只能在類的成員函式中使用,它指向該成員函式被呼叫的物件;靜態成員函式沒有this指標,因為類中只有乙個靜態成員函式例項,使用this指標無意義。this指標不能在程式中修改,不能被幅值;靜態成員沒有this指標,因為類中只有乙個靜態成員函式例項,使用this指標無意義。

操作題一

int size=0初始化字串統計變數個數

int s1len;

int s2len;

for(s1len=0;s1[s1len]!=0;s1len++); //第1個字串迴圈

for(s2len=0;s2[s2len]!=0;s2len++); //第2個字串迴圈

for(int i=0;i

}return size;

【審題分析】

(1)該程式功能是計算s1**現s2的個數。它的解題思路是兩個字串逐個比較其中的字元,從而統計符合的字串個數。

(2)從已給部分源程式的main主函式開始入手,核心函式int fun(char* s1,char* s2)中的s1,s2引數為輸入的字串。

【解題思路】

(1)size變數用來存放s1**現s2的個數,初始值賦為0。

(2)然後利用for迴圈對s2中的每乙個字元與s1中的字元進行比較。

(3)如果迴圈中有符合條件的字串,就將變數size個數加1。

操作題二

int minpos=0初始化最小值位置

if(data==null) //判斷輸入字串是否為空

return -1;

char mindata=data[0]; //設定字串第乙個字元為最小值

if(mindata==0) //判斷第乙個字元是否存在

return -1;

for(int i=1;data[i]!=0;i++)

}return minpos;

【審題分析】

(1)該程式功能是找出字串陣列中最小的ascii值。它的解題思路,用最小值變數標記第乙個待找字元,把所有待找字元和標記字元逐個進行比較,並標記其當前最小值及其所在位置,從而找出最小值。

(2)從已給部分源程式的main主函式開始入手,核心函式int fun(char* data)中的data引數為輸入的字串陣列,其中minpos為最小值位置。

【解題思路】

(1)minpos變數首先指向字串data的第乙個字元,同時將標誌位minpos初始值賦為0。

(2)然後利用for迴圈對每乙個當前字元與minpos標記的字元進行比較。

(3)迴圈中將求得的最小資料data[i]賦值給mindata,並將該資料項陣列標誌位賦給標誌位minpos。

操作題3

【答案】

if(len>0) //最小值位置

b[0]=0; //賦值第乙個元素

if(len>1)

b[1]=1; //賦值第二個元素

for(int i=2;ib[i]=b[i-1]+b[i-2]; //將兩個元素之和賦予當前元素

【審題分析】

根據題幹中給出的要求,從已給部分源程式的main主函式開始入手,補全函式void fun(double b,int len)。

【解題思路】

(1)判斷陣列長度,如果存在第乙個元素,那麼將第乙個元素賦值為0,即b[0]=0;。

計算機二級考試真題

一 選擇題 1 選a 對分查詢即二分查詢,它只適用於順序儲存的有序表,並不適用於線性鍊錶。對長度為n的有序鍊錶進行查詢只能使用順序查詢法,最壞情況是所要查詢的資料 性鍊錶的最後乙個位置,此時需要比較的次數為n 2 選d 演算法的時間複雜度是指執行演算法所需要的計算工作量。可以用演算法在執行過程中所需...

計算機等級考試二級C真題

2009 年 3 月全國計算機等級考試二級筆試試卷 c 語言程式設計 考試時間 90 分鐘,滿分 100 分 一 選擇題 1 10 21 40 每題 2 分,11 20 每題 1 分,共 70 分 下列各題 a b c d 四個選項中,只有乙個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試...

計算機二級上機程式設計題總結

上機練習一 編寫函式部分 數字問題 第1題請編寫函式fun,它的功能是 求出1到1000之內能被7或者11整除,但不能同時被7和11整除的所有整數,並將他們放在a所指的陣列中,通過n返回這些數的個數。include include void fun int a,int n main 第2題請編寫函式...