实验二数组面向对象程序设计入门Word文件下载.docx

上传人:b****2 文档编号:5796915 上传时间:2023-05-05 格式:DOCX 页数:26 大小:169.93KB
下载 相关 举报
实验二数组面向对象程序设计入门Word文件下载.docx_第1页
第1页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第2页
第2页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第3页
第3页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第4页
第4页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第5页
第5页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第6页
第6页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第7页
第7页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第8页
第8页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第9页
第9页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第10页
第10页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第11页
第11页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第12页
第12页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第13页
第13页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第14页
第14页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第15页
第15页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第16页
第16页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第17页
第17页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第18页
第18页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第19页
第19页 / 共26页
实验二数组面向对象程序设计入门Word文件下载.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验二数组面向对象程序设计入门Word文件下载.docx

《实验二数组面向对象程序设计入门Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验二数组面向对象程序设计入门Word文件下载.docx(26页珍藏版)》请在冰点文库上搜索。

实验二数组面向对象程序设计入门Word文件下载.docx

i++)

if(Primenumber(i)==0)System.out.println("

"

+i+"

是一个素数"

);

elseSystem.out.println("

不是素数"

}

//掌握静态方法的基本结构及是如何调用的。

将判断素数的程序改写为方法,再在主程序中调用完成本题

2)对如下程序进行实验,试去掉this.运行,再改用cClass1.,看报错的情况,总结this.的使用方法,什么时候不加前缀?

什么时候加类名.或对象名.?

什么时候必须用this.?

classcClass1{

publicstaticintx;

//类变量

voidcClass1(intn){//构造方法

this.x=0;

//this.x表示类变量x,如果成员方法非static,就要用this.

staticlongcClass1(intn,intk){//重构构造方法

x=n;

returnx*3;

publicstaticvoidsetPoint(intx,inty){

x=x;

//setPoint被申明为static,就不能用this.

//左、右面x都是形式参数,若局部变量与类的成员变量同名,则类的成员变量被隐藏。

System.out.println("

x1="

+x+"

cClass1.x="

+cClass1.x);

setPoint(100,200);

x2="

+cClass1.x+"

x="

+x);

cClass1.cClass1(50,30);

//调用重构构造方法

x3="

cClass1.cClass1(50,30)="

+cClass1.cClass1(50,30));

//前面如果有cClass1.x=x,显示100,否则显示0

}}

3)关于作用域的实验。

将第一句的protected改为private或private,总结各自影响范围。

classPoint0{

protectedintx;

privateinty;

publicvoidsetPoint(intx,inty){

this.x=x;

//x为非静态变量,不能用Point.x

this.y=y;

Point0Point1=newPoint0();

//新建对象,尚未调用setPoint

System.out.println(“Point1.x=“+Point1.x);

publicclassEx4_6_1{

Point0point2=newPoint0();

//新生成对象,该对象下面调用setPoint

point2.x=200;

//在Point中如果x被定义为private,将报错

//Point.y=100;

//错误

point2.setPoint(100,100);

//如果point2改为point将报错

System.out.println(“Point2.x=“+point2.x);

}}//结果显示Point1.x=0Point2.x=100

4)执行下列程序,总结抽象类的定义方法,使用要点。

