实验四 Java数组与函数实验.docx

上传人:b****3 文档编号:10280921 上传时间:2023-05-24 格式:DOCX 页数:15 大小:51.47KB
下载 相关 举报
实验四 Java数组与函数实验.docx_第1页
第1页 / 共15页
实验四 Java数组与函数实验.docx_第2页
第2页 / 共15页
实验四 Java数组与函数实验.docx_第3页
第3页 / 共15页
实验四 Java数组与函数实验.docx_第4页
第4页 / 共15页
实验四 Java数组与函数实验.docx_第5页
第5页 / 共15页
实验四 Java数组与函数实验.docx_第6页
第6页 / 共15页
实验四 Java数组与函数实验.docx_第7页
第7页 / 共15页
实验四 Java数组与函数实验.docx_第8页
第8页 / 共15页
实验四 Java数组与函数实验.docx_第9页
第9页 / 共15页
实验四 Java数组与函数实验.docx_第10页
第10页 / 共15页
实验四 Java数组与函数实验.docx_第11页
第11页 / 共15页
实验四 Java数组与函数实验.docx_第12页
第12页 / 共15页
实验四 Java数组与函数实验.docx_第13页
第13页 / 共15页
实验四 Java数组与函数实验.docx_第14页
第14页 / 共15页
实验四 Java数组与函数实验.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验四 Java数组与函数实验.docx

《实验四 Java数组与函数实验.docx》由会员分享,可在线阅读,更多相关《实验四 Java数组与函数实验.docx(15页珍藏版)》请在冰点文库上搜索。

实验四 Java数组与函数实验.docx

实验四Java数组与函数实验

1、用数组求解Fibonacci数列的前20项。

按每行4个输出数组的元素。

publicclassEX4_1{

//算Fibonacci数列

publicstaticintfibonacci(inti){

if(i==1||i==2)

return1;

else{

returnfibonacci(i-2)+fibonacci(i-1);

}

}

publicstaticvoidmain(String[]args){

for(intx=1;x<=20;x++){

System.out.printf("%-8d",fibonacci(x));

if(x%4==0)

System.out.println();

}

}

}

______________________________________________________________________________

2、用选择法对20个数从小到大排序。

