logo资料库

电子科大java实验.doc

第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
资料共33页,剩余部分请下载后查看
电子科技大学示范性软件学院 标 准 实 验 报 告 课程名称《JAVA 编程语言》课程实验 电子科技大学教务处制表 电 子 科 技 大 学
实 验 报 告(一) 学生姓名: 学 号: 指导教师: 一、实验室名称: JAVA 语言面向对象基础实验室 (主楼 A2 409) 二、实验项目名称: JAVA 语言面向对象基础实验 三、实验原理: 费波那锲数列(Fibonacci Sequence), 又称为黄金分割数列。 在数学上,费波那西数列是以递归的方法来定义:  F0 = 0  F1 = 1  Fn = Fn - 1 + Fn - 2 用文字来说,就是费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前 的两数相加。首几个费波那西系数是(OEIS A000045): 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,……………… 特别指出:0不是第一项,而是第零项。 矩阵知识:通常的矩阵加法被定义在两个相同大小的矩阵。两个 m×n 矩阵 A 和 B 的和,标记为 A+B,一样是个 m×n 矩阵,其内的各元素为其相对应元素相加 后的值。例如: 也可以做矩阵的减法,只要其大小相同的话。A-B 内的各元素为其相对应元素相
减后的值,且此矩阵会和 A、B 有相同大小。例如: 给定两个相同维度的矩阵,我们有阿达马乘积,或称做分素乘积(entrywise product)。两个 m×n矩阵 A、B的阿达马乘积标记为 ,为一定义为 的 m×n矩阵。例如: 四、实验目的: 通过编程和上机实验了解 JAVA 语言基础知识,循环、分支语句的使用、 数组的使用。 任务: (1)使用 JAVA 语言编写矩阵操作类库。 (2)求 Fibonacci 数列值 五、实验内容: (1)编写一个矩阵操作类库,具体实现要求如下:  实现构造函数动态创建不同大小的二维矩阵 m*n;  实现函数完成两个矩阵的相加、求差与矩阵各个元素相乘运算;  实现函数可以得到矩阵中指定元素数值。 (2)Fibonacci 数列是一个自然数数列,第 1 项和第 2 项均为 1,从第 3 项开 始,F(n)= F(n-1)+ F(n-2).定义一个数组,前两个元素初始化为 Fibonacci 数列的第 1,2 项,求出数列的前 20 项。 六、实验器材(设备、元器件):
WINDOWS xp 七、实验步骤: JDK1.6 ECLIPSE3.2 1.分析题目,查看java书籍相关知识。 2.思考出大概的代码架构和编程思想。 3.在Eclipse上撰写代码,编译运行,查错,撰写实验报告。 代码如下: 代码A: import java.util.*; public class Matrix { private int m,n,array[][];//m,n为矩阵的行数,列数 public Matrix(int m,int n){ this.m=m; this.n=n; array=new int [m][n]; } 型 "); private void print(){ //输出结果,该函数只是一个中间函数,故设为私有类 for(int i=0;i
System.out.println("\n矩阵相减结果为:"); MatrixSub.print(); } public void Muilt(Matrix tmp){ //矩阵的点乘,而非差乘 Matrix MatrixMuilt=new Matrix(m,n); for(int i=0;i
代码B: public class Fibonacci { static long Fib(int n){ //注意本行的static if(n<=2) return 1; else return Fib(n-1)+Fib(n-2); } public static void main(String []argv){ System.out.println("斐波那契额数列(1~20)"); for(int i=1;i<=20;i++){ System.out.print(Fib(i)+" "); if(0==i%5) System.out.println(); //换行操作 } } } 八、实验数据及结果分析:
九、实验结论: 代码正确无误,运行结果如上。 Scanner s=new Scanner(System.in); int M=s.nextInt();可以以空格或者 enter 结尾,不是只能以 enter 结尾。递归次数 较少时,效率还是可以。 十、总结及心得体会: 我本想加入输入不匹配异常,但是时富军同学告诉我这类异常系统自动会处 理,必须加入系统异常是因为线程有被中断的危险。递归普遍效率不高,而且递 归都可转化为非递归,故有下面的非递归版的斐波那契额数列。 public class Fibonacci{ public static void main(String[] args){ int x=1,y=1; for(int i=1;i<=20;i++){ System.out.print(y+" "); if(i%5==0)System.out.println(); y=x+y;x=y-x;
} } } 十一、对本实验过程及方法、手段的改进建议: 无 报告评分: 指导教师签字:
分享到:
收藏