97年關務程式設計概要 - 考試

Table of Contents

[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處

這題的第二小題不是很確定要寫什麼,希望板上程式強者大大能夠提醒指點小弟~

感激不盡~~

二.(一)填入下列 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)個方法小弟還想不到只修改一條敘述就解決的方法...

或者小弟根本就想錯....題目要問的根本不是這兩種情況呢?

想請板上強者大大們指點指點~


--

All Comments

Xanthe avatarXanthe2013-06-14
System.out.println( "Av = "+(s/((c==0)?1:c)));
Kama avatarKama2013-06-15
看了上一題的題型想到的方法 應該是要處理你的(2)沒錯
Freda avatarFreda2013-06-17
底下有人回了XD