当前位置:网站首页>实验四 数组

实验四 数组

2022-07-06 09:22:00 文文喜欢郭子吖

                             实验四数组

实验目的

1.掌握数组的声明、定义、初始化和使用。

2.掌握对一维或二维数组元素的访问方法。

实验内容

1. 编写程序,完成下列功能:

(1)输入20个整数到数组中;

(2)对20个数按从大到小的顺序排序,输出排序后的数组;

(3)输入一个整数x;

(4)在数组中查找x。如果找到了输出x在数组中的下标,找不到输出-1。

package code41;

import java.util.Scanner;

import java.util.Arrays;  //导入Arrays类

public class code41 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner in = new Scanner(System.in);

int []numbers=new int[20];

System.out.println("请输入20个整数:");

for(int i=0;i<20;i++) {

numbers[i]=in.nextInt();  //通过nextInt方法依次读取用户输入数字并存入数组中

}

Arrays.sort(numbers);  //将20个整数从小到大排序

for(int i = 19;i>=0;i--) {

System.out.println(numbers[i]);  //逆序输出,也就是将其转换为从大到小排序

}

System.out.println("请输入一个整数x:");

int x=in.nextInt(),j=0;

for(int i=0;i<20;i++) {

if(x==numbers[i])  //在数组中查找x

{

System.out.println(i);  //输出x在数组中的下标

j=1;

}

}

if(j!=1)

{

System.out.println("-1");  //找不到就输出-1

}

}

}

  1. 输出一个保存在二维数组中3*3矩阵,并求对角线元素之和。

package code42;

import java.util.Scanner;

public class code42 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

int numbers[][]=new int[3][3];  //定义这个数组再给其分配内存空间

int i,j,sum=0;

System.out.println("请输入3*3矩阵的元素:");

Scanner in = new Scanner(System.in);

for(i=0;i<3;i++) {

for(j=0;j<3;j++) {

numbers[i][j]=in.nextInt();  //输入数组元素

if(i==j)  //判断是否是对角线元素

{

sum+=numbers[i][j];  //求和

}

}

}

System.out.println("对角线元素之和为:"+sum);

System.out.println("输出3*3的数组:");

for(i=0;i<3;i++) {

for(j=0;j<3;j++) {

System.out.print(" "+numbers[i][j]);  //输出二维数组

}

System.out.println();

}

}

}

3. 打印如下形式的杨辉三角形 

               1

               1   1

               1   2   1

               1   3   3   1

               1   4   6   4   1

               1   5   10  10  5   1

   ........................

    输出前10行。

package code43;

public class code43 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

int[][]num=new int[10][10];  //定义一个十行十列的一个杨辉三角

for(int i=0;i<num.length;i++) {

for(int j=0;j<num.length;j++) {

num[i][0]=1;

num[i][j]=1;  //每一行的第一列和最后一列都为1

}

}

for(int i=2;i<num.length;i++) {

for(int j=1;j<i;j++) {

num[i][j]=num[i-1][j]+num[i-1][j-1];  //每个数等于它上方两个数的和

}

}

for(int i=0;i<num.length;i++) {

for(int j=0;j<=i;j++) {

System.out.print(num[i][j]+" ");  //输出杨辉三角

}

System.out.println();

}

}

}

4. 有M个人围成一圈,每人一个的编号(1.2.3.....M),从第一个人数起,报到N时这个人就出圈。再继续数,数到N时这个人又出圈。直到只剩下一个人为止,输出出圈人的顺序。M、N从键盘输入。

package code44;

import java.util.Scanner;

public class code44 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner in=new Scanner(System.in);

System.out.println("请输入共有多少人:");

int M=in.nextInt();

System.out.println("报到多少时这个人就出圈:");

int N=in.nextInt();

int num[]=new int[M];

int a=M,b=-1,c=0;

for(int i=0;i<M;i++) {

c++;

num[i]=c;  //给数组编号

}

System.out.println("原排序:");

for(int i=0;i<M;i++) {

System.out.print(num[i]+"\t");

}

System.out.println();

System.out.println("输出出圈人的顺序:");

while(a!=1) {  //控制循环结束

for(int i=0;i<N;i++) {

b++;

if(b==M)

{

b=0;  //计数

}

if(num[b]==0)

{

i--;  //防止重复计数

}

}

if(num[b]!=0)

{

System.out.print(num[b]+"\t");  //输出数到的排序号

num[b]=0;  //将选出的号排除

}

a--;

}

}

}

实验小结

  1. 定义数组时,除了要给定数组的名称、成员类型,还要为其分配内存空间,并进行初始化;
  2. 定义数组时,不允许在[]内指定数组元素的个数;
  3. 数组也不能整体赋值;
  4. 导入Arrays类,使用Arrays.sort()方法可将指定数组内的元素从小到大排序;
  5. Java数组实验题中的一些例题如矩阵、杨辉三角、约瑟夫环问题等等都有其固定的算法。
原网站

版权声明
本文为[文文喜欢郭子吖]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_63689135/article/details/124719844