2023年自考類計算機類(工學(xué)類)C++程序設(shè)計歷年高頻考題帶答案難題附詳解_第1頁
2023年自考類計算機類(工學(xué)類)C++程序設(shè)計歷年高頻考題帶答案難題附詳解_第2頁
2023年自考類計算機類(工學(xué)類)C++程序設(shè)計歷年高頻考題帶答案難題附詳解_第3頁
2023年自考類計算機類(工學(xué)類)C++程序設(shè)計歷年高頻考題帶答案難題附詳解_第4頁
2023年自考類計算機類(工學(xué)類)C++程序設(shè)計歷年高頻考題帶答案難題附詳解_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年自考類計算機類(工學(xué)類)C++程序設(shè)計歷年高頻考題帶答案難題附詳解(圖片大小可自由調(diào)整)第1卷一.歷年考點試題黑鉆版(共50題)1.對于int*pa[5];的描述,正確的是______A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素B.pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變量C.pa[5]表示某個數(shù)組的第5個元素的值D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針2.函數(shù)調(diào)用func((exp1,exp2),(exp3,exp4,exp5))中所含實參的個數(shù)為

A.1B.2C.4D.53.設(shè)要把一個文件輸出流對象outfile與文件“d:\Text.txt”相關(guān)聯(lián),設(shè)置以二進制形式打開。所用的C++語句是______。4.對象之間以______傳遞的方式進行通信。5.文件流類的______成員函數(shù)的功能是打開一個文件。6.下列關(guān)于虛函數(shù)的敘述錯誤的是______A.虛函數(shù)只是類中的一個成員函數(shù)B.虛函數(shù)可以是類的靜態(tài)成員C.當(dāng)基類定義了虛函數(shù),派生類中同名函數(shù)也自動為虛函數(shù)D.虛函數(shù)用關(guān)鍵字virtual聲明7.#include<iostream>

usingnamespacestd;

classA

{private:

intden;

intnum;

public:

A(intd=0,intn=1):den(d),num(n){}

friendA&operator+=(A&,A&);

voidshow(){cout<<den<<'/'<<num;}

};

friendA&operator+=(A&f1,A&f2)

{f1.den=f1.den*f2.hum+f1.num*f2.den;

f1.num*=f2.num;

returnf1;

}

voidmain()

{Afr(3,4);

fr+=A(5,7);

fr.show();

cout<<endl;

}8.設(shè)intx=56;intr=x;若cout<<&x;顯示0012FFTA,則cout<<&r;輸出值為______A.56B.0012FF7AC.0012FF7BD.未知9.下面說法正確的是______A.生成對象時調(diào)用析構(gòu)函數(shù)B.定義類時必須寫出該類的構(gòu)造函數(shù)C.調(diào)用構(gòu)造函數(shù)時必須在主函數(shù)中明確寫出調(diào)用格式D.析構(gòu)函數(shù)不可以重載10.下列敘述中,錯誤的是______A.bad()函數(shù)功能表示如果進行非法操作,返回ture,否則返回falseB.ios_base::in打開文件用于輸入(輸入流的打開模式)C.ios_base::ate打開一個已有的輸入或輸出文件并查找到文件尾D.ios_base::out打開文件進行讀操作11.在類中聲明const數(shù)據(jù)成員時,只能通過______的方式來對該成員進行初始化。12.classpoint{

private:

intx,y;

public:

point(int,int);

point(point&);

};

point::point(inta,intb)

{

x=a;

______=b;

}

point::point(______)

{

x=z.x;

y=z.y;

}

voidmain(){

pointp1(2,3);

pointp2(p1);

}13.類的私有成員可在何處訪問

A.通過子類的對象訪問B.本類及子類的成員函數(shù)中C.通過該類對象訪問D.本類的成員函數(shù)中14.派生類可以定義其______中不具備的數(shù)據(jù)和操作。15.intFunc(int,int);不可與下列哪個函數(shù)構(gòu)成重載

A.intFunc(int,int,int);B.doubleFunc(int,int);C.doubleFunc(double,double);D.doubleFunc(int,double);16.在C++中,可將多態(tài)性分為:編譯時的多態(tài)性和______。17.實現(xiàn)兩個相同類型數(shù)加法的函數(shù)模板的聲明是______A.add(Tx,Ty)B.Tadd(x,y)C.Tadd(Tx,y)D.Tadd(Tx,Ty)18.判斷流對象是否成功地與文件關(guān)聯(lián)的函數(shù)是______A.fail()B.clear()C.is_open()D.eof()19.定義派生類時,若不使用類關(guān)鍵字顯式地規(guī)定采用何種繼承方式,則默認(rèn)方式為______繼承。20.重載++運算符,執(zhí)行后綴操作n++。

