杨辉三角形和数组练习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杨辉三角形和数组练习相关的知识,希望对你有一定的参考价值。
1. 杨辉三角形
1.1 使用二维数组打印一个 10 行杨辉三角
public class Test22
public static void main(String[] args)
int yanghui[][]=new int[10][];
for(int i=0;i<yanghui.length;i++)//遍历yanghui 的每个元素
yanghui[i]=new int[i+1];//给每个一维数组开辟空间
for(int j=0;j<yanghui[i].length;j++)//个每个一维数组赋值
if(j==0||j==yanghui[i].length-1)//给第一个和最后一个赋值
yanghui[i][j]=1;
else
yanghui[i][j]=yanghui[i-1][j]+yanghui[i-1][j-1];//给中间元素赋值
//打印
for(int i=0;i<yanghui.length;i++)
for(int j=0;j<yanghui[i].length;j++)
System.out.print(yanghui[i][j]+"\\t");
System.out.println();
2. 二维数组的使用细节和注意事项 182
1) 一维数组的声明方式有:
int[] x 或者 int x[]
2) 二维数组的声明方式有:
int[][] y 或者 int[] y[] 或者 int y[][]
3) 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: map[][] 是 一个二维数组
int map [][] = 1,2,3,4,5
由 map[0] 是一个含有两个元素的一维数组 ,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等
的二维数组
3. 二维数组课堂练习 183
4. 数组相关练习 184
4.1 选择题
4.2 判断输出
输出blue
public class Test22
public static void main(String[] args)
String foo = "blue";
boolean[] bar=new boolean[2];//bar[0]默认为0,bar[1]也默认为0
if(bar[0])
foo="green";
System.out.println(foo);
4.3 判断输出
输出1 3 5 7
public class Test22
public static void main(String[] args)
int num=1;
while(num<10)
System.out.println(num);
if(num>5)
break;
num+=2;
4.4 已知有个升序的数组,要求插入一个元素,该数组顺序依然升序,比如[10,12,45,90],添加23后,数组为[10,12,23,45,90]
//方法1
//思路先扩容添加数据,再排序
import java.util.Scanner;
public class Test22
public static void main(String[] args)
Scanner myScanner=new Scanner(System.in);
int arr[]= 10,12,45,90;
//扩容
int arrnew[]=new int[arr.length+1];//扩容
for(int i=0;i<arr.length;i++)
arrnew[i]=arr[i];
System.out.println("请添加元素");
int addnum=myScanner.nextInt();
arrnew[arrnew.length-1]=addnum;//添加元素
arr=arrnew;//将arr指向arrNew
//排序
for(int i=0;i<arr.length-1;i++)
for(int j=0;j<arr.length-1-i;j++)
if(arr[j]>arr[j+1])
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
for(int i=0;i<arr.length;i++)//输出
System.out.print(arr[i]+" ");
5.例1 186
5.1 已知有个升序的数组,要求插入一个元素,该数组顺序依然升序,比如[10,12,45,90],添加23后,数组为[10,12,23,45,90]
//方法2
//思路:
//1.先找到插入下标
//2.扩容将数据插入
import java.util.Scanner;
public class Test23
public static void main(String[] args)
int arr[] = 10,12,45,90;
Scanner myScanner=new Scanner(System.in);//键盘输入
System.out.println("请输入要插入的数据");
int addNum = myScanner.nextInt();
int index = -1;//保存即将插入数据的下标
//1.先找到插入下标
//分为两种情况:
//1. addNum<数组中的arr[i],将i的下标存入index
//2. addNum>数组中的任何元素,将addNum放入最后的一个位置arr[arr.length]
for(int i=0;i<arr.length;i++)//遍历arr数组
if(addNum<=arr[i])
index = i;//当index小于arr[i]时,将i的下标存入index
break;//找到位置后退出
//2. addNum>数组中的任何元素,将addNum放入最后的一个位置arr[arr.length]
if(index==-1)
index=arr.length;
//2.扩容将数据插入
int arrNew[] = new int[arr.length+1];//扩容:定义新的数组
for(int i=0,j=0;i<arrNew.length;i++)//i指向arrNew,j指向arr
if(i!=index)//跳过插入数据的下标
arrNew[i]=arr[j];
j++;
else//将数据插入
arrNew[index]=addNum;
arr=arrNew;//将arr指向arrNew
//输出
for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+" ");
6. 例2 187
6.1 随机生成10个整数(1-100范围)保存到数组,并倒叙打以及求平均值最大值和最大值下标,并查找里面是否有8
public class Test23
public static void main(String[] args)
int arr[]=new int[10];
for(int i=0;i<arr.length;i++)//给数组赋值
//(int)(Math.rand()*10)+1生成1-100的随机数
arr[i]=(int)(Math.random()*100)+1;
System.out.println("======正序输出======");
for(int i=0;i<arr.length;i++)//正序输出
System.out.print(arr[i]+" ");
System.out.println("\\n======倒序输出======");
for(int i=arr.length-1;i>=0;i--)
System.out.print(arr[i]+" ");
//平均值最大值和最大值下标
double sum = arr[0];//将sum初始值为数组第一个元素方便计算平均值(因为再找出最大数时是从第二个数开始的)
int max = arr[0];//假设第一个数时最大值
int maxIndex = 0;
for(int i=1;i<arr.length;i++)//遍历数组
sum+=arr[i];//求和
if(max<arr[i])
max=arr[i];
maxIndex=i;//将最大值下标赋给maxIndex
System.out.println("\\nmax="+max+" maxIndex="+maxIndex);
System.out.println("\\n平均值="+(sum/arr.length));
//查找数组中是否有8
int findNum = 8;
int index = -1;
for(int i=0;i<arr.length;i++)//遍历找
if(findNum==arr[i])
System.out.println("找到啦"+findNum+"下标是"+i);
index = i;
break;
if(index==-1)//没找到
System.out.println("没找到"+findNum);
7. 例3 188
7.1 判断输出
public class Test23
public static void main(String[] args)
char[] arr1 = a,z,b,c;
char[] arr2=arr1;
arr1[2]=韩;
for(int i=0;i<arr2.length;i++)
System.out.println(arr1[i]+","+arr2[i]);
8. 例4 188
8.1 冒泡排序 从大往小排
//冒泡排序 从大往小排
public class Test23
public static void main(String[] args)
int arr[] =9,8,2,7,6,7,25,41,-1;
for(int i=0;i<arr.length-1;i++)//趟数
for(int j=0;j<arr.length-1-i;j++)//交换几次
if(arr[j]<arr[j+1])
int tmp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+" ");
以上是关于杨辉三角形和数组练习的主要内容,如果未能解决你的问题,请参考以下文章