第四章 課後編程

歡迎大家轉載,爲保留作者成果,轉載請註明出處,http://blog.csdn.net/netluoriver,有些文件在資源中也可以下載!如果你沒有積分,可以聯繫我索要!

1、

package forth_charter;

/*
* File: Beer.java
* ---------------------------
* 第4章  編程練習第1題
* 美國打發時間的歌曲,啤酒瓶
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class Beer extends ConsoleProgram {
	public void run(){
		for(int i=BEER_COUNTS; i>0;){
		println("牆上有" + i + "瓶啤酒。 ");
		println(i-- + "瓶啤酒。 ");
		print("拿下來一瓶,傳出去。 ");
		
			if(i==0){
				println("牆上已經沒有啤酒了");
			}else{
				println("牆上有" + i + "瓶啤酒。 " );
			}	
		}
	}
	
	//定義啤酒瓶的數量爲一個固定值
	private static final int BEER_COUNTS = 9;
}

2、

package forth_charter;

/*
* File: ThisOldMan.java
* ---------------------------
* 第4章  編程練習第2題
* 美國打發時間的歌曲,ThisOldMan
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class ThisOldMan extends ConsoleProgram {
	public void run(){
		for(int i=1; i<11; i++){
		println("This old man, he played " + i + ".");
		print("he played the knick-knack on my ");
		
		switch(i){
		case 1: println("thumb.");break;
		
		case 2: println("shoe.");break;
		case 3: println("knee.");break;
		case 4: println("door.");break;
		case 5: println("hive.");break;
		case 6: println("sticks.");break;
		case 7: println("heaven.");break;
		case 8: println("pale.");break;
		case 9: println("spine");break;
		case 10: println("sbin");break;
		}
		println("With a knick-knack,paddy-whack, ");
		println("Give your dog a bone, ");
		println("This old man came rolling home.");
		println("");
		
		}
	}
}

3、

package forth_charter;

/*
* File: OddSum.java
* ---------------------------
* 第4章  編程練習第3題
* 計算輸入一個數後奇數相加的和
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class OddSum extends ConsoleProgram {
	public void run(){
		int n = readInt("請輸入一個整數:");
		int total = 0;
		for(int i=1; i<=n;){
			total = total +  i;
			print(i);
			//判斷當前的數加上1是否小於輸入的數,如果小於就添加+號
			if(i+1<n){
				print("+");
			}
			i=i+2;
		}
		 
		print("=" + total);
	}
}

4、

package forth_charter;

/*
* File: SixSeven.java
* ---------------------------
* 第4章  編程練習第4題
* 打印出可以被6整除或被7整除,但不能同時被6或7整除的數
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class SixSeven extends ConsoleProgram {
	public void run(){
		println("在" + COUNT +"內,能被6整除或被7整除,但不能同時被6或7整除的數有:");
		for(int i=0; i<COUNT; i++){
		    if((i % 6 == 0 || i % 7 == 0)&&!(i % 6 == 0 && i % 7 == 0)){
		    	 print(i + "、");
		    }	
		}
	}
	
	//設置爲一個固定值
	private static final int COUNT = 100;
}

5、

package forth_charter;

/*
* File: AverageList.java
* ---------------------------
* 第4章  編程練習第5題
* 打印出輸入成績的平均數,以-1作爲標誌結束
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class AverageList extends ConsoleProgram {
	public void run(){
		println("此程序打印出輸入學生成績 的平均值,輸入-1結束,並打印出平均值:");
		
		double total = 0;
		double average =0;
		int i = 0;
		int value = readInt("請輸入學生的成績:");
		while(value != -1){
			i++;
			total += value;
			value = readInt("請輸入學生的成績:");
			
		}
		
		average = total/i;
		print("成績的平均值 爲:" + average);
	}
}

6、

package forth_charter;

/*
* File: Beer.java
* ---------------------------
* 第4章  編程練習第6題
* 輸入一個數以相反的順序輸出
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class OppsiteOut extends ConsoleProgram {
	public void run(){
		println("這個程序是輸入一個正整數然後以相反的順序輸出");
		int count = readInt("請輸入一個數:");
		print("反序輸出的值爲:" );
		while(count/10!=0){
			int remainder = count%10;
			count /=10;
			if(count/10==0){
				print(remainder);
				print(count);
			}else{
			print(remainder);
			}
		}
	}
}	

8、

package forth_charter;

/*
* File: CountDown.java
* ---------------------------
* 第4章  編程練習第8題
* 用while倒數火箭發射時間
* 
* Author luoriver
*/

import acm.program.*;

public class CountDown extends ConsoleProgram {
	public void run(){
		int N=START;
		while(N>0){
			println(N);
		    N = N -1;
		}
		println("liftoff");
	}
	
	//指定從哪一個數開始計時
	private static final int START = 10;
}	

9、

package forth_charter;

/*
* File: Fbionacci.java
* ---------------------------
* 第4章  編程練習第9題
* 計算Fbionacci公式
* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class Fbionacci extends ConsoleProgram {
	public void run(){
		print("這個程序是計算Fbionacci。 ");
		int N = readInt("請輸入一個數 ");
		for (int i = 0; i <= N; i++)
            println(i + ": " + Fbionacci.fib(i));
		    }

	//通過創建一個方法來實現
    public static long fib(int n) {
        if (n <= 1){
        	return n;
        }else{
        	return fib(n-1) + fib(n-2);
        }
    }
}

11、

package forth_charter;

/*
* File: Pyramid.java
* ---------------------------
* 第4章  編程練習第11題
* 打印金字塔
* 
* Author luoriver
*/



