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

下載本文檔

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

文檔簡介

2023年自考類計算機類(工學類)C++程序設計歷年高頻考題帶答案難題附詳解(圖片大小可自由調整)第1卷一.歷年考點試題黑鉆版(共50題)1.#include<iostream.h>

classfract

{private:

intden;

intnum;

public:

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

friendfract&operator+=(fract&,fract&);

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

};

friendfract&operator+=(fract&f1,fract&t2)

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

f1.num*=f2.num;

returnf1;

}

voidmain()

{fraetfr(3,4);

fr+=fract(5,7);

fr.show();

cout<<endl;

}2.#include<iostream>

usingnamespacestd;

classA

{public:

A(){a=5;}

voidprinta(){cout<<"A:a="<<a<<endl;}

private:

inta;

classB;

};

classB

{public:

voiddisplay1(At)

{t.a++;cout<<"display1:a="<<t.a<<endl;};

voiddisplay2(At)

{t.a--;cout<<"display2:a="<<t.a<<endl;};

};

intmain()

{Aobj1;

Bobj2;

obj1.printa();

obj2.display1(obj1);

obj2.display2(obj1);

obj1.printa();3.如果一個類至少有一個純虛函數(shù),那么就稱該類為______A.抽象類B.虛基類C.派生類D.以上都不對4.重載++運算符,執(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;

}5.假定AB為一個類,則執(zhí)行"ABa(2),b[3],*p[4];"語句時調用該類構造函數(shù)的次數(shù)為

A.3B.4C.5D.96.完成下列程序填空,使其輸出為-123.457。

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain()

{doublex=123.456789;

cout<<______<<-x<<endl;

}7.#include<iostream>

usingnamespacestd;

classSample

{

private:

intx;

public:

Sample(){x=0;}

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

voidoperator++(){x+=10;}

};

voidmain(){

Sampleobj;

Obj.disp();

Obj++;

cout<<"執(zhí)行obj++之后"<<endl;

Obj.disp();

}8.如有“char*p="Hello";”,則語句“cout<<*(p+1);”輸出值是______。9.下列對靜態(tài)成員函數(shù)描述正確的是

A.靜態(tài)成員函數(shù)中可使用1個this指針B.靜態(tài)成員函數(shù)中不能使用this指針C.靜態(tài)成員函數(shù)中可使用多個this指針D.靜態(tài)成員函數(shù)中只可使用1個that指針10.靜態(tài)成員函數(shù)是______的成員,不是對象的成員。11.聲明虛函數(shù)的目的是使______A.派生類既能繼承基類對虛函數(shù)的實現(xiàn),又能繼承虛函數(shù)提供的接口B.派生類僅繼承函數(shù)的接口C.派生類繼承基類對虛函數(shù)的實現(xiàn)D.派生類對函數(shù)進行改寫12.虛函數(shù)實現(xiàn)多態(tài)性的前提不包括______A.類之間的繼承關系滿足賦值兼容性規(guī)則B.改寫了同名虛函數(shù)C.虛函數(shù)是類中的一個成員函數(shù)D.根據(jù)賦值兼容性規(guī)則使用指針(或引用)13.此程序調用findmax()函數(shù),返回數(shù)組中的最大值

#include<iostream>

usingnamespacestd;

intfindmax(int*a,intn)

{

int*p,*s;

for(p=a,s=a;p-a<n;p++)

if(*p<*s)*s=*p;

return(*s);

}

voidmain()

{

intx[5]={12,2,8,47};

coutfindmax(x,5)endl;

}14.已知類AB,定義了一個構造函數(shù)"AB(intaa=0):a(aa){}",則定義該類的對象時,可以有______種不同的定義模式。15.關于new運算符的描述中,錯誤的是______A.它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組B.使用它創(chuàng)建的對象或對象數(shù)組可以使用運算符delete刪除C.使用它創(chuàng)建對象時要調用構造函數(shù)D.使用它創(chuàng)建對象數(shù)組時必須指定初始值16.使用下列哪個流格式控制符可設置轉換基數(shù)為八進制______A.decB.octC.hexD.endl17.從一個或者多個以前定義的類產生新類的過程成為______。18.在C++中,利用向量類模板定義一個具有20個double的向量E,其元素均被置為0.5,實現(xiàn)此操作的語句是______。19.下列選項中,與實現(xiàn)運行時多態(tài)性無關的是______A.函數(shù)重載B.指針C.虛函數(shù)D.引用20.給出下面程序的輸出結果。

#include<iostream.h>

classA

{private:

inta;

public:

voidset(intx){a=x;}

voidshow(){cout<<"a="<<a<<",";}

};

classB:publicA

{private:

intb;

public:

voidset(intx=0)

{A::set(x);b=x+10;}

voidset(intx,inty){A::set(x);b=y;}

voidshow(){A::show();cout<<"b="<<b<<endl;}

};

voidmain()

{Bb;

b.set(10);b.show();

b.set(30,50);b.show();

}21.如果在類模板的定義中有一個靜態(tài)數(shù)據(jù)成員,則在程序進行中會產生______靜態(tài)變量。22.下列關于類的說法中,不正確的是______A.類是一種用戶自定義的數(shù)據(jù)類型B.類中的成員函數(shù)可以存取類中的私有數(shù)據(jù)C.在類中,如果不作特別說明,所有的數(shù)據(jù)均為私有類型D.在類中,如果不作特別說明,所有的成員函數(shù)均為公有類型23.下面程序運行的結果是:5+10=15。

#include<iostream.h>

classTest

{private:

intx,y;

public:

Test(){x=y=0;}

voidSetxy(intx,inty){______}

voidshow(){______}

};

voidmain()

{Testptr;

ptr.Setxy(5,10);

ptr.show();

}24.#include<iostream.h>

classAA

{public:

AA(______)

{A=i;B=j;cout<<"Constructor\n";}

AA(AA&obj)

{A=obj.A;

B=obj.B;

cout<<"CopyConstructor\n";

}

~AA(){cout<<"Destructor\n";}

voidshow()

{cout<<"A="<<A<<",B="<<B<<endl;}

private:

intA,B;

};

voidmain()

{AAa1(2,3);

AAa2(a1);

a2.show();

______=&a2;

pa->show();

}25.下面屬于重載函數(shù)的有______

a.voidf(intx)(…)

f(inty)(…)

f(inti,inti)(…)

d.floatk(intx)(…)A.4個全部B.a和dC.b和cD.c和d26.類的繼承是指派生類繼承基類的數(shù)據(jù)成員和______。27.語句序列

ifstreaminfile;

infile.open("data.dat");

的功能可用一個語句實現(xiàn),這個語句是______。28.關于運算符重載,下列說法錯誤的是______A.不是所有的運算符都可以重載B.通過重載可以使運算符應用于自定義的數(shù)據(jù)類型C.通過重載不可以創(chuàng)造原來沒有的運算符D.通過重載可以改變運算符的優(yōu)先級29.C++中通過______對類的對象進行初始化。30.C++語言中動態(tài)回收內存的關鍵字是______。31.已知類A,語句"A*p;p=newA[10];"。要釋放由p指向的動態(tài)空間的語句是______。32.下列字符常量11、1.1、11L的數(shù)據(jù)類型分別是______A.long、double、intB.long、float、intC.int、double、longD.int、float、long33.請在下面程序的橫線處填上適當內容,以使程序完整,并使程序的輸出為:

11,10

13,12

#include<iostream.h>

classA

{inta;

public:

A(inti=0){a=i;}

intGeta(){returna;}

voidshow(){cout<<a<<endl;}

};

classB

{Aa;

intb;

public:

B(inti,intj)______

{}

voidshow(){cout<<a.Geta()<<","<<b<<endl;}

};

voidmain()

{Bb[2]={B(10,11),B(12,13)};

for(inti=0;i<2;i++)

______

}34.#include<iostream.h>

classtest{

private:

intx,y;

public:

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

intmax();

};

inttest:max(){if(x>y)returnx;elsereturny;}

voidmain(){

testa;

a.test1(1,3);

cout<<a.max()<<endl;

}35.基類private成員,通過public派生,其在派生類中為

A.privateB.protectedC.publicD.不可訪問36.已定義類Myclass,若要把FriendClass定義為類Myclass的友元類,則應在類MyClass的定義中加入語句______。37.使用下列哪一限定符可強制改變訪問方式

A.constB.shortC.longD.signed38.UML中實例連接反映對象之間的靜態(tài)關系,消息連接描述對象之間的______關系。39.寫出此程序的執(zhí)行結果:

#include<iostream.h>

template<classT>

Tfunc(Tx,Ty){

if(sizeof(T)==8)

returnx+y;

else

returnx*y;

}

voidmain(){

cout<<func(8,5)<<":"<<rune(5.0,10.0)<<endl;

intd;cin>>d:

}40.下面關于類模板的派生與繼承,描述錯誤的是______A.類模板可以繼承,繼承的方法與普通的類一樣B.聲明模板繼承之前,必須重新聲明類模板C.模板類的基類和派生類不可以是非模板類D.模板類的基類和派生類可以是模板類或非模板類41.#include<iostream.h>

classA

{public:

A(inti=8):y(i){}

staticintx:

inty;

};

intx=20;//對類成員初始化

voidmain()

{Aa;

cout<<a.x<<","<<a.y<<endl;

}42.對象和引用都使用運算符“______”訪問對象的成員,指針則使用“______”運算符。43.所謂“______”就是將一個新標識符和一塊已經存在的存儲區(qū)域相關聯(lián)。44.定義一個表示點的結構類型Point和一個由直線方程y=ax+b確定的直線類Line。結構類型Point有x和y兩個成員,分別表示點的橫坐標和縱坐標。Line類有兩個數(shù)據(jù)成員a和b,分別表示直線方程中的系數(shù)。Line類有一個成員函數(shù)print用于顯示直線方程;友元函數(shù)setPoint(Line&11,Line&12)用于求兩條直線的交點。在main函數(shù)中,建立兩個直線對象,分別調用print函數(shù)顯示兩條直線的方程,并調用函數(shù)setPoint求這兩條直線的交點。45.Test_Static類內有一靜態(tài)成員變量num,且初始值設為15。

#include<iostream>

usingnamespacestd;

classTest_Static

{

private:

____________

public:

Test_Static(int);

voidprint();

};

____________

Test_Static::Test_Static(intn)

{

Bum=n;

}

voidTest_Static::print()

{

coutHumendl;

}

voidmain()

{

Test_Staticts(10);

ts.print();

}46.關于虛函數(shù)的描述中,正確的是

A.虛函數(shù)是一個靜態(tài)成員函數(shù)B.虛函數(shù)是一個非成員函數(shù)C.虛函數(shù)既可以在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義D.派生類的虛函數(shù)與基類中對應的虛函數(shù)具有相同的參數(shù)個數(shù)和類型47.決定C++語言中函數(shù)返回類型的是______。48.______是istream類的對象,用于處理標準輸入,即鍵盤輸入。49.下列關于向量的描述中,不正確的是______A.向量是類模板,具有成員函數(shù),但它不可以使用構造類型B.向量可以改變賦值目標的大小C.erase(iteratorit)方法是刪除it所指向的容器對象D.size()方法指返回當前向量中已經存放的對象的個數(shù)50.下列關于靜態(tài)成員函數(shù)與一般成員函數(shù)的不同點不正確的是______A.靜態(tài)成員是類的成員,不是對象的成員B.靜態(tài)成員的生成在建立對象之后C.靜態(tài)成員函數(shù)不能被說明為虛函數(shù)D.靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)函數(shù)第1卷參考答案一.歷年考點試題黑鉆版1.參考答案:friendfract&operator+=(fract&f1,fract&f2)定義函數(shù)時,不能用friend修飾。應改為fract&operator+=(fract&f1,fract&t2)。2.參考答案:在一個類中引用另外一個類的任何對象classB,應該使用友元類friendclassB;。[考點]將一個類說明為另一個類的友元[解析]可以將一個類說明為另一個類的友元,可以通過該類的對象或任意一個成員函數(shù)訪問友元類的對象的私有數(shù)據(jù)。3.參考答案:A[考點]本題主要考查的知識點為抽象類。[解析]包含有純虛函數(shù)的類稱為抽象類,一個抽象類只能作為基類來派生新類,不能說明抽象類的對象。4.參考答案:friendintoperator++(number,int);intoperator++(numberaint)友元函數(shù)的聲明和定義有錯[考點]友元運算符的重載[解析]使用友元運算符重載“++”運算符,因為“++”運算符需要修改操作數(shù),所以必須使用引用參數(shù),friendintoperator++(number&,int);intoperator++(number&aint);。5.參考答案:B[解析]本題主要考查的知識點為類對象的創(chuàng)建和構造函數(shù)的調用。[要點透析]a(2)調用1次帶參數(shù)的構造函數(shù),b[3]調用3次無參數(shù)的構造函數(shù),指針沒有給它分配空間,沒有調用構造函數(shù),所以共調用構造函數(shù)的次數(shù)為4。6.參考答案:setprecision(3)[考點]數(shù)據(jù)的簡單輸入/輸出格式[解析]觀察輸出結果是使double型數(shù)據(jù)123.456789,取反,小數(shù)點后精度取3位。setprecision(intn),設置浮點數(shù)輸出精度n,由此可得setprecision(3)。7.參考答案:x=0

