第3回課題回答例

課題

  1. 現在の時刻を入力すると(何時だけでよい)
    午前中[0時から11時]
    おはようございます
    正午[12時]
    お昼です
    午後[13時から18時]
    こんにちは
    夜[19時から23時]
    こんばんは
    それ以外
    時刻の範囲を超えています
    とそれぞれ表示するプログラムを書きなさい.
    [複数のif文と条件範囲の組合せ]

    回答例

    public class Aisatsu3 {
        public static void main(String arg[]) {
            int hour = KeyboardInput.askInt("現在の時刻を入力してください。");
    
            if ( hour < 0 || hour > 23) {
                System.out.println("時刻の範囲を超えています。");
    	} else if ( hour < 12 ) {
                System.out.println("おはようございます。");
            } else if (hour == 12) {
                System.out.println("お昼です。");
            } else if (hour <= 18) {
                System.out.println("こんにちわ。");
            } else {
                System.out.println("こんばんわ。");
            }
        } 
    }
          
  2. 1から100までの整数のうち3の倍数の和を求めるプログラムを書きなさい.
    [「3の倍数」すなわち「3*i(i=1,2,.....)」]


    1. public class Baisuu3a {
          public static void main(String args[]) {
              int sum = 0;
              int i = 1 ;
              while( i < 34) {
                  sum = sum + i*3;
                  i = i +1 ;
              }
              System.out.println(sum);
          }
      }	    

    2. public class Baisuu3a {
          public static void main(String args[]) {
              int sum = 0;
              int i = 1 ;
              while( i*3 < 100) {
                  sum = sum + i*3;
                  i = i +1 ;
              }
              System.out.println(sum);
          }
      }	    

    3. public class Baisuu3b {
          public static void main(String args[]) {
              int sum = 0;
              int i = 3 ;
              while( i < 100) {
                  sum = sum + i;
                  i = i +3 ;
              }
              System.out.println(sum);
          }
      }
      	    

    4. public class Baisuu3c {
          public static void main(String args[]) {
              int sum = 0;
              int i = 1 ;
              while (i < 100) {
                  if ( (i % 3)== 0 ) { // iを3で割って余りが0ならば
                      sum = sum + i;
      	     }
                  i = i +1 ;
              }
              System.out.println(sum);
          }
      }
      	    
  3. 数列 A[1]=1,A[k]=2*A[k-1]+3について
    (while文を用いること)

    回答例

    public class Series4_1 {
        public static void main(String[] args){
    	int n=1;
    	int A=1;
    	int W=A;
    
    	while( n<20 ){
    	    A=A*2+3;
    	    W=W+A;
    	    n=n+1;
    	    System.out.println("第 "+n+" 項目は,"+A+" で,和は"+W+" です.");
    	}
        }
    }
          

    実行例

    2:5,	SUM:6
    3:13,	SUM:19
    4:29,	SUM:48
    5:61,	SUM:109
    6:125,	SUM:234
    7:253,	SUM:487
    8:509,	SUM:996
    9:1021,	SUM:2017
    10:2045,	SUM:4062
    11:4093,	SUM:8155
    12:8189,	SUM:16344
    13:16381,	SUM:32725
    14:32765,	SUM:65490
    15:65533,	SUM:131023
    16:131069,	SUM:262092
    17:262141,	SUM:524233
    18:524285,	SUM:1048518
    19:1048573,	SUM:2097091
    20:2097149,	SUM:4194240
    
          

    回答例

    public class Series4_2 {
        public static void main(String[] args){
    	int n=1;
    	int A=1;
    
    	while( A<1000 ){
    	    A=A*2+3;
    	    n=n+1;	    
    	}
    	System.out.println("第 "+n+" 項目は,"+A+" で,1000を越えます.");
        }
    }
          

    実行例

    [onisi@m449 ~/Java]java Series4_2
    第 9 項目は,1021 で,1000を越えます.      
          

| 目次| 1234567891011121314
| 資料| 予定| 課題| 宿題|