摘要:2018上半年程序員考試已結束,小編為大家整理了2018上半年程序員考試下午真題供考生們參考,以下為第一部分。
● 閱讀以下說明和流程圖,填寫流程圖中的空缺,將解答填入答題紙的對應欄內。
【說明】
如果一個自然數N恰好等于它所有不同的真因子(即N的約數以及1,但不包括N)之和S,則稱該數為“完美數”。例如6=1+2+3,28=1+2+4+7+14,所以6和28都是完美數。顯然,6是第1個(即最小的)完美數。
下面流程圖的功能是求500以內所有的完美數。
【流程圖】

循環開始框中要注明:循環變量=初始值,終值[,步長],步長為1時可以缺省。
如果某自然數小于其所有真因子之和(例如24<1+2+3+4+6+8+12),則稱該自然數為虧數:如果某自然數大于其所有真因子之和(例如8>1+2+4),則稱該自然數為贏數如果某自然數等于從1開始的若干個連續自然數之和(例如10=1+2+3+4)則稱該自然數為三角形數數。據此定義,自然數496是( )。
供選擇答案:
(1)A.虧數 B.贏數 C.完美數,非三角形數 D.完美數和三角形數
● 閱讀以下說明和C代碼,填寫程序中的空(1)~(5),將解答寫入答題紙的對應欄內
【說明】
直接插入排序是一種簡單的排序方法,具體做法是:在插入第i個關鍵碼時,k1,k2,…,ki-1已經排好序,這時將關鍵碼ki依次與關鍵碼ki-1,ki-2,…,進行比較,找到ki應該插入的位置時停下來,將插入位置及其后的關鍵碼依次向后移動,然后插入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},完成排序。
下面函數 insert Sort用直接插入排序對整數序列進行升序排列,在main函數中調用insert Sort并輸出排序結果。
【C代碼】
void insert Sort(int data[],int n)
/*體用直接插入排序法將data[0]~ data[n-1]中的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;
}
軟考備考資料免費領取
去領取
專注在線職業教育25年