執(zhí)行obj++之后

x=10[考點]運算符++的重載[解析]在類Sample中設計運算符重載成員函數(shù),使運算符++作為sample類對象時,該對象的x增10。8.參考答案:e[考點]C++字符數(shù)組[解析]p為定義的字符數(shù)組,其指向的是字符數(shù)組的首地址,則p+1表示指向字符數(shù)組的第二個字符的地址,故*(p+1)輸出的為e。9.參考答案:B[解析]靜態(tài)成員函數(shù)沒有this指針,所以靜態(tài)成員函數(shù)只能通過對象名(或指向對象的指針)訪問該對象的非靜態(tài)成員。10.參考答案:類11.參考答案:A[考點]虛函數(shù)[解析]聲明虛函數(shù)的目的是使派生類既能繼承基類對此虛函數(shù)的實現(xiàn),又能繼承虛函數(shù)提供的接口。12.參考答案:C[考點]C++虛函數(shù)實現(xiàn)多態(tài)性的條件[解析]產生多態(tài)性的前提有:類之間的繼承關系滿足賦值兼容性規(guī)則,改寫了同名虛函數(shù),根據(jù)賦值兼容性規(guī)則使用指針(或引用)。13.參考答案:if(*p<*s)*s=*p;改為if(*p>*s)*s=*p;14.參考答案:2[考點]構造函數(shù)[解析]用戶定義了一個有參的構造函數(shù),當定義該類對象時,可以調用編譯器自動生成的無參構造函數(shù),也可以調用用戶定義的有參構造函數(shù)。15.參考答案:D[考點]本題主要考查的知識點為new運算符。

