一、选择题

1. 下列关于数组的说法正确的是:(A)

  A. 在Java中数组的长度是可变的

  B. 数组中存储的数据的类型是相同的

  C. 数组在进行扩容操作的时候源数组的地址不发生改变

  D. int[] arr = new int[3]; arr = new int[10];是将数组的大小扩容到了10且数组中的元素依然保留了下来

  E. 数组是存储到栈内存中的。

2. 下列各项中关于数组的定义正确的是:(ACD)

  A. int[][] arr = new int[2][];  

  B. int[2][] arr = new int[][3];

  C. int[] arr[] = new int[2][2];  

  D. int arr[][] = new int[3][];

  E. int[3][3] arr = new int[][];

3. 已知数组int[ ] x,y[ ]都已经初始化,则下列各项能够正确赋值的是:(ADE)

  A. y = x;  B. y[0] = x;  C. y = x[0];  D. y[0] = x[0];  E. y[0][0] = x[0];

4. 下列数组的声明有哪些是对的?错的应该怎么修改?(AB)

  A. int[] a;

  B. int a[] = new int[3];

  C. int[] a;

      a = {1,2,3,4,5};

  改:int[] a;

    a[0] = 1;

  D. int[] a = new int[3]{1,2,3};  

  改: int[] a = new int[]{1,2,3};

二、编程题

1、定义一个数组arr,读入一个整数n,如果n在数组中存在,则输出n的下标;如果不存在,则输出-1。

import java.util.*;
/*
* 定义一个数组arr
* 读入一个整数n
* 如果n在数组中存在,则输出n的下标
* 如果不存在,则输出-1
*/
public class Array01 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
int arr[] = {1,2,3,4,5,6,7,8,9,0};
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int i = 0; while(i<arr.length){
if(arr[i] == n){
System.out.println("下标:" + i);
break;
} i++;
}
if(arr[9] != n)
System.out.println("-1");
}
}

2、已知一个二维数组A表示一个矩阵,求AT。

其中AT表示二维数组A的转置,例如下面的例子:

3*2的二维数组:

public class Arr01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] a={{1,2,3},{4,5,6}};
int[][] b=new int[a[0].length][a.length]; for(int i=0;i<a.length;i++){
for(int j=0;j<a[0].length;j++){
b[j][i]=a[i][j];
}
}
//输转换矩阵数组
for(int i=0;i<b.length;i++){
for(int j=0;j<b[0].length;j++){
System.out.print(b[i][j]+" ");
}
System.out.println();
}
}
}

3*3的二维数组:

public class Arr {
public static void main(String[] args) throws Exception {
int data[][] = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
System.out.println("原来的数组:");
print(data); //调用打印方法
System.out.println("置换后数组:");
DaoZhi(data);//调用倒置排序方法
} // 二维数组列行倒置排序法
public static void DaoZhi(int arr[][]) {
// TODO Auto-generated method stub
for(int i=0; i<arr.length; i++) {
for(int j=i; j<arr[i].length; j++) {
if(i != j) {
int temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
print(arr);//调用打印方法
}
// 打印方法
public static void print(int arr[][]) {
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println("");
}
}
}

3、给定一个数组,将这个数组中的所有元素颠倒

一维数组:

public class Arr01 {
public static void main(String[] args) {
int A[] = {1, 2, 3, 4, 5};
int Len = A.length-1;
for(int i=0, j=Len; i<j; i++, j--){
int iTemp = A[i];
A[i] = A[j];
A[j] = iTemp;
}
//foreach循环遍历数组
for(int a:A)
System.out.print(a);
}
}

二维数组:

public class AFanzhuan {
public static void main(String[] args) {
int a[][] = {{1,2,3},{4,5,6}};
int[][] b = new int[2][3]; for(int i=0; i<a.length; i++){
for(int j=0; j<a[i].length; j++){
b[i][j] = a[a.length-1-i][a[i].length-j-1];
System.out.print(b[i][j] + " ");
}
System.out.println();
}
}
}

4、杨辉三角

1    
1    1    
1    2    1    
1    3    3    1    
1    4    6    4    1    
1    5    10    10    5    1    
1    6    15    20    15    6    1    
…………

杨辉三角的特点:
1) 第i行有i个元素
2) 每一行的每一个元素和最后一个元素都是1
3) 除了1之外,每个元素的值都等于上一行同位置的元素以及前一个元素的和。
要求:输入一个数,输出对应的行数

import java.util.*;

