第四章 课后编程

欢迎大家转载,为保留作者成果,转载请注明出处,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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值