import acm.program.*;
import acm.graphics.*;

 
public class Pyramid extends GraphicsProgram {
     
     public void run(){
         double x = (getWidth() - BRICK_IN_BASE * BRICK_WIDTH) / 2;
         double y = (getHeight() + BRICK_IN_BASE * BRICK_HEIGHT) / 2;
         
         for (int i = 2 ; i <= BRICK_IN_BASE; i++){
             for(int j = i; j <= BRICK_IN_BASE; j++){
            	 GRect brick = new GRect(x - i * BRICK_WIDTH /2 + j * BRICK_WIDTH, y - i * BRICK_HEIGHT,BRICK_WIDTH, BRICK_HEIGHT);
            	 add (brick);
             }
         }
     }
     
     /* private constants */
     private static final double BRICK_WIDTH = 10;
     private static final int BRICK_HEIGHT = 6;     
     private static final int BRICK_IN_BASE = 20;
 }

12、

package forth_charter;

/*
* File: Beer.java
* ---------------------------
* 第4章  編程練習第12題
* 

* 
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.program.GraphicsProgram;
public class Maxest extends ConsoleProgram {
	public void run(){
		int max = 0;
		while(true){
		 int n = readInt("?:");
		 
		 	if(max< n){
		 		max = n;
		 	}
		 	if(n == -1) break;
		}
		print("最大值爲" + max);
	}		
}
	

14、

package forth_charter;
/*
 * File:CheckBoard.java
 * --------------------
 * 畫出國際象棋的棋盤,使用嵌套的for循環。
 */

import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class CheckBoard extends GraphicsProgram {
    
    public void run(){
        double sqSize = getHeight() / N_ROWS;
        for (int i = 0; i < N_ROWS; i++){
            for(int j = 0; j < N_COLUMNS; j++){
                double x = (getWidth() - N_ROWS * sqSize) / 2 + j * sqSize;
                double y = i * sqSize;
                GRect sq = new GRect(x,y,sqSize,sqSize);
                sq.setFilled((i + j) % 2 != 0);
                sq.setFillColor(Color.GRAY);
                add(sq);
                if (i < 3 && (i + j) % 2 != 0){
                    GOval checkRed = new GOval(x + 4,y + 4,sqSize - 8, sqSize - 8);
                    checkRed.setFilled(true);
                    checkRed.setColor(Color.RED);
                    add (checkRed);
                }
                if (i > 4 && (i + j) % 2 != 0){
                    GOval checkBlack = new GOval(x + 4,y + 4,sqSize - 8, sqSize - 8);
                    checkBlack.setFilled(true);
                    checkBlack.setColor(Color.BLACK);
                    add (checkBlack);
                }
            }
        }
    }
    
    /*
     * 定義常量
     */
    private static final int N_ROWS = 8;
    private static final int N_COLUMNS = 8;
}

15、

package forth_charter;

/*
* File: Beer.java
* ---------------------------
* 方框移動程序
* 
* Author luoriver
*/

import java.awt.Color;

import acm.graphics.*;
import acm.program.GraphicsProgram;
public class BoucingBall extends GraphicsProgram {
    public void run(){
    	//在畫布的中央畫一個球
    	int x = getWidth() / 2;
        int y = getHeight() / 2;
        GOval ball = new GOval(x, y,DIAMETER, DIAMETER);
        ball.setFilled(true);
        add(ball);
        
        //設置移動步長
        int dx = 1;
        int dy = 1;
        
        //設置球循環移動
        while(true){
            ball.move(dx, dy);
            pause(PAUSE_TIME);
            x += dx;
            y += dy;
            
            //當球到達最左端即x==0或到達最右端時便向相反的方向運動
            if(x > getWidth() - DIAMETER || x < 0) dx = -dx;
            
          //當球到達最頂端即y==0或到達最底端時便向相反的方向運動
            if(y > getHeight() - DIAMETER || y <0) dy = -dy;
        }
    }
    /* Private constants */
	    private static final int DIAMETER = 10;
	    private static final int PAUSE_TIME = 20;
	    
	}

16、

package forth_charter;

/*
* File: RollingFont.java
* 
* ---------------------------
* 第4章  編程練習第1題
* 美國打發時間的歌曲,啤酒瓶
* 
* Author luoriver
*/

import java.awt.Color;

import acm.program.*;
import acm.graphics.*;

import acm.program.GraphicsProgram;
public class RollingFont extends GraphicsProgram {
	public void run(){
		int x = getWidth();
		int y = getHeight();
		//設置移動步長
		int dx = 1;
				
		GLabel font = new GLabel("my name is luoriver,Welcom to SIP VoIP communication group is 323827101",x,y) ;
		    font.setColor(Color.BLUE);
		    font.setFont("宋體-200");
		    add(font) ;
		    
		    while(true){
	            font.move(-dx, 0);
	            pause(PAUSE_TIME);
	            x += dx;
	           	
		    }
	}
	
	//設置暫停時間
	 private static final int PAUSE_TIME = 20;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章