new創(chuàng)建對象數(shù)組時不能指定初始值,D項錯誤。16.參考答案:B[考點]本題主要考查的知識點為數(shù)據(jù)的簡單輸入輸出格式。

dec:設置轉換基數(shù)為十進制;oct:設置轉換基數(shù)為八進制;hex:設置轉換基數(shù)為十六進制;endl:輸出一個換行符并刷新流。17.參考答案:派生[考點]派生的基本概念[解析]類的派生是面向對象程序設計方法重要的特征。由一個或者多個基類產生新類的過程稱為派生,這個新類稱為派生類。18.參考答案:vector<double>E(20,0.5);19.參考答案:A[考點]運行時多態(tài)[解析]函數(shù)重載體現(xiàn)的是編譯時的多態(tài)性,所以選A。20.參考答案:a=10,b=20

a=30,b=5021.參考答案:一個或者多個[考點]類模板與靜態(tài)成員[解析]類模板允許有靜態(tài)成員,它們是類模板的實例化類的靜態(tài)成員。對于每個類模板的每一個實例化類,其所有的對象共享其靜態(tài)成員。所以靜態(tài)成員的個數(shù),取決于有多少個實例化類。22.參考答案:D[考點]類和對象[解析]類是用戶自己構造的數(shù)據(jù)類型并遵循C++的規(guī)定。類中定義的數(shù)據(jù)和函數(shù)的訪問權限,如果沒有使用關鍵字,則所有成員默認為private權限。23.參考答案:(*this).x=x;(*this).y=y;

