数据结构(Java版)(第2版)习题解答
叶核亚 编著
第1章 Java程序设计基础
【习1.1】 实验0.1 哥德巴赫猜想。
【习1.2】 实验0.2 杨辉三角形。
【习1.3】 实验0.3 金额的中文大写形式。
【习1.4】 实验0.4 下标和相等的数字方阵。
输出下列方阵(当n=4时)。
1 2 6 7 或 1 3 4 10
3 5 8 13 2 5 9 11
4 9 12 14 6 8 12 15
10 11 15 16 7 13 14 16
采用二维数组实现。二维数组中,每一条斜线上各元素下标和相等,如图0.1所示。
图1.2 下标和相等的数字方阵算法描述
程序如下。
public class Upmat
{
public static void main(String args[])
{
int n=4; //阶数
int[][] mat = new int[n][n];
int k=1; //k是自然数,递增变化
boolean up = true; //方向向上
for (int sum=0; sum<n; sum++) //左上三角,sum表示行列的下标和
{
if (up)
for (int i=sum; i>=0; i--)
mat[i][sum-i] = k++; //k先赋值后自加
else
for (int i=0; i<=sum; i++)
mat[i][sum-i] = k++;
up=!up; //方向求反
}
for (int sum=n; sum<2*n-1; sum++) //右下三角
{
if (up)
for (int j=sum-n+1; j<n; j++)
mat[sum-j][j] = k++;
else
for (int j=n-1; j>sum-n; j--)
mat[sum-j][j] = k++;
up=!up;
}
for (int i=0; i<mat.length; i++) //输出二维数组元素
{
for (int j=0; j<mat[i].length; j++) //i、j是行、列下标
System.out.print(" "+mat[i][j]);
System.out.println();
}
}
}
【习1.1】 实验0.5 出一个二维数组的鞍点
【习1.2】 实验0.6 复数类。
【习1.3】 实验0.8 图形接口与实现图形接口的类
第2章 绪论
【习2.1】 实验1.1 判断数组元素是否已按升序排序。
程序见例1.4的SortedArray.java。
public static boolean isSorted(int[] table) //判断整数数组是否已按升序排序
{ //若已排序返回true,否则返回false
if (table==null)
return false;
for (int i=0; i<table.length-1; i++)
if (table[i]>table[i+1])
return false;
return true;
}
public static boolean isSorted(Comparable[] table) //判断对象数组是否已按升序排序java replace方法
{ //若已排序返回true,否则返回false
if (table==null)
return false;
for (int i=0; i<table.length-1; i++)
if (table[i]pareTo(table[i+1])>0)
return false;
return true;
}
【习2.2】 实验1.3 用递归算法求两个整数的最大公因数。
public class Gcd
{
public static int gcd(int a, int b) //返回a,b的最大公因数,递归方法
{
if(b==0)
return a;
if(a<0)
return gcd(-a, b);
if(b<0)
return gcd(a, -b);
return gcd(b, a%b);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论