初級程序員2018下半年下午試題_第1頁
初級程序員2018下半年下午試題_第2頁
初級程序員2018下半年下午試題_第3頁
初級程序員2018下半年下午試題_第4頁
初級程序員2018下半年下午試題_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

初級程序員2018下半年下午試題(總分:89.30,做題時間:150分鐘)試題一(總題數(shù):1,分數(shù):14.90)1.

閱讀以下說明和流程圖,填寫流程圖中的空缺。

【說明】

設(shè)[a1b1],[a2,b2]…,,[an,bn]是數(shù)軸上從左到右排列的n個互不重疊的區(qū)間(a1<b1<a2<b2<…<an<bn)以下流程圖將一個新的區(qū)間[A,B](A<B)添加到上述區(qū)間集,形成新的從左到右排列的若干個互不重疊的區(qū)間(若A、B落在原有的兩個區(qū)間,則以原有區(qū)間最左端點和最右端點為基準,形成新的區(qū)間)最后依次輸出這些區(qū)間的端點。

例如,給定區(qū)間集[1,2],[4,6],[8,10],[13,15],[17,20],添加區(qū)間[5,14]后,依次輸出1,2,4,15,17,20,表示合并后的區(qū)間集[1,2],[4,15],[17,20]。

該流程圖采用的算法是:先在a1,b1,a2,b2,…,anbn中掃描定位A點,再繼續(xù)描定位B點,在掃描過程中隨時輸出已確定的區(qū)間的端點值。

【流程圖】

(分數(shù):14.90)__________________________________________________________________________________________

正確答案:((1)A

(2)ai

(3)bi

(4)A,B

(5)B)解析:試題二(總題數(shù):1,分數(shù):14.80).閱讀以下C語言代碼,回答下列問題。(分數(shù):14.80)1.

【C語言代碼1】

#include<stdio.h>

intmain()

{

inta,tmp,b=0;

scanf("%d",&a);

tmp=a<0?-a:a;

while(tmp){

b=b*10+tmp%10;

tmp=tmp/10;

}

if(a==b||-a==b)

printf("Palindromicnumber.\n");

printf("a=%db=%d\n",a,b);

return0;

}

【問題1】

寫出【C語言代碼1】運行時分別輸入-1331、795的輸出結(jié)果。(分數(shù):7.40)__________________________________________________________________________________________

正確答案:(輸入-1331的結(jié)果是:

Palindromicnumber.

a=-1331,b=1331

輸入795的結(jié)果是:

a=795,b=597)解析:2.

【C語言代碼2】

#include<stdio.h>

intmain()