#include<iostream>

usingnamespacestd;

classnumber{

intnum;

public:

number(inti){num=i;}

friendintoperator++(number,int);

voidprint(){cout<<"num="<<num<<endl;}

};

intoperator++(numberaint)

{

inti=a.num++;

returni;

}21.重載的運算符的實質(zhì)是保持其原有的運算符個數(shù)、______不變。22.類的構(gòu)造函數(shù)可以重載,類的析構(gòu)函數(shù)______重載。23.對于指針p,禁止修改指針p,也禁止修改指向的數(shù)據(jù),這樣的指針應(yīng)定義為______A.constchar*p="ABCD";B.char*constp="ABCD";C.charconst*p="ABCD";D.constchar*constp="ABCD";24.已知類AB,假定用戶為類AB定義了一個構(gòu)造函數(shù)"AB(intaa){a=aa;}",該構(gòu)造函數(shù)實現(xiàn)對數(shù)據(jù)成員______的初始化。25.以下程序?qū)崿F(xiàn)交換a,b變量的值,請用下橫線標(biāo)出錯誤所在行并給出修改意見。

#include<iostream.h>

voidswap(int&a,int&b)

{a=a+b;

b=a-b;

a=a-b;

voidmain()

{inta=19,b=15;

cout<<"a="<<a<<",b="<<b<<endl;

swap(&a,&b);

cout<<"a="<<a<<",b="<<b<<endl;

}26.已知類base,"base*abc()const;"是該類中一個成員函數(shù)的原型,在該函數(shù)體中______(能夠/不能夠)向*this或其成員賦值。27.如果調(diào)用函數(shù)時,需要改變實參或者返回多個值,應(yīng)該采取______方式。28.下列選項中,與實現(xiàn)運行時多態(tài)性無關(guān)的是______A.函數(shù)重載B.虛函數(shù)C.指針D.引用29.完成下面程序中的show函數(shù)的定義,使其運行結(jié)果如下:

Inbase

Inderived

程序清單如下:

#include______

usingnamespacestd;

classbase

{

public:

virtualvoidprint()

{

cout<<"Inbase"<<endl;

}

};

classderived:publicbase

{

public:

voidprint(){cout<<"Inderived"<<endl;}

};

voidshow(base*pb,void(base::*pf)())

{

______

}

voidmain()

{

baseb;

derivedd;

show(&b,base::print);

show(&d,base::print);

}30.用______修飾傳遞參數(shù),意思是通知函數(shù),它只能使用參數(shù)而無權(quán)修改它。31.調(diào)用聲明為intprint(inta,intb);的函數(shù)時,正確的方法是______A.print(0.5,0.8);B.print(2);C.print(1,2);D.print(1,2,3);32.在字符串類string中實現(xiàn)一個判斷函數(shù),該函數(shù)功能是統(tǒng)計某一字符串類對象(僅由單詞和空格組成)有多少個單詞,同時保存所有單詞在字符串中的起始地址(設(shè)該字符串不超過100個單詞)

#include<iostream.h>

#include<string>

classstr{

strings;intn,a[100],j,1;

public:str(string&a){s=a;n=0;j=0;l=0;}

....test(....);

int*geta(){returna;}

};

請寫出test函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量以及返回值類型)33.假設(shè)inta=1,b=2;則表達式(++a/b)*b--的值為______。34.在面向?qū)ο蟮某绦蛟O(shè)計中,通過封裝實現(xiàn)數(shù)據(jù)隱藏;通過______實現(xiàn)代碼的復(fù)用。35.靜態(tài)成員函數(shù)是______的成員,不是對象的成員。36.C++預(yù)處理語句不包括______A.宏定義B.文件包含C.條件編譯D.命名空間37.所謂“引用”就是將一個新標(biāo)識符和一塊已經(jīng)存在的______相關(guān)聯(lián),通常用于函數(shù)的參數(shù)表中或者作為函數(shù)的返回值。38.語句ofstreamf("TEMP.DAT",ios::app|ios::binary);的功能是建立流對象f,試圖打開文件TEMP.DAT并與之連接,并且

