作者 by 超米 / 2024-03-19 / 2 评论 / 107 个足迹
实验1 斐波那契数列(文件:Fibonacci.java)
以下数列为斐波那契数列(Fibonacci sequence)。这个数列前两个元素,Fib(0)和Fib(1)的值分别为0和1,接下来的每一元素为前两个元素之和。因此,斐波那契数列的前几个元素如下:
Fib(0) = 0
Fib(1) = 1
Fib(2) = 1 (0+1)
Fib(3) = 2 (1+1)
Fib(4) = 3 (1+2)
Fib(5) = 5 (2+3)
编写一个程序,显示初项为Fib(0)末项小于10000的斐波那契数列。程序运行结果如下:
这个程序需要一直运行,直到出现最大项,所以你需要使用while循环,循环条件如下:
while(term <MAX_TERM_VALUE)
最大元素值用一个常量MAX_TERM_VALUE表示。
参考代码:
import acm.program.*;
public class Fibonacci extends ConsoleProgram {
private static final int MAX_TERM_VALUE = 1000000000;
public void run() {
int n = readInt("请输入要计算的斐波那契数列的项数:"); // 读取用户输入的斐波那契数列项数
for (int i = 0; i < n; i++) { // 循环计算斐波那契数列,并打印结果
int fibonacci = fibonacci(i); // 调用斐波那契数列计算函数
if (fibonacci > MAX_TERM_VALUE) { // 判断计算结果是否超过最大值
break; // 如果超过最大值,则结束循环
}
println(fibonacci); // 打印计算结果
}
}
// 计算斐波那契数列的函数
public int fibonacci(int n) {
if (n <= 1) { // 斐波那契数列的前两个数为 0 和 1
return n; // 直接返回数值
}
return fibonacci(n - 1) + fibonacci(n - 2); // 递归计算斐波那契数列的第 n 个数
}
}
实验2画一个机器人的脸(文件:RobotFace.java)
你需要画一张机器人脸,如下所示:
这张简单的脸包含4个部分——一个头,两只眼睛和一张嘴——排列如下:
头:头是一个大的矩形,宽高用常量HEAD_WIDTH和HEAD_HEIGHT表示。填充色为灰色,边框为黑色。
眼睛:眼睛是两个圆,半径单位为像素,用常量EYE_RADIUS表示。眼睛中心离左右边的距离为宽的1/4,离上边框距离为高的1/4,黄色。
嘴:嘴在x轴上居中,在y轴上距底部距离为头高的1/4,嘴的宽高用常量MOUTH_WIDTH和MOUTH_HEIGHT表示,白色。
最后,这张机器人脸需要在图像窗口中居中显示。
参考代码:
import acm.graphics.*;
import acm.program.*;
import java.awt.*;
public class RobotFace extends GraphicsProgram {
public void run() {
addFace(getWidth() / 2, getHeight() / 2);
}
// 添加整个机器人脸部的方法
private void addFace(double cx, double cy) {
addHead(cx, cy); // 添加头部
addEye(cx - HEAD_WIDTH / 4, cy - HEAD_HEIGHT / 4); // 添加左眼
addEye(cx + HEAD_WIDTH / 4, cy - HEAD_HEIGHT / 4); // 添加右眼
addMouth(cx, cy + HEAD_HEIGHT / 4); // 添加嘴巴
}
// 添加头部的方法
private void addHead(double cx, double cy) {
GRect head = new GRect(cx - HEAD_WIDTH / 2, cy - HEAD_HEIGHT / 2, HEAD_WIDTH, HEAD_HEIGHT);
head.setFilled(true);
head.setFillColor(Color.GRAY);
add(head); // 将头部添加到画布中
}
// 添加眼睛的方法
private void addEye(double cx, double cy) {
GOval eye = new GOval(cx - EYE_RADIUS, cy - EYE_RADIUS, 2 * EYE_RADIUS, 2 * EYE_RADIUS);
eye.setFilled(true);
eye.setFillColor(Color.YELLOW);
add(eye); // 将眼睛添加到画布中
}
// 添加嘴巴的方法
private void addMouth(double cx, double cy) {
GRect mouth = new GRect(cx - MOUTH_WIDTH / 2, cy - MOUTH_HEIGHT / 2, MOUTH_WIDTH, MOUTH_HEIGHT);
mouth.setFilled(true);
mouth.setFillColor(Color.WHITE);
add(mouth); // 将嘴巴添加到画布中
}
// 定义一些常量
private static final int HEAD_WIDTH = 100;
private static final int HEAD_HEIGHT = 150;
private static final int EYE_RADIUS = 10;
private static final int MOUTH_WIDTH = 60;
private static final int MOUTH_HEIGHT = 20;
}
实验3 任意输入三个整数,求出最大数并输出。(文件:MaxNumber.java)
参考代码:
/*
* 这个程序通过读取用户输入的三个整数
* 然后调用getMax()方法来获取这三个整数中的最大值
* 并将最大值打印出来。getMax()方法接受三个参数
* 分别是三个整数a、b、c
* 然后通过比较它们的大小来找到最大值。
* 程序的运行结果会显示最大数是哪一个。
*/
import acm.program.ConsoleProgram;
public class MaxNumber extends ConsoleProgram{
public void run() {
long a = readInt("请输入第一个整数:");
long b = readInt("请输入第二个整数:");
long c = readInt("请输入第三个整数:");
long max = getMax(a, b, c);
println("最大数是:" + max);
}
public long getMax(long a, long b, long c) {
long max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
return max;
}
}
2024-03-19 14:52
不错
2024-03-19 14:51
可以可以:喜欢:
 评论 2 条