歡迎大家轉載,爲保留作者成果,轉載請註明出處,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;
}