看板Examination
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處
這題的第二小題不是很確定要寫什麼,希望板上程式強者大大能夠提醒指點小弟~
感激不盡~~
二.(一)填入下列 Java 程式的空格(不可是常數),使該程式能夠印出陣列 dset 中所有值
在 0 至 100 的數的平均值。(請在試卷上作答)
堦 (二)指出此程式在何種狀況下會產生嚴重錯誤。只能修改一個敘述,且不能新增敘述
或刪除原有敘述,使程式能克服該項錯誤。
我直接把我第一題的答案填入程式中如下:
-------------------------------------------------------------------
class javaTest{
public static void main(String args[]){
int dset[] = {90,30,-5,70,95,110,80};
int c = 0; int s = 0;
for (int i = 0; i <dset.length ; i++){
if (dset[i] <= 100 && dset[i] >= 0){
c++;
s+= dset[i];
}
}
System.out.println( "Av = "+(s/c));
}
}
-------------------------------------------------------------------
第二題我想到的可能問題有兩個:
(1)在dset中介於0-100之間的數造成s/c不能整除的情況下,
答案只會顯示整數的部分,所求的平均值不完全正確
(2)在dset中介於0-100之間的數是0個,造成s/c分母為0
就嚴重度來說我個人是覺得(2)比較嚴重,
但由於題目規定只能修改一條敘述,不能新增或刪除敘述
第(1)個問題小弟還有辦法解決
可是第(2)個方法小弟還想不到只修改一條敘述就解決的方法...
或者小弟根本就想錯....題目要問的根本不是這兩種情況呢?
想請板上強者大大們指點指點~
--
◆ From: 120.114.181.55
※ 批踢踢實業坊(ptt.cc)※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1370935323.A.6F1.html
推 carterdunk:System.out.println( "Av = "+(s/((c==0)?1:c))); 06/11 16:17
→ carterdunk:看了上一題的題型想到的方法 應該是要處理你的(2)沒錯 06/11 16:18
→ carterdunk:底下有人回了XD 06/11 16:26