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