实验四 Java数组与函数实验.docx
- 文档编号:24162378
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:15
- 大小:51.47KB
实验四 Java数组与函数实验.docx
《实验四 Java数组与函数实验.docx》由会员分享,可在线阅读,更多相关《实验四 Java数组与函数实验.docx(15页珍藏版)》请在冰豆网上搜索。
实验四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); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验四 Java数组与函数实验 实验 Java 数组 函数