cout<<x<<"+"<<y<<"="<<x+y<<endl;24.參考答案:inti,intj

AA*pa25.參考答案:C[考點]本題主要考查的知識點為函數(shù)重載。[解析]重載函數(shù)的函數(shù)名相同,但至少要在參數(shù)個數(shù)或參數(shù)類型上有所不同。26.參考答案:成員函數(shù)27.參考答案:ifstreaminfile("data.dat");28.參考答案:D[考點]運算符重載[解析]運算符重載可以使運算符應用于自定義的數(shù)據(jù)類型,但并非所有的運算符都可以重載,也不可以創(chuàng)造原來沒有的運算符,更不可改變其優(yōu)先級。29.參考答案:構造函數(shù)30.參考答案:delete或delete[]31.參考答案:deletep;[考點]析構函數(shù)和運算符delete[解析]當使用delete釋放動態(tài)對象數(shù)組時,使運算符delete知道p指向的動態(tài)對象數(shù)組。32.參考答案:D[考點]數(shù)據(jù)類型及其注意事項[解析]C++語言中整數(shù)常量有四種類型,十進制、長整型(后綴L)、八進制(前綴零)、十六進制(前綴0x)。33.參考答案::a(j),b(i)

b[i].show();34.參考答案:inttest:max()成員函數(shù)定義時用"::"35.參考答案:D[解析]公有派生時,基類的私有成員在派生類中是不可訪問的。36.參考答案:friendclassFriendClass;[考點]友元函數(shù)[解析]將一個類說明為另一個類的友元,聲明形式如下:

friendclass類名;37.參考答案:A[解析]用const修飾傳遞參數(shù),意思是通知函數(shù),它只能使用參數(shù)而無權修改它。38.參考答案:動態(tài)39.參考答案:40:1540.參考答案:C41.參考答案:intx;靜態(tài)數(shù)據(jù)成員初始化,需要在類外進行,格式錯誤。應改為intA::x=20;。42.參考答案:“.”

溫馨提示

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

評論

0/150

提交評論