publicclassEX4_2{

//产生随机数

publicstaticint[]get(intn){

int[]arr=newint[n];

for(inti=0;i

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

}

returnarr;

}

//排列

publicstaticint[]arrange(int[]arr){

for(inti=0;i

intmin=i;

for(intj=i+1;j

if(arr[j]

}

if(min!

=i){

intt=arr[min];

arr[min]=arr[i];

arr[i]=t;

}

}

returnarr;

}

//输出排列的数组

publicstaticvoiddisplay(int[]arr){

for(inti=0;i

System.out.print(arr[i]+"");

}

publicstaticvoidmain(String[]args){

int[]arr=get(20);

System.out.println("初始数组是:

");

display(arr);

System.out.println();

System.out.println("排列后数组为");

arr=arrange(arr);

display(arr);

}

}

______________________________________________________________________________

3、利用求素数的方法,就6~20之间的所有偶数验证歌德巴赫猜想:

   任何一个大于6的偶数可以分解为两个素数之和。

publicclassEX4_3{

//判断是不是素数

publicstaticbooleanjudgePrime(intn){

booleanb=true;

for(intj=2;j<=Math.sqrt(n);j++)

{

if(n%j==0){b=false;break;}

elseb=true;

}

returnb;

}

//验证哥德巴赫猜想

publicstaticvoidverify(intn){

for(inti=2;i<=n/2;i++){

if(judgePrime(i)&&judgePrime(n-i))

System.out.println(n+"="+i+"+"+(n-i));

}

}

publicstaticvoidmain(String[]args){

System.out.println("验证的[6,20]哥德巴赫猜想:

");

for(intn=6;n<=20;n+=2){

verify(n);

}

}

}

______________________________________________________________________________

4、利用随机函数产生16个随机整数给一个4*4的二维数组赋值。

  1)按行列输出数组

  2)求最外一圈元素之和。

publicclassEX4_4{

//产生n个数

publicstaticint[]getNumber(intn){

int[]arr=newint[n];

for(inti=0;i

arr[i]=(int)(Math.random()*100);

returnarr;

}

//输出二维数组

publicstaticvoiddisplay(int[][]arr){

for(inti=0;i

for(intj=0;j

System.out.printf("%-4d",arr[i][j]);

System.out.println();

}

}

//将一维数组转换成i行j列的二维数组

publicstaticint[][]trans(int[]arr,inti,intj){

intstr[][]=newint[i][j];

intn=0;

for(i=0;i

for(j=0;j

str[i][j]=arr[n];

returnstr;

}

//计算最外一圈元素之和,并输出

publicstaticvoidcalculate(int[][]str){

intsum=0;

for(inti=0;i

if(i==0||i==str.length-1){

for(intj=0;j

sum+=str[i][j];

}

else

sum+=(str[i][0]+str[i][str[i].length-1]);

}

System.out.println("最外一圈元素之和为:

"+sum);

}

publicstaticvoidmain(String[]args){

int[]arr=getNumber(16);

intstr[][]=trans(arr,4,4);

System.out.println("4*4的矩阵为:

");

display(str);

System.out.println();

calculate(str);

}

}

______________________________________________________________________________

5、利用数组元素间的关系输出含8行的杨辉三角形;

杨辉三角形特点:

   

(1)第1列元素为1,对角线元素为1;

   

(2)其他元素均为前一行的同一列位置元素和前一行的前一列元素之和。

   1

   1  1

   1  2  1

   1  3  3  1

   1  4  6  4  1

   1  5  10 10 5  1

   1  6  15 20 15 6  1

1  7  21 35 35 21 7 1

importjava.util.*;

publicclassEX4_5{

//产生n行杨辉三角

publicstaticint[][]getYangHui(intn){

int[][]arr=newint[n][n];

for(inti=0;i

arr[i][0]=1;

arr[i][i]=1;

}

for(inti=2;i

for(intj=1;j

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

}

returnarr;

}

//输出杨辉三角

publicstaticvoiddisplay(int[][]arr){

for(inti=0;i

for(intj=0;j

if(arr[i][j]!

=0)

System.out.printf("%-5d",arr[i][j]);

}

System.out.println();

}

}

publicstaticvoidmain(String[]args){

Scannerscan=newScanner(System.in);

System.out.println("请输入需要多少行杨辉三角:

");

intn=scan.nextInt();

int[][]arr=getYangHui(n);

System.out.println(n+"行杨辉三角:

");

display(arr);

}

}

______________________________________________________________________________

6、产生20个范围为0~50之间的不重复随机整数存入到一个数组中,将数组中元素按由小到大输出,并求数组所有元素的平均值。

【提示】每产生一个整数要跟前面已产生的数进行比较,如果已存在,则不算,要重新产生,可以用一个循环来控制产生一个新数,只有产生的数未出现过,才能出循环。

publicclassEX4_6{

//产生不重复随机数存入数组

publicstaticint[]get(intn){

int[]arr=newint[n];

for(inti=0;i

booleanflag=false;

do{

flag=false;

intnum=(int)(Math.random()*50);

for(intj=0;j

if(num==arr[j]){

flag=true;

break;

}

}

if(!

flag){

arr[i]=num;

}

}while(flag);

}

returnarr;

}

//从小到大排列

publicstaticint[]arrange(int[]arr){

for(inti=0;i

intmin=i;

for(intj=i+1;j

if(arr[j]

}

if(min!

=i){

intt=arr[min];

arr[min]=arr[i];

arr[i]=t;

}

}

returnarr;

}

//输出排列后的数组

publicstaticvoiddisplay(int[]arr){

for(inti=0;i

System.out.print(arr[i]+"");

}

//算平均值

publicstaticvoidcalculate(int[]arr){

doublesum=0;

for(inti=0;i

sum+=arr[i];

sum=sum/arr.length;

System.out.print("\n\n该数组平均值是:

"+sum);

}

publicstaticvoidmain(String[]args){

int[]arr=get(20);

System.out.println("初始数组是:

");

display(arr);

System.out.println("\n\n排列后数组为");

display(arrange(arr));

calculate(arr);

}

}

______________________________________________________________________________

7、利用随机函数产生36个随机整数给一个6*6的二维数组赋值。

求出所有鞍点,鞍点的条件是该元素在所在行是最大值,在所在列是最小值。

【提示】先找出行上最大的元素,然后在判断该元素在所在的列上是否是最小的。

publicclassEX4_7{

//产生不重复随机数组

publicstaticint[][]getStr(inti,intj){

intstr[][]=newint[i][j];

for(i=0;i

for(j=0;j

booleanflag=false;

do{

flag=false;

intnum=(int)(Math.random()*100);

for(intm=0;m

for(intn=0;n

if(num==str[m][n]){

flag=true;

break;

}

}

}

if(!

flag){

str[i][j]=num;

}

}while(flag);

}

}

returnstr;

}

//输出二维数组

publicstaticvoiddisplay(int[][]arr){

for(inti=0;i

for(intj=0;j

System.out.printf("%-4d",arr[i][j]);

System.out.println();

}

}

//找出鞍点

publicstaticvoidsaddlePoint(int[][]arr){

intgetMax[]=newint[arr.length];//存放每行最大的数

intinMax[]=newint[arr.length];//存放每行最大的数所在的列

intinMin[]=newint[arr.length];//存放列最小的数所在的行

for(inti=0;i

intj=0;

inMax[i]=j;

for(;j

if(arr[i][inMax[i]]

inMax[i]=j;

}

getMax[i]=arr[i][inMax[i]];

}

for(inti=0;i

inMin[i]=0;

for(intj=0;j

if(arr[inMin[i]][inMax[i]]>arr[j][inMax[i]])

inMin[i]=j;

}

}

for(inti=0;i

if(inMin[i]==i){

System.out.print("鞍点是"+getMax+"位于");

System.out.printf("第%d行第%d列\n",i,inMax);

}

else

System.out.printf("第%d行没有鞍点\n",i+1);

}

}

publicstaticvoidmain(String[]args){

int[][]arr=getStr(6,6);

display(arr);

saddlePoint(arr);

}

}

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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