{

chargrade;

intpoints;

for(grade='A';grade<'F;grade++)

{

switch(grade){

case

'A':

points=4;break;

case

'B':

points=3;

case

'C':

points=2;

case

'D':

points=1;break;

case

'E':

case

'W':

points=0;

}

if(points>0)

printf("Passed,points=%d\n",points);

else

printf("Failed\n");

}

return=0;

}

【問題2】

寫出【C語言代碼2】運行時的輸出結(jié)果。(分數(shù):7.40)__________________________________________________________________________________________

正確答案:(輸出結(jié)果是:

Passed,point=4

Passed,point=1

Passed,point=1

Passed,point=1

Failed)解析:試題三(總題數(shù):1,分數(shù):14.90)1.

閱讀以下說明和C語言代碼,填寫程序中的空缺處。

【說明】

某地電價分三檔:

(1)當(dāng)月用電量不超過180度時,每度電0.5元。

(2)當(dāng)月用電量超出180度但不超過360度的部分,每度電0.55元。

(3)當(dāng)月用電量超過360度的部分,每度電0.7元。

例如,某戶A一個月的用電量為150度,其電費為150×0.5=75.00元;某戶B用電量為280度,其電費為180×0.5+(280-180)×0.55=145.00元;某戶C用電量為450度,其意費為180×0.5+(360-180)×0.55+(450-360)×0.7=90.0+99.0+63.0=252.00元。

下面程序運行時讀入m(m>0)個住戶某月的用電量,計算該月每戶應(yīng)繳的電費并輸出,同時找出這m個住戶中該月的最大用電量和最小用電量。

【C代碼】

#include<stdio.h>

#defineMAXQT100000

//用電量的最大值

doubleproc(intqt)

{//計算并返回月用電量qt時的電量

Doublefee=0.0;

if(______)

fee=qt*0.5;

else

if(______)

fee=180*0.5+(qt-180)*0.55;

else

fee=______;

returnfee;

}

intmain()

{

intm;

//住戶數(shù)

intqt,minimum=MAXQT,maximum=0;

//用電量,最小用電量,最大用電量

scanf("%d",&m);

while(m>0){

scanf("%d",&qt);

if(qt<0||qt>MAXQT)continue;

printf("%.21f\n",proc(qt));

if(______)

minimum=qt;

elseif(______)

maximum=qt;

______;

}

printf("maximum=%d,minimum=%d\n",maximum,minimum);

return0;

}

(分數(shù):14.90)__________________________________________________________________________________________

正確答案:(qt<=180

qt<=360

180*0.5+(360-180)*0.55+(qt-360)*0.7

minimum>qt

maximum<qt

m--)解析:試題四(總題數(shù):1,分數(shù):14.90)1.

閱讀以下說明和C語言代碼,填寫程序中的空缺處。

【說明】

函數(shù)insertElem的功能是在元素升序排列的數(shù)組中加入一個新元素并保持數(shù)組元素升序排列的特點。在maln函數(shù)中輸入若干表示價值的實數(shù),輸入為0或負數(shù)或?qū)崝?shù)個數(shù)超出限定數(shù)量時終止,調(diào)用insertElem將價格按升序保存在數(shù)組pdata中,最后輸出所輸入的實數(shù)。

【C語言代碼】

#defineARRSZ10001

voidinsertElem(doublearr[],intn,doubleelem)

/*arr空間足夠大且其元素按照升序排列,將elem插入arr中并保持其升序特點*/

{inti;

doubletmp;

if(n==0||elem>=arr[n-1]){______=elem;return;)

for(i=n-1;i>=0&&elem<arr[i];i--){//查找插入位置并將元素后移

______;

}

______=elem;

//將元素放入最終位置

}

intmain()

{intidx,n=0;

Doubleprice,pdata[ARRSZ];

do

{

scanf("%lf",&price);

if(price<=0)______;

insertElem(______);//調(diào)用insertElem將price的值加入pdata數(shù)組

n++;

}while(n<ARRSZ);

for(idx=0;______;idx++)

//按升序輸出所輸入的實數(shù)

printf("%2lf\t",pdata[idx]);

return0;

}

(分數(shù):14.90)__________________________________________________________________________________________

正確答案:(arr[n]

arr[i+1]=arr[i]

arr[i+1]

break

pdata,n,price

idx<n)解析:試題五(總題數(shù):1,分數(shù):14.90)1.

閱讀以下說明和Java程序,填寫程序中的空缺處。

【說明】

以下Java代碼實現(xiàn)一個簡單樂器系統(tǒng),音樂類(Music)可以使用各類樂器(Instrument)進行演奏和調(diào)音等操作,對部分樂器進行建模,其類圖如下圖所示,包括樂器(Instrument)、打擊樂器(Percussion)、弦樂器(Stringed)、管樂器(Wind)、木管樂器(Woodwind)、銅管樂器(Brass)。

類圖

【Java代碼】

importjavautilArrayList.

enumNote(/'枚舉各種音調(diào)'/)

MIDDLE_C.C_SHARP,B_FLAT,

//其他略

}

abstractclassinstrument(/'樂器')

______//play方法

abstractvoidadjust()

//adjust抽象方法

}

classWind______{

publicvoidplay(Noten){System,out,println("Wind.play()"+n);)

publicvoidadjust(){System,out,println("Wind.adjust()");}

}