abstractclassA{//抽象类,不能实例化

abstractintmin(intx,inty);

//抽象类可以有抽象方法,不能定义方法体

intmax(intx,inty){

returnx>

y?

x:

y;

classBextendsA{//建立抽象类的子类

intmin(intx,inty){

//在A中min被声明为abstract,且因此未有实现语句,在子类中必须实现

publicclassEx4_11{

publicstaticvoidmain(String[]args){

Bb1=newB();

//由抽象类的子类派生对象

System.out.println(b1.max(3,19));

//调用该子类继承的抽象类的方法

2、参考上面的程序,编写程序使完成下列题目要求的功能并上机实现。

将程序代码集中存放到一个WORD文件中,同时将运行结果的显示内容复制粘贴附在程序代码后面。

1)求100以内的所有素数。

要求只显示所有素数,每行显示10个素数整齐排列。

以下是程序核心部分,请补充完整后调试并运行。

for(intn=2;

n<

=50;

n++){

inti=0;

longm=(long)Math.sqrt(n);

for(i=2;

=(int)m;

i++)if((n%i)==0)break;

if(i>

(int)m)System.out.print("

+n+"

"

2)下面是选择法排序的主要部分,求编写程序随机生成100个整型数据,再用选择法排序。

for(inti=0;

n.length-1;

{

intk=i;

for(intj=i+1;

j<

n.length;

j++)

{

if(n[j]>

n[k])//选择i之后最大的

inttemp=n[k];

n[k]=n[j];

n[j]=temp;

}

3)将本程序修改为直接选择法排序的程序。

写出实现程序。

4)下面是插入法排序的主要部分,求编写程序随机生成100个整型数据,再用插入法排序。

int[]arr=newint[100];

arr[0]=n[0];

for(intj=1;

j<

n.length;

j++){

arr[j]=n[j];

for(inti=j;

i>

0;

i--)

if(arr[i]>

arr[i-1])break;

inta=arr[i];

arr[i]=arr[i-1];

arr[i-1]=a;

5)Calendar类是有关日历数据的类。

参考3-11题(包括题后说明),利用Calendar类设计一个程序,显示程序当前执行时间的时、分、秒值。

3、执行以下程序,总结其算法与程序设计方法。

将每题运行结果复制粘贴到同一个Word文件中。

1)编程求满足下列不等式的最小自然数n的值。

importjava.util.*;

publicclassEx2_14{

publicstaticvoidmain(String[]args){

doubles=0;

intn=1;

Stringstr;

do{

s=s+1.0/n;

n++;

}while(s<

=5);

str="

和数s="

+Double.toString(s)+"

\n\n"

;

str=str+"

循环次数n="

+Integer.toString(n);

System.out.println(str);

2)随机生成一组整型数据,再用冒泡法将数组排序显示。

publicclassEx3_2{

publicstaticvoidmain(Stringargs[])

{

int[]n=newint[100];

for(inti=0;

i++)

n[i]=(int)(Math.random()*90)+10;

//产生随机数并强制转为二位整型数

for(inti=0;

i++){//排序

for(intj=0;

(n.length-i-1);

j++)

if(n[j]>

n[j+1]){

intk=n[j];

//次序不对交换位置

n[j]=n[j+1];

n[j+1]=k;

i++){//显示

if((i+1)%10!

=0)

System.out.print("

+n[i]+"

elseSystem.out.println(n[i]);

3)随机生成两个矩阵,然后将两个矩阵相乘。

矩阵乘法:

设A=[aij]m×

n,B=[bij]n×

s;

其中,m×

n中m表示a行数,n表示列数;

s中n表示b行数,s表示列数;

那么,A×

B的积为:

C=[cij]m×

s

其中,Cij=ai1b1j+ai2b2j+……+ainbnj

(i=1,2,……,m;

j=1,2,……,s)

例如,C11=a11b11+a12b21+……+a1nbn1

又例如,C12=a11b12+a12b22+……+a1nbn2

C21=a21b11+a22b21+……+a2nbn1

如果改为从0开始计数,那么:

C00=a00b00+a01b10+……+a0nbn0

C01=a00b01+a01b11+……+a0nbn1

C10=a10b00+a11b10+……+a1nbn0

首先看懂上面算法,再思考程序应当如何设计,之后上机操作,最后看懂程序设计方法。

publicclassa1

{

inta[][]=newint[3][4];

//动态初始化一个二维数组

intb[][]=newint[4][3];

intc[][]=newint[3][3];

3;

4;

j++){//随机生成矩阵数据

a[i][j]=(int)(Math.random()*90)+10;

j++){

b[i][j]=(int)(Math.random()*90)+10;

第一个矩阵数据:

i++){

+a[i][j]+"

第二个矩阵数据:

+b[i][j]+"

for(inti1=0;

i1<

i1++)//0到m-1;

j++){//0到s-1;

c[i1][j]=0;

//计算乘积

for(intk=0;

k<

k++)c[i1][j]=c[i1][j]+a[i1][k]*b[k][j];

二个矩阵之积:

//显示结果

i1++){

j++)System.out.print("

+c[i1][j]+"

4)创建杨辉三角形。

分析:

杨辉三角形中的各行是二项式(a+b)n展开式中各项的系数。

注意到

注意到第一列全1

如果用i表示行,j表示列,那么每行从第2列起有:

aij=a(i-1)(j-1)+a(i-1)j

importjava.util.Scanner;

publicclassEx3_5{

int[][]a=newint[9][9];

//假设打印9行,各元素自动初始化为0

a[0][0]=1;

//最上面第一个数

for(inti=1;

9;

i++){//从第2行开始递推

a[i][0]=1;

//第i行的数据个数等于i

for(intj=1;

i;

j++)a[i][j]=a[i-1][j-1]+a[i-1][j];

i++){

for(intj=0;

5)将上面程序改由递归求解,分析递归的可能性及程序实现方法

publicclassEx3_5_1{//非主方法必须声明静态

staticlongc(intn,intk){

if(k<

=0||k>

=n)return1;

return(c(n-1,k)+c(n-1,k-1));

publicstaticvoidmain(String[]args){//主方法,可以不加publicstatic

=9;

=i;

j++)System.out.print(c(i,j)+"

\t"

\n"

}}}

6)将上题中方法c设计为内部类的方法

publicclassEx3_5_4{//主类

staticclassc0{//类Ex3_5_4的内部类,加static

staticlongc0(intn,intk){//构造方法,也可改为非构造方法

return(c0(n-1,k)+c0(n-1,k-1));

j++)System.out.print(c0.c0(i,j)+"

//上面引用c0(i,j)要求c0(i,j)为静态

//将方法c改为内部类c0的方法c0(静态方法),类c0的前面也要加static。

编译时生成Ex3_5_1$c0.class。

7)将内部类改为外部类

classc0_1{//外部类,不加static

staticlongc0_1(intn,intk){

return(c0_1(n-1,k)+c0_1(n-1,k-1));

publicclassEx3_5_5{//主类

j++)System.out.print(c0_1.c0_1(i,j)+"

//将内部类c0改外部类c0_1,方法c0_1设计为静态方法。

8)同一目录下建二个类文件,调用静态方法(类方法)递归。

源程序文件Ex3_5_2.java:

publicclassEx3_5_2{

j++)System.out.print(c.c(i,j)+"

//上面引用c(i,j)要求c(i,j)为静态

}}}

源程序文件c.java

classc{

staticlongc(intn,intk){

}}

对Ex3_5_1.java编译,生成Ex3_5_1.class和c.class二个类文件

9)实例化

classcClass{

longc1(intn,intk){

return(c1(n-1,k)+c1(n-1,k-1));

publicclassEx3_5_3{

cClasscObject=newcClass();

//实例化:

建立类cClass的对象

j++)System.out.print(cObject.c1(i,j)+"

System.out.print(“\n”);

//上面引用c(i,j)不再要求c(i,j)为静态

10)改为接口实现

interfacecface{//定义接口

longc(intn,intk);

//方法不许实现,即不能有方法体,用分号结束

publicclassEx3_5_6implementscface{//调用接口

//必须实现接口中所有方法,且方法的名字、类型、参数个数及类型必须与接口中的完全一致

publiclongc(intn,intk){//不要忘了public

}

System.out.print(c.c(i,j)+"

//上面引用接口中c(n,k)要求c(n,k)为public

比较以上各题,全面了解面向对象的程序设计主要的语言元素,学习各概念的意义、应用方法,特别注意其区别与设计要点。

11)画出实验当天所在月的日历表。

importjava.util.Calendar;

publicclassEx4_27{

/**

*@paramargs

*/

System.out.println("

日一二三四五六"

Calendarcalendar=Calendar.getInstance();

intm=9;

calendar.set(2012,m-1,1);

//设置日历表起始年月日的值

//在表中该日期算作该月1日在列出日历

intday_of_week=calendar.get(Calendar.DAY_OF_WEEK)-1;

System.out.print(day_of_week);

//该日期是星期几?

Stringa[]=newString[day_of_week+31];

for(inti=0;

i<

day_of_week;

i++){

a[i]="

*"

for(inti=day_of_week,n=1;

day_of_week+31;

i++){

if(n<

=9)

a[i]=String.valueOf(n)+"

else

a[i]=String.valueOf(n);

a.length;

if(i%7==0)

System.out.println("

System.out.print("

+a[i]);

//返回当前时间小时数:

calendar.get(Calendar.HOUR_OF_DAY)

//例如显示当前小时数语句:

System.out.println(calendar.get(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2