摘要:2018上半年程序員考試已結(jié)束,小編為大家整理了2018上半年程序員考試下午真題供考生們參考,以下為第一部分。
● 閱讀以下說明和流程圖,填寫流程圖中的空缺,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
如果一個自然數(shù)N恰好等于它所有不同的真因子(即N的約數(shù)以及1,但不包括N)之和S,則稱該數(shù)為“完美數(shù)”。例如6=1+2+3,28=1+2+4+7+14,所以6和28都是完美數(shù)。顯然,6是第1個(即最小的)完美數(shù)。
下面流程圖的功能是求500以內(nèi)所有的完美數(shù)。
【流程圖】
循環(huán)開始框中要注明:循環(huán)變量=初始值,終值[,步長],步長為1時可以缺省。
如果某自然數(shù)小于其所有真因子之和(例如24<1+2+3+4+6+8+12),則稱該自然數(shù)為虧數(shù):如果某自然數(shù)大于其所有真因子之和(例如8>1+2+4),則稱該自然數(shù)為贏數(shù)如果某自然數(shù)等于從1開始的若干個連續(xù)自然數(shù)之和(例如10=1+2+3+4)則稱該自然數(shù)為三角形數(shù)數(shù)。據(jù)此定義,自然數(shù)496是( )。
供選擇答案:
(1)A.虧數(shù) B.贏數(shù) C.完美數(shù),非三角形數(shù) D.完美數(shù)和三角形數(shù)
● 閱讀以下說明和C代碼,填寫程序中的空(1)~(5),將解答寫入答題紙的對應(yīng)欄內(nèi)
【說明】
直接插入排序是一種簡單的排序方法,具體做法是:在插入第i個關(guān)鍵碼時,k1,k2,…,ki-1已經(jīng)排好序,這時將關(guān)鍵碼ki依次與關(guān)鍵碼ki-1,ki-2,…,進(jìn)行比較,找到ki應(yīng)該插入的位置時停下來,將插入位置及其后的關(guān)鍵碼依次向后移動,然后插入ki。
例如,對{17,392,68,36}按升序作直接插入排序時,過程如下:
第1次:將392(i=1)插入有序子序列{17},得到{17,392};
第2次:將68(i=2)插入有序子序列{17,392},得到{17,68,392};
第3次:將36(i=3)插入有序子序列{17,68,392},得到{17,36,68,392},完成排序。
下面函數(shù) insert Sort用直接插入排序?qū)φ麛?shù)序列進(jìn)行升序排列,在main函數(shù)中調(diào)用insert Sort并輸出排序結(jié)果。
【C代碼】
void insert Sort(int data[],int n)
/*體用直接插入排序法將data[0]~ data[n-1]中的n個整數(shù)進(jìn)行升序排列*/
{ int i,j; int tmp;
for(i=1; i if(data[i]<data[i-1]){ //將data[i]插入有序子序列data[0]~data[i-1]
tmp=data[i]: //備份待插入的元素
data[i]=(1)
for(j=i-2;j>=0&&data[ j ]>tmp;j­­--) //查找插入位置并將元素后移
(2) ;
(3) =tmp; //插入正確位置
}/*if*/
}/*for*/
}/*insert Sort*/
int main()
{ int*bp,*ep;
int n,arr[ ]={17,392,68,36,291,776,843,255}
n=size of(arr)/size of(int);
insert Sort(arr,n);
bp=( 4 ); ep=arr+n;
for(;bp printf("%d\t", (5) );
return 0;
}
軟考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬道題
已有25.02萬小伙伴參與做題