/*類Percussion和Stringed實現(xiàn)代碼略*/

classBrass______{

publicvoidplay(Noten){System,out,println("Brass.play()"+n);}

publicvoidadjust(){System,out,println("Brass,adjust()");}

}

classWoodwindextendsWind{

publicvoidplay(Noten){System.out.println("Woodwind.play()"+n);}

}

publicclassMusic{

voidtune(Instrumenti){i.play(Note.MIDDLE_C);

}

voidadjust(Instrumenti){i.adjust();

}

voidtuneAll______e

{

for(intj=0;j<e.size();j++){

Instrumenti=e.get(j);

adjust(i);

tune(i);

}

}

publicstaticvoidmain(String[]args){

______music=newMusic();

ArrayList<Instument>orchestra=newArrayList<>();

orchestra.add(newWind());

orchestra.add(newWoodw/nd());

music.tuneAll(orchestra):

}

}

(分數(shù):14.90)__________________________________________________________________________________________

正確答案:(abstractvoidplay(Noten)

extendsinstrument

extendsWind

ArrayList<Instrument>

Music)解析:試題六(總題數(shù):1,分數(shù):14.90)1.

閱讀下列說明和C++代碼,填寫程序中的空缺處。

【說明】

以下C++代碼實現(xiàn)一個簡單樂器系統(tǒng),音樂類(Music)可以使用各類樂器(Instument)進行演奏和調(diào)音等操作。對部分樂器進行建模,其類圖如下圖所示,包括樂器(Instrument)、打擊樂器(Perussion)、弦樂器(Stringed)、管樂器(Wind)、木管樂器(Woodwind)、銅管樂器(Brass)。

類圖

【C++代碼】

#include<iostream>

#include<vector>

usingnamespacestd;

enumNote{/*枚舉各種音調(diào)*/

MIDDLE_C,C_SHAR,B_FLAT

//其他略

};

classInstrument

{/*抽象基類,樂器*/)

public:

______;

//純虛函數(shù)play

virtualvoidadjust()=0;

//adjust函數(shù)接口

};

classWind:______{

public:

voidplay(Noten){cout<<"Wind.play()"<<n>>endl;}

voidadjust(){cout<<"Wind.adjust()"<<endl;}

};

/*類Percussion和Stringed實現(xiàn)代碼略*/

classBrass:______{

public:

voidplay(Noten){cout<<"Brass.play()"<<n<<endl;}

voidadjust(){cout<<"Brass.adjust()"<<endl;}

};

classWoodwind:publicWind{

public:

voidplay(Noten)(cout<<"Woodwind.play()"<<n<<endl;}

};

classMusic{

public:

voidtune(Instrument*i)

{i->play(MIDDLE_C);}

voidadjust(Instrument*i)

{i->adjust();}

voidtuneAll(______v){/*為每個樂器定調(diào)*/

vector<Instrument*>::iteratorit;

for(it=v.begin();it!=v.end();it++)

{

this->adjust(*it);

this->tune(*it);

}

}

};

intmain(){

______music=newMusic();

vector<Instrument*>orchestra;

orchestra.push_back(new

Wind());

orchestra.push_back(newWoodwind());

music->tuneAll(orchestra);

}

【C++代碼】

#include<iostream>

#include<vector>

usingnamespacestd;

enumNote{/*枚舉各種高調(diào)*/

MIDDLE_C,C_SHARP,B_FLAT//其他略

};

classInstrument(/*抽象基類,樂器*/

public:

______;//純虛函數(shù)play

virtualvoidadjust()=0;

//adjust函數(shù)接口

};

classWind:______{

public:

voidplay(Noten){count<<"Wind.play()"<<n<<endl;}

voidadjust(){count<<"Wind.adjust()"<<endl;}

};

/*類Percussion和Stringed實現(xiàn)代碼略*/

classBrass:______{

public:

voidplay(Noten){cout<

溫馨提示

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

評論

0/150

提交評論