实验五:循环结构与数组
一、实验目的
1.掌握一维数组的概念、定义和使用
2.掌握数组与循环结构的联合使用
二、实验内容
1、随机产生20个0到100的整数,求最大值及其下标、最小值及其下标、平均值,并显示数组的所有元素值(按每行输出5个元素)以及最大值及其下标、最小值及其下标和平均值。
【提示】
产生随机数的方法:double number=Math.random( );(number以属于[0,1))
提示代码:
public class ArrayEx1 {
public static void main(String arge[]){
int maxi=0,sum=0,aver;
int []number;
number= new int[20];
for(int i=0;i<20;i++){
number[i]=(int)(101*Math.random());
System.out.print(number[i]+" ");
//如何五个打一行!
}
System.out.println();
for(int i=0;i<20;i++)
{
sum=sum+number[i];
if(number[maxi]<number[i])maxi=i;
}
aver=sum/20;
System.out.println("maxi="+maxi+"
number["+maxi+"]="+number[maxi]);
//最小值呢?
System.out.println("aver="+aver);
}
}
2、用计算机模拟掷骰子游戏。
编程序统计掷N次(N尽量的大,例如100000次)后各点数出现的次数。
【提示】
定义数组Dian[6],分别存放1至6点出现的次数。
产生一个[1,6]间的随机整数x,如果是3,就将Dian[2]的值增加1,依此类推。
提示代码:
public static void main(String arge[]){
int number;
int []dian={0,0,0,0,0,0};
for(int i=0;i<10000;i++){
number=1+(int)(6*Math.random());
if(number==1)dian[0]++;
else if(number==2)dian[1]++;
else if(number==3)dian[2]++;
else if(number==4)dian[3]++;
else if(number==5)dian[4]++;
else if(number==6)dian[5]++;
}
for(int i=0;i<6;i++){
System.out.println("dian["+i+"]="+dian[i]);
}
}
要求:求出各点数的占总数的比例。
用switch改写if语句。
3、编写程序,输出斐波那契级数1、1、2、3、5、8……的前30项,要求每行输出5个。
(用数组来实现)
【提示】
斐波那契数列的特点是:第一、第二都是1,从第三项开始,前面相邻两项之和,构成了后一项。
即:a[n]=a[n-1]+a[n-2]。
public class ArrayEx1 {
public static void main(String arge[]){
int []fb;
fb= new int[30];
//初始前两项
for(int i=2;i<30;i++){
????????????? //求第i项
System.out.println(fb[i]+" ");
//怎么五个显示一行,怎么显示第1,2项
}
}
}
4、随机产生20个学生的考试成绩,并显示。
统计各分数段人数,即0~59、60~69、70~79、80~89、90~100,并显示结果。
【提示】(与上题类似)
声明一个数组S[5],分别存放各分数段的人数,并且确定分数与S数组的下标关系。
5、编程采用冒泡法实现对数组元素由小到大排序。
冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。
提示:关键代码如下:
for(i=0;i<intArray.length-1;i++)
for(j=i+1;j<intArray.length;j++)
if(intArray[i]>intArray[j]){
t=intArray[i];intArray[i]=intArray[j];intArray[j]=t;
}
三、思考题
1.Java语言中的数组的使用要经过哪三个过程?它们是如何实现的?。