首页 > 其他分享 >杨辉三角形和数组练习

杨辉三角形和数组练习

时间:2023-02-22 14:01:40浏览次数:34  
标签:arr int 练习 System 数组 杨辉三角 public out

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

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

4. 数组相关练习 184

4.1 选择题


杨辉三角形和数组练习_杨辉三角形_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]+" ");
}
}
}











标签:arr,int,练习,System,数组,杨辉三角,public,out
From: https://blog.51cto.com/u_15784725/6068672

相关文章

  • 数组常用方法
    常用的数组方法1.arr.push()向数组最后增加元素,改变的是原数组2.arr.unshift()向数组最前面增加元素,改变原数组3.arr.pop()删除数组最后一个元素,改变原数组4.arr.shift......
  • 寻找字符串数组中的最长前缀
    //编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。  Java:classSolution{publicStringlongestCommonPrefix(String[]s......
  • JavaScript 数组遍历的五种方法(转)
    转自:JavaScript数组遍历的五种方法这篇文章主要介绍了JavaScript数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下在使用JavaScri......
  • 蓝桥杯2022年第十三届省赛真题-数组切分
    已知一个长度为N的数组:A1,A2,A3,...AN 恰好是1∼N的一个排列。现在要求你将A数组切分成若干个(最少一个,最多N个)连续的子数组,并且每个子数组中包含的整数......
  • 03-Go数组、切片、可变长参数、maps
    1数组#1数组是类似于数字、字符串、的基础数据类型#2数组是同一类型元素的集合eg:整数集合:5,8,9,79,76形成一个数组Go--数组:不允许混合不同类型......
  • 理解树状数组这一篇文章就够啦
    树状数组TODO:二维树状数组维护不可差分信息补充题目前言在阅读本文之前,您可能需要先了解位运算、二叉树以及前缀和与差分等相关知识本文中,若无特殊说明,数列下......
  • LabVIEW|小技巧:字符串转成数组
      最近遇到个小问题,我需要把一字符串中的关键词提取出来做判断,思考了一下,感觉放到数组里去就比较简单。  前提:已知了该串字符串的关键词有固定的位置;  例如->字......
  • numpy数组的基本操作
    数组的基本操作1.数组的索引、切片一维、二维、三维的数组切片直接进行索引,切片对象[:,:]—先行后列#对于二维数组x1=np.random.uniform(0,1,[4,5])#生成一......
  • 每日练习2.21
    每日总结:所花时间:2h(包含上课)代码量:100行博客量:1篇————————————~~~~~~刷~~~~~————————————————今日份学习内容总结:首先......
  • POJ 1050 To the Max 矩阵最大和的子数组:动态规划
    将原来的矩阵直接改造成dp矩阵dp[i][j]表示以以a[0][0]为左上角a[i][j]为右下角的矩阵之和所以一个O(n......