A.若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個新文件B.若文件存在,將其置為空文件;若文件不存在,打開失敗C.若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個新文件D.若文件存在,打開失?。蝗粑募淮嬖?,建立一個新文件39.對象是對問題域中客觀事物的抽象,它是一組屬性和在這些屬性上操作的______。40.C++程序的編譯是以______為單位進行的。41.C++的類中,是否允許定義函數(shù)______A.僅允許定義構(gòu)造函數(shù)B.允許C.不允許定義構(gòu)造函數(shù)D.不允許42.UML中實例連接反映對象之間的靜態(tài)關(guān)系,消息連接描述對象之間的______關(guān)系。43.設(shè)函數(shù)sum是由函數(shù)模板實現(xiàn)的,并且sum(3,6)和sum(4.6,8)都是正確的函數(shù)調(diào)用,則函數(shù)模板具有______個類型參數(shù)。44.C++中只有兩個布爾常量:true和______。45.#include<iostream>

usingnamespacestd;

voidmain(){

stringstr1("wearehere");

cout<<str1<<endl:

}46.以下敘述錯誤的是______A.基類的保護成員在公有派生類中仍然是保護成員B.基類的保護成員在派生類中仍然是保護成員C.基類的保護成員在私有派生類中是私有成員D.基類的保護成員在私有派生類中能夠被訪問47.已有復(fù)數(shù)類Complex和主函數(shù)main(),編寫一個類Root來實現(xiàn)求解一元二次方程的程序。

#include<iostream.h>

#include<iomanip.h>

#include<math.h>

classComplex

{public:

Complex(){}

voidsetC(doublei,doublej)

{real=i;image=j;}

voidshow();

protected:

doublereal,image;

};

voidComplex::show()

{cout<<"("<<real<<","<<image<<"i)"<<endl;}

voidmain()

{doublea,b,c;

cout<<"\n請輸入一元二次方程的系數(shù)a,b,c:";

cin>>a>>b>>c;

Rootroot(a,b,c);

root.solve();

}48.定義復(fù)數(shù)類complex,采用成員函數(shù)的形式對復(fù)數(shù)加法計算“+”進行運算符重載。49.輸入一行字符,按輸入字符的反序建立一個字符結(jié)點的單向鏈表,并輸出該鏈表中的字符。

#include<iostream>

usingnamespacestd;

structnode

{charch;

node*next;};

voidshow(node*head);

intmain()

{node*head,*p;

charc;

head=NULL;

while((c=getchar())!='\n')

//輸入一行字符

{______//建立新結(jié)點

p->ch=c;

p->next=head;

//插入表頭

head=p;

}

show(head);}

voidshow(node*head)

//輸出鏈表

{node*p=head;

cout<<"鏈表中的字符是:\n";

while(p)

{cout<<p->ch;

______}

cout<<endl;

}50.給出下面程序的輸出結(jié)果

#include<iostream>

usingnamespacestd;

template<classT>

TF(Tx)

{

returnx>5;

}

voidmain()

{

inta=15;

cout<<F(a)<<"\n";

doubleb=-5.8976;

cout<<F(b)<<"\n";

cout<<F(5)<<"\n";

}第1卷參考答案一.歷年考點試題黑鉆版1.參考答案:D2.參考答案:B[解析]本題主要考查的知識點為表達式的值作為函數(shù)參數(shù)。[要點透析](exp1,exp2)、(exp3,exp4,exp5)表示是兩個逗號表達式,相當(dāng)于兩個參數(shù),因此實參的個數(shù)是2。3.參考答案:outfile.open("d:\Text.txt",ios_base::out|ios_base::binary);4.參考答案:消息[考點]對象、類、消息[解析]對象之間以消息傳遞的方式進行通信。5.參考答案:open6.參考答案:B[考點]C++虛函數(shù)的定義[解析]當(dāng)基類定義了虛函數(shù),派生類中同名函數(shù)也自動為虛函數(shù),虛函數(shù)只是類中的一個成員函數(shù),但不能是類的靜態(tài)成員,關(guān)鍵字virtual用于類中該函數(shù)的聲明。7.參考答案:friendA&operator+=(A&f1,A&f2)有誤[考點]運算符重載[解析]定義函數(shù)時,不能用friend修飾。應(yīng)該改為A&operator+=(A&f1,A&f2)。8.參考答案:D[考點]本題主要考查的知識點為取地址運算符&。

