杨辉三角形和数组练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杨辉三角形和数组练习相关的知识,希望对你有一定的参考价值。

1. 杨辉三角形

1.1 使用二维数组打印一个 10 行杨辉三角

杨辉三角形和数组练习_System

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

杨辉三角形和数组练习_i++_02

4. 数组相关练习 184

4.1 选择题


杨辉三角形和数组练习_i++_03

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]+" ");












以上是关于杨辉三角形和数组练习的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯 基础练习 杨辉三角形

基础练习 杨辉三角形

基础练习-6.杨辉三角形

Java-数组练习5

基础练习 杨辉三角形

蓝桥杯- 基础练习:杨辉三角形