java程序设计实用教程(第3版) 叶核亚 习题答案 所有答案1—12章 联系客服

发布时间 : 星期五 文章java程序设计实用教程(第3版) 叶核亚 习题答案 所有答案1—12章更新完毕开始阅读08b9d532b90d6c85ec3ac6a9

{

for (int j=0;j

for (int j=i;j>0;j--) //生成下一行数据 table[j]=table[j-1]+table[j]; //通式 } } }

18.输出下列方阵:

(1) 输出如下形式的数字方阵(当n=4时):

1 2 6 7

3 5 8 13 4 9 12 14 10 11 15 16 程序如下:

Public class Jmat {

Public static void main(String args[]){ } }

(2)输出如下形式的数字方阵(当n=4时): 1 2 5 10

4 3 6 11 9 8 7 12 16 15 14 13

〖解答〗采用二维数组的程序如下。

public class Jmat {

public static void main(String args[]) {

int n=4; int[][] mat = new int[n][n];

int k=1; for (int i=0;i

for (int j=0;j<=i;j++)

mat[j][i] = k++;

for (int j=i-1;j>=0;j--) mat[i][j] = k++; }

阶数

是自然数,递增变化 //k先赋值后自加 // //k

for (int i=0;i

for (int j=0;j

System.out.print(\ \ System.out.println(); } } }

19.找出一个二维数组的鞍点,即该位置的元素在该行上最大,在列上最小。也可能没有暗点。

〖命题〗一个二维数组如果有鞍点,那么它只有一个鞍点。 〖证明〗反证法。

设该二维数组已有一个鞍点,为M[i,j],则有

M[i,*] <= M[i,j] <= M[*,j] 即i行上的所有元素均小于j列上的所有元素。 假设有另一个鞍点M[x,y],由(1)式知

(1)

M[i,y] <= M[x,j] (2) 而M[x,y]应在该行上最大,有

M[x,y] >= M[x,j] M[x,y]应在该列上最小,有

M[x,y] <= M[i,y] 根据(2)式,显然(3)和(4)式是不可能同时成立的。

因而假设有另一个鞍点M[x,y]是不成立的。由此证明。 〖解答〗采用二维数组的程序如下。

public class Dort {

public static void main(String args[]) {

int[][] mat = {{1,2,3},{4,5,6},{7,8,9}};

for (int i=0;i

for (int j=0;j

boolean find = false; //找到鞍点标记 int row=0; //第1行下标

int max=0; //记录当前行最大值的列下标 while (!find && row

max=0; //初始设每行第1列值最大 for (int j=1;j

//在row行上找最大值 //i、j是行、列下标 //输出二维数组元素

(3) (4)

if (mat[row][j]>mat[row][max]) //mat[row][max]为该行最大值 max = j;

boolean yes = true; //再判断mat[row][max]是否在列上最小 int j=0;

while (yes && j

if (j!=row && mat[j][max]

System.out.println(\ \ else

System.out.println(\ null\ }

20.设一个一维数组的元素值为:7,4,8,9,1和5,请输出具有以下内容的方阵: 7 4 8 9 1 5 5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7

【答】程序如下:

public class Shift {

public static void main(String args[]) {

int table[] = {7,4,8,9,1,5}; System.out.println(\左移:\ for (int i=0;i

for (int j=0;j

System.out.print(table[(i+j)%table.length]+\ \ System.out.println(); }

System.out.println(\左移:\ for (int i=0;i

int j=i;

do {

System.out.print(table[j]+\ \ j=(j+1)%table.length; }while (j!=i); System.out.println(); } } }