《Java编程语言:原理与范例》课后实验源代码 下载本文

System.out.printf(\ for (int j = Math.abs(i) - rows / 2; j <= rows / 2 - Math.abs(i); j++) { System.out.printf(\ } System.out.println(); } } }

实验三

/*********************************

4. 输出以上由数字组成的三角形(要求将输出行数存放于变量中以便随时更改)。 1 3 6 10 15 21 2 5 9 14 20 4 8 13 19 7 12 18 11 17 16

**********************************/ package ch04;

import java.util.Scanner;

public class Exp3_4 { public static void main(String[] args) { int rows; Scanner s = new Scanner(System.in); System.out.print(\输入行数:\ rows = s.nextInt(); int firstNumOfRow = 1, nextNumOfRow; for (int i = 1; i <= rows; i++) { firstNumOfRow += i - 1; int firstStepOfRow = i + 1; nextNumOfRow = firstNumOfRow; for (int j = 1; j <= rows + 1 - i; j++) { System.out.printf(\ nextNumOfRow += firstStepOfRow++; } System.out.println(); } }

}

实验四

/*********************************

5. 计算多项式8+88+888+8888+88888+... 的前8项之和。 输出结果: 98765424

**********************************/ package ch04;

public class Exp3_5 { public static void main(String[] args) { long sum = 0; for (int i = 1; i <= 8; i++) { long num = 0; for (int j = 1; j <= i; j++) { num = num * 10 + 8; } sum += num; } System.out.println(sum); } }

第四章 实验一

/*********************************

1. 产生10个100以内的随机整数以填充一维数组,实现以下功能。 ① 找出最大以及最小值。

② 查找给定整数a在数组中最后一次出现的位置,若不存在则提示。 ③ 判断数组是否呈非递减排列。 ④ 将数组元素翻转存放。

**********************************/ package ch05;

import java.util.Random; import java.util.Scanner;

public class Exp4_1 { int[] init() { int[] a = new int[10]; Random r = new Random(); for (int i = 0; i < a.length; i++) { a[i] = r.nextInt(100); } return a; } void print(int[] a) { for (int i = 0; i < a.length; i++) { System.out.printf(\ } System.out.println(); } int findMax(int[] a) { int max = a[0]; for (int i = 1; i < a.length; i++) { if (max < a[i]) { max = a[i]; } } return max; } int findMin(int[] a) { int min = a[0]; for (int i = 1; i < a.length; i++) {

}

if (min > a[i]) { min = a[i]; } }

return min;

int findLastLocation(int[] a, int x) { for (int i = a.length - 1; i >= 0; i--) { if (a[i] == x) { return i; } } return -1; }

boolean isAsc(int[] a) { for (int i = 0; i < a.length - 1; i++) { if (a[i] > a[i + 1]) { return false; } } return true; }

void reverse(int[] a) { for (int i = 0; i < a.length / 2; i++) { int temp = a[i]; a[i] = a[a.length - i - 1]; a[a.length - i - 1] = temp; }

}

public static void main(String[] args) { Exp4_1 t = new Exp4_1(); int[] a = t.init(); t.print(a);

System.out.println(\System.out.println(\System.out.print(\输入要查找的数:\Scanner s = new Scanner(System.in); int x = s.nextInt();

int i = t.findLastLocation(a, x); if (i == -1) { System.out.println(x + \在数组中不存在。\ } else { System.out.printf(\。\\n\ } if (t.isAsc(a)) { System.out.println(\数组是非递减排列!\ } else { System.out.println(\数组不是非递减排列!\ } t.reverse(a); System.out.println(\翻转后的数组:\ t.print(a); } }

实验二

/*********************************

2. 将a插入到一个长度不小于10且元素呈递增排列的一维数组中,并保证插入之后的数组依然递增(若a在插入前的数组中存在,则输出提示并忽略)。 **********************************/ package ch05;

import java.util.Scanner;

public class Exp4_2 { int a[] = { 2, 4, 5, 7, 9, 11, 15, 17, 20, 22, Integer.MAX_VALUE }; void print(boolean isAfterInsert) { int end = isAfterInsert ? a.length : a.length - 1; for (int i = 0; i < end; i++) { System.out.printf(\ } System.out.println(); } int findInsertLocation(int x) { int i = 0; for (; i < a.length - 1; i++) { if (a[i] == x) { return -1; } else if (a[i] > x) {