数据结(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小时内删除。