x和r為兩個整型變量,它們的值都為56,但語句cout<<&x;輸出的為變量x的地址,而語句cout<<&r;輸出的為變量r的地址,故本題選D。9.參考答案:D[解析]從函數(shù)重載角度分析,一個類只能定義一個析構(gòu)函數(shù)且不能指明參數(shù),以便編譯系統(tǒng)自動調(diào)用。10.參考答案:D[考點]本題主要考查的知識點為文件的打開方式。[解析]ios_base::out是打開文件進行寫操作,D項錯誤。11.參考答案:初始化列表12.參考答案:y

point&z13.參考答案:D[解析]主要考查的知識點為類的私有成員。[要點透析]類的私有成員在派生類中是隱藏的,只能在基類的成員函數(shù)中訪問。14.參考答案:基類15.參考答案:B[解析]主要考查的知識點為函數(shù)重載。[要點透析]不能以形參名來區(qū)分函數(shù);不能以函數(shù)返回值來區(qū)分函數(shù)。必須是形參的個數(shù)或者類型不同才能構(gòu)成函數(shù)重載。16.參考答案:運行時的多態(tài)性17.參考答案:D[考點]本題主要考查的知識點為函數(shù)模板。

實現(xiàn)兩個相同類型數(shù)的加法,結(jié)果應(yīng)該和操作數(shù)具有相同類型。A項無返回值要用void;B項形參無類型,C項形參y沒有類型,所以選擇D項。18.參考答案:C[考點]錯誤處理函數(shù)[解析]clear()用來設(shè)置內(nèi)部錯誤狀態(tài);eof()用來檢測提取操作符是否已經(jīng)到達文件尾;is_open()判斷流對象是否成功地與文件關(guān)聯(lián);fail()在進行的操作失敗時返回false,否則返回true。19.參考答案:私有20.參考答案:friendintoperator++(number,int);intoperator++(numberaint)友元函數(shù)的聲明和定義有錯[考點]友元運算符的重載[解析]使用友元運算符重載“++”運算符,因為“++”運算符需要修改操作數(shù),所以必須使用引用參數(shù),friendintoperator++(number&,int);intoperator++(number&aint);。21.參考答案:優(yōu)先級和結(jié)合性[考點]運算符重載[解析]重載的運算符保持原有的運算符個數(shù)、優(yōu)先級和結(jié)合性不變。22.參考答案:不可以23.參考答案:D[考點]const對象[解析]constchat*p說明禁止p修改所指向的數(shù)據(jù)。char*constp則說明不能修改指針p的地址。因此constchar*constp="ABCD";表示既禁止修改指針p本身,又禁止修改p所指向的數(shù)據(jù)。24.參考答案:a[考點]構(gòu)造函數(shù)[解析]C++中定義構(gòu)造函數(shù),是為了實現(xiàn)對對象的初始化,AB(intaa){a=aa;},實現(xiàn)的是對數(shù)據(jù)成員a的初始化。25.參考答案:swap(&a,&b);函數(shù)的形參是變量的引用,調(diào)用時的實參應(yīng)該是地址。應(yīng)改為swap(a,b);。26.參考答案:不能夠[考點]const對象[解析]const對象只能調(diào)用const函數(shù),不能調(diào)用非const成員函數(shù)。27.參考答案:傳地址值28.參考答案:A[考點]本題主要考查的知識點為運行時的多態(tài)性。

[解析]函數(shù)重載體現(xiàn)的是編譯時的多態(tài)性,本題選A。29.參考答案:<iostream>

(pb->*pf)();30.參考答案:const[考點]使用const保護數(shù)據(jù)[解析]C++為了提高系統(tǒng)的自身安全,用const修飾傳遞參數(shù),意思是通知函數(shù),它只能使用參數(shù)而無權(quán)修改它。31.參考答案:C[考點]本題主要考查的知識點為函數(shù)的調(diào)用。

函數(shù)調(diào)用時,實參的個數(shù)及類型要與函數(shù)聲明時的參數(shù)個數(shù)及類型保持一致,所以本題中函數(shù)調(diào)用時實參個數(shù)須為2個且都是整型的,故選C。32.參考答案:inlinevpidstr::test()

