JAVA各章习题及答案

for(i=0;i<20;i++){ // 每一行显示5个元素 if(i%5 == 0) System.out.println(); System.out.print(a[i]+\ }

System.out.println(); } }

【运行结果】

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

2.首先让计算机随机产生出10个两位正整数,然后按照从小到大的次序显示出来。

【编程分析】首先利用Math.random()方法,让计算机随机产生10个两位数的正整数,然后编写一个排序方法,实现对数组的排序。(也可以利用java.utitl.Arrays类提供的排序方法排序)

【参考答案】

public class X6_4_2 {

public static void main(String[] args) { int[] a = new int[10]; int i; for(i=0;i<10;i++){ a[i]=10+(int)(90*Math.random()); // 产生10个两位数的随机数 } System.out.println(\随机产生的数据为:\ for(i=0;i<10;i++){ System.out.print(a[i]+\ } System.out.println(\排序后的数据为:\ selectSort(a); // 排序方法的调用 for(i=0;i<10;i++){ System.out.print(a[i]+\ } System.out.println(); }

static void selectSort(int[] aa){ // 选择排序方法的定义 int i,j,k; for(i=1;i

37

aa[i-1]=aa[k]; aa[k]=x; } } }

【运行结果】

随机产生的数据为:

33 67 47 31 19 11 77 65 88 84 排序后的数据为:

11 19 31 33 47 65 67 77 84 88 3.从键盘上输入4行4列的一个实数矩阵到一个二维数组中,然后求出主对角线上元素之乘积以及副对角线上元素之乘积。

【编程分析】本例主要考察二维数组及其动态初始化的方法。

第一步:创建输入流对象。

InputStreamReader isr = new InputStreamReader(System.in); // 创建输入流对象 BufferedReader br=new BufferedReader(isr); 第二步:求主、付对角线乘积 for(i=0;i

import java.io.*;

public class X6_4_3 {

public static void main(String[] args) throws IOException{ final int M = 4;

double[][] a = new double[M][M]; int i,j;

double main_product=1.0,vice_product=1.0;

InputStreamReader isr = new InputStreamReader(System.in); // 创建输入流对象 BufferedReader br=new BufferedReader(isr); for(i=0;i

System.out.println(\主对角线乘积为:\ System.out.println(\付对角线乘积为:\ } }

【运行结果】

1

38

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 主对角线乘积为:1056.0 付对角线乘积为:3640.0

?1

?3045??2??4.已知一个数值矩阵A为?6217?,另一个矩阵B为?

?0

???4158????9

4

573

0146

3?6??,求出A与B的4??0??

乘积矩阵C[3][4]并输出出来,其中C中的每个元素C[i][j]等于?A[i][k]*B[k][j]。

【编程分析】本例主要考察二维数组及其静态初始化的方法,以及如何利用二维数组实现矩

阵的乘积。主要步骤如下:

第一步:定义三个二维数组A、B、C,其中A、B为题目中给的数组,在定义的同时进行静态初始化,C数组为A、B的乘积,其行数为A矩阵的行数、列数为B矩阵的列数。

第二步:利用公式C[i][j]=?A[i][k]*B[k][j]求数组C。

【参考程序】

import java.io.*;

public class X6_4_4 {

public static void main(String[] args) throws IOException{ final int M =3, N=4, P=4; int i,j,k; int[][] a = {{3,0,4,5},{6,2,1,7},{4,1,5,8}}; int[][] b = {{1,4,0,3},{2,5,1,6},{0,7,4,4},{9,3,6,0}}; int[][] c = new int[M][N]; for(i=0;i

39

for(j=0;j

【运行结果】

48 55 46 25 73 62 48 34 78 80 69 38

5.从键盘上输入一个字符串,试分别统计出该字符串中所有数字、大写英文字母、小写英文字母以及其他字符的个数并分别输出这些字符。

【编程分析】本题主要考察字符串的输入及字符串方法的应用。

第一步:建立输入流对象,实现从键盘输入字符串。

第二步:利用循环语句及字符串类中的方法charAt(),对输入字符串中的每个字符进行判断,并统计出各类字符的个数。 【参考程序】

import java.io.*;

public class X6_4_5 { public static void main(String args[]) throws IOException{ InputStreamReader isr= new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String str = br.readLine(); int i, ditNo=0, upCharNo=0, loCharNo=0, otherCharNo=0; for(i=0;i='0') ditNo++; else if(str.charAt(i)<='Z' && str.charAt(i)>='A') upCharNo++; else if(str.charAt(i)<='z' && str.charAt(i)>='a') loCharNo++; else otherCharNo++; } System.out.println(\ System.out.println(\ } }

【运行结果】

abcABCDE1234<>>

6.从键盘上输入一个字符串,利用字符串类提供的方法将大写字母转变为小写字母,小写字母转变为大写字母,再将前后字符对换,然后输出最后结果。

40

联系客服:779662525#qq.com(#替换为@)