单选题
1.下列代码的运行结果是( D)
public static void main(String[] args) {
int sum=0;
for (int i = 1; i < 3; i++) {
for (int j = 1; j < 3; j++) {
sum+=i*j;
}
}
System.out.println("sum="+sum);
}
A.sum=3
B.sum=4
C.sum=9
D.sum=5
2.下列代码的运行结果是( C )
public static void main(String [] args){
for (int i = 0; i < 1; i++) {
System.out.println("执行语句1");
for (int j = 0; j < 2; j++) {
System.out.println("执行语句2");
}
System.out.println("执行语句3");
}
}
A.没有输出结果
B.执行语句1
执行语句2
执行语句2
执行语句3
C.执行语句1
执行语句2
执行语句3
D.执行语句1
执行语句2
执行语句2
执行语句3
执行语句1
执行语句2
执行语句2
执行语句3
3:下面是有关数组反转的实现原理的描述,说法错误的是(D)
A.数组反转过程中,会定义两个int类型的变量,分别保存数组的最大索引值和数组的最小索值
B.数组反转过程中,判断循环结束,其条件是保存数组的最大索引值的变量值小于等于保存数组的最小索引值的变量值
C.数组反转过程中,需要将对称索引位置的元素,进行数据交换
D.数组反转过程中,原始数组的数据和顺序不发生改变
4:下列代码的作用是对数组中的元素存储位置进行反转,如:原数组[1,2,3,4] 反转后的数组为:[4,3,2,1] ,横线处应该填写的代码是(B)
public static void main(String[] args) {
int arr[] = {1, 2, 3, 6, 8, 9};
for (int min = 0, max = arr.length - 1;__________; min++, max--) {
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
A.min > max
B.min >= max
C.min < max
D.min == max
多选题
5:代码如下,下列关于数组的反转描述正确的是( D )
public static void main(String[] args) {
int[] array = { 10, 20, 30, 40, 50 };
for (int min = 0, max = array.length - 1; min < max; min++, max--) {
int temp = array[min];
array[min] = array[max];
array[max] = temp;
}
}
A.数组反转就是将数组中元素的顺序颠倒,要先找到数组中的最小索引和最大索引。最小索引:0,最大索引就是:array.length - 1,分别保存在两个int类型的变量中
B.如果数组中元素的个数是未知的,通过for循环拿到每个元素,但是要限制循环的次数,只要保证min记录的索引小于max记录的索引即可
C.每循环一次,就会对数组中元素进行一次交换。
D.每次交换数据之后,就会对min和max记录的值修改,小索引min需要加1,大索引max需要减1
代码题
1.扩展案例1
需求
请自定义一个方法,在方法中打印出九九乘法表,并在main方法中调用自定义的方法;
思路提示
1:九九乘法表是固定的格式,所以该方法无需设计参数和返回值;
2:打印九九乘法表的格式和打印直角三角形的形式几乎是一致的,仅仅是把打印的元素替换成乘法表的表达式即可;
3:每个表达式之间使用"\t"转义字符分隔,当一行表达式打印完之后可以执行换行的操作;
案例效果:
2.训练案例2
[ 五星难度-如果看完需求没思路不推荐花费大量时间研究,难度过高,仅供有兴趣的学生研究 ]
2.1.训练描述
假如一个班级中有3个小组,第一个小组中有3个人,第二个小组中有5个人,第三个小组中有2个人,请分别定义两个方法,一个方法使用代码随机给三个小组中的每个人保存一个1-100之间的随机数作为分数,另一个方法计算出每个小组内成绩的平均分;
2.2.操作步骤描述
1.在main方法中创建一个二维数组,二维数组中的第一个一维数组长度为3,二维数组中的第2个一维数组长度为5,二维数组中的第3个一维数组长度为2;
2.自定义第一个方法,参数是二维数组,无需返回值,在方法中,利用随机数,给二维数组中的每一个一位数组中的学生保存随机成绩;
3.自定义第二个方法,参数是二维数组,返回值是一维数组,在方法体中计算每个小组的平均分并分别保存到新的一维数组中,然后返回一维数组;(新的一维数组自己创建,长度为3,保存的是每一个小组的平均分)
package com.shengda.zuoye;
import java.util.Random;
public class KuoZhan02 {
public static void main(String[] args) {
int[][] arr = new int[][]{new int[3], new int[5], new int[2]};
suiji(arr);
}
private static void suiji(int[][] arr) {
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = r.nextInt(100) +1;
}
}
int[] newArr = sum(arr);
for (int i = 0; i < newArr.length; i++) {
System.out.println("第" +(i+1)+"个小组的平均成绩为:"+newArr[i]);
}
}
public static int[] sum(int[][] arr){
int[] newArr = new int[3];
for (int i = 0; i < arr.length; i++) {
int sum = 0;
for (int j = 0; j < arr[i].length; j++) {
sum+=arr[i][j];
}
int avg = sum/ arr[i].length;
newArr[i] = avg;
}
return newArr;
}
}
3.训练案例3[超级变态难-主要是算法规则难]
3.1.训练描述
创建方法,打印出杨辉三角形(要求打印出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3.2.操作步骤描述
1.每个数的计算方式,当前位置的元素,等于上一行左右两边的元素之和,具体看下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aOBwu1jL-1607173289137)(assets/1594726108449.png)]
2.制表符("\t")的打印数量
可以利用循环嵌套的思路实现打印制表符的数量,具体规则如下:
第一行:4个"\t"
第二行:3个"\t"
第三行:2个"\t"
第四行:1个"\t"
第五行:没有
此外数字之间是两个"\t"。
package com.shengda.zuoye;
public class KuoZhan03 {
public static void main(String[] args) {
//1:创建一个长度为10的二维数组
int[][] arr = new int[10][10];
//2.确定每一行的第一个元素和最后元素的值(第n行的第n个);为1
for (int i = 0; i < 10; i++) {
arr[i][0] = 1; //每一行的第一个元素 ,存为1
arr[i][i] = 1; //第n行的第n个元素 ,存为1
}
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();
}
System.out.println("--------------------");
//3.在二维数组中,从第三行开始,中间的0,修改为正确的数据;
for (int i = 2; i < arr.length; i++) {
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
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();
}
System.out.println("-------------------");
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
System.out.print("\t");
}
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j] + "\t\t");
}
System.out.println();
}
}
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
System.out.print("\t");
}
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j] + "\t\t");
}
System.out.println();
}
}
}