public class YangHui {
public static void main(String[] args) {
System.out.print("input:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[][] arr = new int[n][]; for(int i=0; i<n; i++){
arr[i] = new int[i+1];
for(int j=0; j<=i; j++){
if(j == 0 || j == i){
arr[i][j] = 1;
}
else {
//每一个元素是它上一行的元素和斜对角元素之和
arr[i][j] = arr[i -1][j] + arr[i - 1][j - 1];
}
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}

5. 15个猴子围成一圈选大王

依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问:哪只猴子会成为大王?

public class Monkey {
public static void main(String[] args) {
int[] a = new int[15];
int n = 0;
int c = 0; for(int i=0; i<a.length; i++){
a[i] = i;
} while(true){
for(int i=1; i<=7; i++){
//如果a[n]==99就跳过这个元素
//比如遍历到a[6]==99,那就i--,相当于没有对他进行遍历
if(a[n]==99){
i--;
n++;
if(n==15){
n = 0;
}
continue;
}
//如果i==7,给它标记位99
if(i==7){
a[n] = 99;
}
//
n++;
if(n==15){
n = 0;
}
//遍历数组,寻找里面有多少个99,如果有14个99,就跳出循环
int b = 0;
for(int j=0; j<15; j++){
if(a[j]==99)
b++;
if(b==14)
c = 1;
}
if(c==1)
break;
}
if(c==1)
break;
}
for(int arr:a)
System.out.print(arr+" ");
}
}

6. 螺旋填数。

读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
例如读入数字4,5,则输出结果为:
1     2    3    4   5
14  15  16  17  6
13  20  19  18  7
12  11  10   9   8

package Day8_06;
/*读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
* 例如读入数字4,5,则输出结果为:
* 1   2    3   4 5
* 14  15  16  17  6
* 13  20  19  18  7
* 12  11  10   9   8
*/
import java.util.Scanner; public class LuoXuan {
public static void main(String[] args) {
System.out.println("Input:");
Scanner s = new Scanner(System.in);
int m = s.nextInt();
int n = s.nextInt(); int[][] arr = new int[m][n];
int x; //横坐标
int y; //竖坐标
int z = ; //给数组元素赋的值
int c = ; while(true){
if(z > m * n)
break;
// 打印第(c)行
for(x=c,y=c; y<n-c; y++){
arr[x][y] = z;
z++;
}
// 打印第(n-c)列
for(x=c+,y=n--c; x<m-c; x++){
arr[x][y] = z;
z++;
}
// 打印第(m-1-c)行
for(x=m--c,y=n--c; y>=c; y--){
arr[x][y] = z;
z++;
}
// 打印第(c)列
for(x=m--c,y=c; x>c; x--){
arr[x][y] = z;
z++;
}
c++;
}
for(int i=; i<m; i++){
for(int j=; j<n; j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}

Java经典练习题_Day04的更多相关文章

  1. Java 经典练习题_Day010

    final 变量能被显式地初始化并且只能初始化一次.被声明为 final 的对象的引用不能指向不同的对象.但是 final 对象里的数据可以被改变.也就是说 final 对象的引用不能改变,但是里面的 ...

  2. Java经典练习题_Day05

    一. 选择题 1.下列各项中的各项定义正确的是:(ACD) A.  public static void m(){}   B.  public void static m(){} C.  public ...

  3. Java经典练习题_Day03

    一.选择 B    D(死循环)    E(switch)    BC 二.编程 1.读入一个整数,表示一个人的年龄. 如果小于6岁,则输出“儿童”, 6岁到13岁,输出“少儿”;  14岁到18岁, ...

  4. Java 经典练习题_Day06

    面向对象与面向过程的比较 类与对象的关系 成员变量和局部变量 构造方法 this 构造代码块 局部代码块 匿名对象 一. 选择题 1.下列各项中关于面向对象及面向过程的说法错误的是:(BDE) A.  ...

  5. 【视频+图文】Java基础经典练习题(一)输出2-100之间的素数,及素数个数

    目录 第一题:判断2-100之间有多少个素数,并输出所有素数. 1.视频讲解: 2.思路分析: 代码讲解:以i=4为例 4.为大家准备了彩蛋: 能解决题目的代码并不是一次就可以写好的 我们需要根据我们 ...

  6. 【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出

    目录 一.视频讲解 二.思路分析 总结: 三.代码+详解+结果 四.彩蛋 能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能 ...

  7. JAVA经典算法40题及解答

    JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...

  8. Java经典算法四十例编程详解+程序实例

    JAVA经典算法40例 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程 ...

  9. JAVA经典算法40题

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

随机推荐

  1. 随机生成验证码及python中的事务

    1.随机生成验证码 # import random # print(random.random()) #-1的小数 # print(random.randint(,)) #包括1和3 # print( ...

  2. mac下mysql 1045 (28000): Access denied for user 'root'@'localhost' (using password:

    新入了mac pro,安装好mysql后,用终端进入mysql遇到个问题: 1045 (28000): Access denied for user 'root'@'localhost' (using ...

  3. 启动和停止Oracle服务bat脚本

    总所周知,Oracle随开机启动会占很大内存,而你每次想用的时候还得去计算机服务里去找服务.一个一个的启动,比较麻烦. 这里给出两个bat脚本,来直接双击启动和停止Oracle服务[脚本内容来源于网络 ...

  4. Linux:运行级别,root密码重置,救援模式,安装图形化界面

    运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...

  5. SQL Server里查询表结构命令

    现提供两条命令查询表结构: 1.sp_help table_name;           如: [sql] sp_help Student;     2.sp_columns table_name; ...

  6. Java基础拾遗(二)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358523冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

  7. vue-router(一)

    vue路由再vue开发的项目中可以说是一个必用的组件,而这个部分的水却依旧很深,今天我们深入分析其内部的东西,先看这样一个效果: 大家 可以看到上图中,我们通过两种方式实现了一个vue路由跳转的过度动 ...

  8. sersync2 文件的实时同步备份

    |——需求: 监控192.168.9.5[主]  下的 /data/vmeipai 目录  --> 同步到 192.168.12.8 [备] 下的 /data/vmeipai 目录 |——网络拓 ...

  9. js里获取html真实舞台宽高

    var winSize = {width:document.documentElement.clientWidth,height:document.documentElement.clientHeig ...

  10. 每天一个linux命令(文件操作):【转载】find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command ...