- 相關(guān)推薦
全國計算機(jī)二級《C++》上機(jī)試題及答案
在各領(lǐng)域中,我們或多或少都會接觸到試題,借助試題可以更好地考查參試者所掌握的知識和技能。一份好的試題都是什么樣子的呢?以下是小編精心整理的全國計算機(jī)二級《C++》上機(jī)試題及答案,歡迎閱讀,希望大家能夠喜歡。
一、程序改錯題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
{
inti;
public:
TC();
voiddisplay();
~TC();
};
//******error******
TC:TC()
{
cout<<"Constructor"<<",";
i=0;
)
//******error******
TC:display()
{
tout<<"i="< }
//******error******
TC:TC()
{
COUI<<"Destructor"< }
voidmain()
{
TCa;
a.display();
}
二、簡單應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼,實(shí)現(xiàn)函數(shù)sort(intA[],intn),用選擇排序法將數(shù)組從大到小排序。
提示:選擇排序法的思想是
(1)反復(fù)從還未排好序的那部分線性表中選出關(guān)鍵字最小的結(jié)點(diǎn)。
(2)按照從線性表中選出的順序排列結(jié)點(diǎn),重新組成線性表。
(3)直到未排序的那部分為空,使得重新形成的線性表是一個有序的線性表。
補(bǔ)充函數(shù)sort(intA[],intn),實(shí)現(xiàn)選擇排序。
注意:請勿改動主函數(shù)。
試題程序:
#include
#defineN10
voidsort(intA[N],intn)
{
}
intmain()
intA[N]={-72,54,-6,7,18,102,0,4,-11,1};
sort(A,10);
for(inti=0;i(sizeof(A)/sizeof(int);i++)
{
cout< }
cout< return0;
}
三、綜合應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及總個數(shù),同時允許退貨,請按照以下的操作,把類補(bǔ)充完整。
(1)定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型變量AllN0,請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加到AllWeight中,并且AllNo自加。請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)在析構(gòu)函數(shù)中,在AllWeight中減去weight,然后AllNo自減,請在注釋3后添加適當(dāng)?shù)恼Z句。
(4)完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。
試題程序:
#include(iostream.h>
classTCFruit
{
private:
floatWeight;
//********1********
staticintAllNo;
public:
TCFruit(floatw)
{
//********2********
AllWeight+=w:
AllNo++:
}
~TCFruit()
{
//********3********
AllWeight-=Weight:
}
voiddisplay()
{
cout<<"SellaFruitwith"< endl;
cout<<”Allsellnumber:"< cout<<"Allsellweight:"< endl< }
};
//********4********
floatTCFruit::AllWeight=0.0;
intmain()
{
TCFruitFruitl(1.2);
Fruitl.display();
TCFruitFruit2(2.3);
Fruit2.display();
return0;
}
全國計算機(jī)二級《C++》上機(jī)試題及答案 篇1
一、程序改錯題
(1)應(yīng)改為“TC::TC()”。
(2)應(yīng)改為“voidTC::display()”。
(3)應(yīng)改為“TC::~TC()”。
【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC()”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display()”后的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display()”。由第3處的語句“TC::TC()”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC()”。
二、簡單應(yīng)用題
inti,j;
for(i=O;i {
for(j=0;j {
if(A[j]>A[j+1])//如果前面的數(shù)比后面的大則
進(jìn)行交換
{
intt=A[j];//進(jìn)行交換
A[j]=A[j+1];
A[j+1]=t;
}
}
}
【解析】數(shù)組A[N]中有n個數(shù),進(jìn)行n-1次比較,在每一次比較中兩兩比較的次數(shù)逐漸減少,比如若有6個數(shù)9,
8,5,4,2,0。第一次將8和9對調(diào),第二次將第2個數(shù)9和第3個數(shù)5對調(diào),如此共進(jìn)行5次,得到8-5-4-2-0-9的順序,可以看到:最大的數(shù)9已“沉底”,成為最下面一個數(shù),而小的數(shù)“上升”。最小的數(shù)0已向上“浮起”一個位置。經(jīng)第一趟(共5次)后,已得到最大的數(shù),然后進(jìn)行第二趟比較,對余下的前面5個數(shù)按上面的方法進(jìn)行比較,經(jīng)過4次比較,得到次大的數(shù)8。如此進(jìn)行下去。可以推知,6個數(shù)要比較5趟。在第一趟中要進(jìn)行兩兩比較5次,在第二趟中比較4次,……第5趟比較1次。因此設(shè)置兩層循環(huán),外層循環(huán)變量i從O變化大到n-1,內(nèi)層循環(huán)變量j從0到n-j,在內(nèi)層循環(huán)體內(nèi),比較相鄰兩數(shù),如果前面比后面的大則交換。在內(nèi)層循環(huán)體內(nèi),如果前面的元素比后面的元素大,則用一個臨時變量記錄前面的第j個元素,然后將第j+1個元素賦值給第j個元素,臨時變量值賦給第j+1個元素,如此完成兩個元素的.交換。
三、綜合應(yīng)用題
(1)應(yīng)添加“staticfloatAllWeight;”。
(2)應(yīng)添加“Weight=w;”。
(3)應(yīng)添加“AllNo--;”。
(4)應(yīng)添加“intTCFruit::AllNo=0;”。
【解析】靜態(tài)數(shù)據(jù)成員聲明時需使用關(guān)鍵字static,因此第1處應(yīng)添加“staticfloatAllWeight;”。構(gòu)造函數(shù)用來對類成員進(jìn)行初始化,在TCFruit類的構(gòu)造函數(shù)TCFruit(floatw)中,完成weight的初始化,并把這個w加到AllWeight中,并且AllNo自加,因此第2處應(yīng)添加“weight=w;”。調(diào)用析構(gòu)函數(shù)相當(dāng)于退出,這時AllWeight中減去weight,然后AllNo自減,因此第3處應(yīng)添加“AllNo--;”。靜態(tài)數(shù)據(jù)成員的初始化格式為“<數(shù)據(jù)類型><類名>::(靜態(tài)數(shù)據(jù)成員>=(初始值)”,因此第4處應(yīng)添加“intTCFruit::AllNo=0;”。
C語言基本算法
1.交換(兩量交換借助第三者)
例1、任意讀入兩個整數(shù),將二者的值交換后輸出。
main()
{int a,b,t;
scanf("%d%d",&a,&b);
printf("%d,%d ",a,b);
t=a; a=b; b=t;
printf("%d,%d ",a,b);}
【解析】程序中加粗部分為算法的核心,如同交換兩個杯子里的飲料,必須借助第三個空杯子。
假設(shè)輸入的值分別為3、7,則第一行輸出為3,7;第二行輸出為7,3。
其中t為中間變量,起到“空杯子”的作用。
注意:三句賦值語句賦值號左右的各量之間的關(guān)系!
【應(yīng)用】
例2、任意讀入三個整數(shù),然后按從小到大的順序輸出。
main()
{int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b){ t=a; a=b; b=t; }
if(a>c){ t=a; a=c; c=t; }
if(b>c) { t=b; b=c; c=t; }
printf("%d,%d,%d ",a,b,c);}
2.累加
累加算法的要領(lǐng)是形如“s=s+A”的累加式,此式必須出現(xiàn)在循環(huán)中才能被反復(fù)執(zhí)行,從而實(shí)現(xiàn)累加功能!癆”通常是有規(guī)律變化的表達(dá)式,s在進(jìn)入循環(huán)前必須獲得合適的初值,通常為0。
例1、求1+2+3+……+100的和。
main()
{int i,s;
s=0; i=1;
while(i<=100)
{s=s+i;
i=i+1;
}
printf("1+2+3+...+100=%d ",s);}
【解析】程序中加粗部分為累加式的典型形式,賦值號左右都出現(xiàn)的變量稱為累加器,其中“i = i + 1”為特殊的累加式,每次累加的值為1,這樣的累加器又稱為計數(shù)器。
3.累乘
累乘算法的要領(lǐng)是形如“s=s*A”的累乘式,此式必須出現(xiàn)在循環(huán)中才能被反復(fù)執(zhí)行,從而實(shí)現(xiàn)累乘功能!癆”通常是有規(guī)律變化的表達(dá)式,s在進(jìn)入循環(huán)前必須獲得合適的初值,通常為1。
例1、求10!
[分析]10!=1×2×3×……×10
main()
{int i; long c;
c=1; i=1;
while(i<=10)
{c=c*i;
i=i+1;
}
printf("1*2*3*...*10=%ld ",c);}
【全國計算機(jī)二級《C++》上機(jī)試題及答案】相關(guān)文章:
計算機(jī)二級C++模擬試題及答案02-06
計算機(jī)二級《Java》上機(jī)試題及答案201603-09
2015年計算機(jī)二級Access上機(jī)試題及答案12-02
2016年9月計算機(jī)二級《C++》上機(jī)題庫及答案03-10
2024計算機(jī)二級C上機(jī)考試試題及答案10-23