{

intk=0

for(inti=0;i<s.size();++i)

{

if(s[i]==''&&i!=0)

//出現(xiàn)空格且空格不在字符串的首位置

{

a[n]=k;

//數(shù)組a[]記錄單詞的起始地址

n++;

//單詞個數(shù)加1

k=i+1;

//k指向下個單詞的起始位置

}

}

if(s[s.size()-1]!=")

//最后一個字符不是空格時,需單獨統(tǒng)計最后一個單詞

{

a[n]=k;

n++;

}

}[解析]本題是讓設(shè)計一個統(tǒng)計字符串單詞個數(shù)的函數(shù),并記錄每個單詞的起始地址??捎胣記錄單詞的個數(shù),數(shù)組a[]記錄有單詞的起始地址。對于一個僅有單詞和空格的字符串,用空格來區(qū)分各個單詞。遍歷字符串,當(dāng)出現(xiàn)空格時,表明出現(xiàn)一個單詞,則n加1,并記錄該單詞的起始地址。但要考慮一些特殊情況:如果字符串首位置出現(xiàn)空格,此時該空格前是沒有單詞的,是不用統(tǒng)計的;如果字符串末位置出現(xiàn)空格,表明已經(jīng)將最后一個單詞統(tǒng)計進去了,若末位置不是空格,說明最后一個單詞為統(tǒng)計,此時需要將其單獨統(tǒng)計。33.參考答案:234.參考答案:繼承[考點]繼承[解析]繼承是一個類可以獲得另一個類的特性的機制,實現(xiàn)了代碼的復(fù)用。35.參考答案:類36.參考答案:D[考點]C++預(yù)處理程序[解析]C++預(yù)處理語句有三種,分別是宏定義、文件包含、條件編譯。37.參考答案:存儲區(qū)域38.參考答案:A[解析]本題主要考查的知識點為文件的打開方式。[要點透析]ios::binary:指定文件以二進制方式打開,默認(rèn)為文本方式;ios::app:打開文件以便在文件的尾部添加數(shù)據(jù)。39.參考答案:封裝體[考點]類和對象[解析]對象就是一類物體的實例,組成對象的不僅可以有數(shù)據(jù),而且有對數(shù)據(jù)進行操作的函數(shù)。40.參考答案:文件[考點]程序的編輯、編譯、和運行[解析]C++語言寫成的源程序文件,經(jīng)過編譯、連接生成可執(zhí)行文件,所以C++程序的編譯是以文件為單位進行的。41.參考答案:B[考點]定義類[解析]類不僅可以有數(shù)據(jù),而且可以有對數(shù)據(jù)進行操作的函數(shù),不僅包括構(gòu)造函數(shù)。42.參考答案:動態(tài)[考點]類和對象的UML標(biāo)記圖[解析]UML中實例連接反應(yīng)對象之間的靜態(tài)關(guān)系,消息連接捕述對象之間的動態(tài)關(guān)系。43.參考答案:2[考點]函數(shù)模板[解析]sum(3,6)兩個參數(shù)都是int類型,sum(4.6,8)兩個參數(shù)是兩個類型。所以函數(shù)模板具有兩個類型參數(shù)。44.參考答案:false[考點]新的數(shù)據(jù)類型[解析]C++語言比C語言多了布爾型,其值有兩個:true和false。45.參考答案:stringstr1沒有加頭文件<string>46.參考答案:B[考點]本題主要考查的知識點為基類的保護成員在派生類中的訪問權(quán)限。[解析]基類的保護成員在派生類中的訪問權(quán)限是由派生方式?jīng)Q定的。如果是私有派生,則其在派生類中是私有的;如果是公有或保護派生,則其在派生類中是保護的。47.參考答案:完整的程序如下:

classRoot

{public:

Root(doublei,doublej,doublek)

{a=i,b=j,c=k;}

voidshow();

voidsolve();

protected:

doublea,b,c;

};

voidRoot::show()

{cout<<"方程";

cout<<a;

cout<<setiosflags(ios::showpos);

cout<<"*x*x":

cout<<b<<"*x";

cout<<c<<"=0\n";

cout<<resetiosflags(ios::showpos);

}

voidRoot::solve()

{show();

doublex=-b/2/a;

cout<<"的解是:\n";

doubledt=b*b-4*a*c;

Complexc1,c2;

if(fabs(dt)<1e-5)

{c1.setC(x,0),c2.setC(x,0);

cout<<"\nx1=x2=":

c1.show();

}

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論