3,720,000 以上
*
40% - 655,300 =
"
二、 考慮程式片斷PROGA 及PROGB,請回答下列問題。
/* PROGA */
int num=1, total=0;
scanf("%d",&n); /* 輸入 n */
do { total = total + num;
num = num + 1; }
while(num <= n);
printf("The total is %d\n",total);
/* PROGB */
int num=1, total=0;
scanf("%d",&n);
while (num <= n)
{ total = total + num;
num = num + 1; }
printf("The total is %d\n",total);
請繪出PROGA 及PROGB 之流程圖。(15 分)
PROGA 及PROGB 之功能為何?那一種寫法較符合需求?為什麼?(10 分)
三、 考慮輸入三個整數,並將其由小至大輸出。
請以BASIC, PASCAL, FORTRAN, C, JAVA, COBOL 中任一種語言撰寫此程式。(15 分)
若你要驗證你的程式是正確的,則就輸入5,4,3 這三個整數,你要輸入那幾組不同
次序的數據?為什麼?(10 分)
(請接背面)
九十二年公務人員特種考試身心障礙人員考試試題
科 別: 資訊處理
全一張
(背面)
四、考慮程式片斷PROGC 及PROGD,它們都是用來找尋輸入的key是否在陣列中,請回
答下列問題。
/* PROGC */
int data[8]={3,5,12,16,21,35,42,55};
int low=0, high=7, mid, result=-1;
scanf("%d",&key); /* 輸入 key */
while ( low <= high )
{ mid = (low + high) / 2;
if (data[mid] == key)
result = mid;
else
if (data[mid] > key)
high = mid – 1;
else
low = mid + 1; }
/* PROGD */
int data[8]={3,5,12,16,21,35,42,55};
int i=0, result=-1;
scanf("%d",&key);
while ( result == -1 && i < 8 )
if (data[i] == key)
result = i;
else
if (data[i] > key)
i = 8;
else
i = i + 1;
請分別就PROGC 及PROGD 程式回答:輸入一key,最快經過幾次迴圈可以找到
此key?輸入一key,最差經過幾次迴圈可以找到此key?輸入一key,最差經過幾
次迴圈找不到此key?若我們依序找3,5,12,16,21,35,42,55,則平均經過幾次迴圈找
到?此題請依下表方式填入次數。(20 分)
最快找到次數 最差找到次數 最差找不到次數 平均次數
PROGC
PROGD
當你撰寫程式時,你會使用PROGC 還是PROGD?為什麼?(5 分)