2011年4月18日 星期一

[Java] 期中考

一整個很悲哀的期中考
我配到的那台電腦沒裝NetBeans
用JECrxxx那套一整個不習慣
而且還當機,寫好沒錯的程式碼就是不會動
把程式關掉重開貼上去又好了?!
浪費了我一堆時間
兩題都沒寫好,真是人生一大敗筆
不過不管怎麼說都是自己不夠熟練又不夠冷靜的問題
要改進啊....唉

第一題:用For迴圈讓程式跑出1+1+2+3+5+8.....=xxxx (加到最後一個數小於等於1000為止)

嗯....費式數列的變相考法
可能真的太久沒寫了,我在這題上面耍了很多寶
除了浪費了很多時間以外,最後寫出來的程式不算很漂亮
現在鞭打自己好好重寫 T__T
public class NewClass {
    public static void main(String[] args){
        int n1=0,n2=0,n3=1,sum=0;
        for(int i=0;n3<=1000;i++){
            if(i != 0){
                System.out.print("+");
            }
            System.out.print(n3);
            sum += n3;
            n1 = n2;
            n2 = n3;
            n3 = n1+n2;
        }
        System.out.print("=" + sum);
    }
}

第二題:輸入四位數西洋年判斷是否為閏年(閏年為可以被4整除,但不可被100整除,又可以被400整除)

題目很簡單,問題是老師很白痴。
他直接把題目從課本照抄也不先自己仔細看一下或寫一下
看看題目後面寫的閏年判斷準則,會不會詭異?
以我看到的,我會認為它是說要同時滿足可以被4與400整除,又不可被100整除。
這不用說,邏輯上就有問題直接打槍了。世界上沒有數字可以被400整除卻不能被100整除的。
我跟老師反應後他也想了老半天,還跟我說是完全沒改從課本抄來的
(這是怎樣?就算題目有錯也先推給課本嗎?)
結果被他浪費掉的時間也不還給我,害我最後寫的時間嚴重不足
其實正確的表示法應該要把「又可以被400整除」,改成「除非它也可以被400整除」
拜托....身為台灣人,這樣才是正確的中文表達方法好嗎
好啦,在正確的表達後不難看出條件
程式碼如下:
import java.io.*;
public class NewClass1 {
    public static void main(String[] args) throws IOException{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int in_y;
        System.out.print("請輸入四位數西洋年:");
        in_y = Integer.parseInt(in.readLine());
        if((in_y%4==0 &&in_y%100!=0)||(in_y%100==0&&in_y%400==0)){
            System.out.print(in_y + "為閏年");
        }else{
            System.out.print(in_y + "不是閏年");
        }
    }
}

沒有留言:

張貼留言