Java语言程序设计(第3版)沈泽刚主编第5章课后习题答案

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java语言程序设计(第3版)沈泽刚主编第5章课后习题答案相关的知识,希望对你有一定的参考价值。

Java语言程序设计(第3版)沈泽刚主编第5章课后习题答案

5.1 编写程序,从键盘输入5个整数,存到一个数组,计算所有元素的最大值,最小值和平均值。

import java.util.Scanner;

/**
 * 5.1 编写程序,从键盘输入5个整数,存到一个数组,计算所有元素的最大值,最小值和平均值。
 */
public class IntArray {
    public static void main(String[] args){
        System.out.print("键盘输入5个整数:") ;
        Scanner input = new Scanner(System.in) ;
        int [] num = new int [5] ;
        int sum = 0 ;
        int max = Integer.MIN_VALUE ;
        int min = Integer.MAX_VALUE ;
        for(int i=0; i<num.length; i++){
            num[i] = input.nextInt() ;
        }
        for(int i=0; i<num.length; i++){
            if(max <= num[i]){
                max = num[i] ;
            }
            if(min >= num[i]){
                min = num[i] ;
            }
            sum += num[i] ;
        }
        System.out.println("最大值:" + max) ;
        System.out.println("最小值:" + min) ;
        System.out.println("平均值:" + (1.0 * sum / num.length)) ;
    }
}

5.2 编写程序,随机产生100个16之间的整数,统计每个数出现的次数,然后随机产生1000个16之间的整数,统计每个数出现的次数。

public class RandomTest {
    public static void main(String[] args){
        int [] num3 = new int [6] ; //统计次数
        int [] num4 = new int [6] ;

        for(int k=0; k<100; k++){
           int r = (int)(Math.random() * 6) + 1 ;
            switch(r){
                case 1 : num3[0] ++ ; break ;
                case 2 : num3[1] ++ ; break ;
                case 3 : num3[2] ++ ; break ;
                case 4 : num3[3] ++ ; break ;
                case 5 : num3[4] ++ ; break ;
                case 6 : num3[5] ++ ; break ;
            }
        }
        for(int m=0; m<1000; m++){
            int r = (int)(Math.random() * 6) + 1 ;
            switch(r){
                case 1 : num4[0] ++ ; break ;
                case 2 : num4[1] ++ ; break ;
                case 3 : num4[2] ++ ; break ;
                case 4 : num4[3] ++ ; break ;
                case 5 : num4[4] ++ ; break ;
                case 6 : num4[5] ++ ; break ;
            }
        }
        System.out.print("100个整数中,1~6出现的次数分别为:" ) ;
        for(int k=0; k<num3.length; k++){
            System.out.print(num3[k] + " ") ;
        }
        System.out.println() ;
        System.out.print("1000个整数中,1~6出现的次数分别为:" ) ;
        for(int k=0; k<num3.length; k++){
            System.out.print(num4[k] + " ") ;
        }
    }
}

5.3 编写一个方法,求一个double型数组的最小值。

import java.util.Scanner;

/**
 * 5.3 编写一个方法,求一个double型数组的最小值。
 */
public class ArrayDemo {
    public static Double min(double [] array){
        double min = Double.MAX_VALUE ;
        for(int i=0; i<array.length; i++){
            if(min >= array[i]){
                min = array[i] ;
            }
        }
        return min ;
    }
    public static void main(String[] args){
        double [] array = new double [5] ;
        Scanner input = new Scanner(System.in) ;
        System.out.print("请输入5个double型的数字:") ;
        for(int i=0; i<array.length; i++){
            array[i] = input.nextDouble() ;
        }
        System.out.println("最小值:" + min(array)) ;
    }
}

5.4 定义一个有10个元素的数组,前5个元素与后5个元素交换,第1个与第10个交换,依次类推。

public class ArrayChange {
    public static void main(String[] args){
        int [] array = {1,2,3,4,5,6,7,8,9,10} ;
        for(int arr : array){
            System.out.print(arr + " ") ;
        }
        System.out.println() ;
        for(int i=0; i<array.length/2; i++){
            int temp = array[i] ;
            array[i] = array[array.length-1-i] ;
            array[array.length-1-i] = temp ;
        }
        for(int arr1 : array){
            System.out.print(arr1 + " ") ;
        }

    }
}

5.5 定义一个含有8个元素的数组,选择排序进行升序排序。

public class ArraySort {
    public static void main(String[] args){
        int [] array = {2,1,4,3,5,6,8,7} ;
        for(int i=0; i<array.length; i++){
            int key = array[i] ;
            for(int j=i+1; j<array.length; j++){
                if(key > array[j]){
                    int temp = key ;
                    key = array[j] ;
                    array[j] = temp ;
                }
            }
            array[i] = key ;
        }
        for(int arr : array){
            System.out.print(arr + " ") ;
        }
    }
}

5.6 编程打印斐波那契数列的前20个数字。

public class Fibonacci {
    public static void main(String[] args){
        int [] f = new int [20] ;
        f[0] = 1 ;
        f[1] = 1 ;
        for(int i=2; i<f.length; i++){
            f[i] = f[i-1] + f[i-2] ;
        }
        for(int f1 : f){
            System.out.print(f1 + " ") ;
        }
    }
}

5.7 编写一个方法,计算两个数组之和。

import java.util.Arrays;

/**
 * 5.7 编写一个方法,计算两个数组之和。
 */
public class SumArray {
    public static int[] sumArray(int [] a, int [] b){
        int length = Math.max(a.length, b.length) ;
        a = Arrays.copyOf(a,length) ;
        b = Arrays.copyOf(b,length) ;
        int [] r = new int [length] ;
        for(int i=0; i<length; i++){
            r[i] = a[i] + b[i] ;
        }
      return r ;
    }
    public static void main(String[] args){
        int [] a = {1,2,4} ;
        int [] b = {2,4,6,8} ;
        int [] c = sumArray(a,b) ;
        for(int d : c){
            System.out.print(d + " ") ;
        }
    }
}

5.8 编写方法,合并两个数组,并按升序返回合并后的数组。

import java.util.Arrays;

/**
 * 5.8 编写方法,合并两个数组,并按升序返回合并后的数组。
 */
public class ArrayMerge {
    public static int[] arrayMerge(int [] a, int [] b){
        int [] array = new int[a.length + b.length] ;
        for(int i=0; i<a.length; i++){
            array[i] = a[i] ;
        }
        for(int j=array.length-a.length-3, k=0; j<array.length; j++,k++){
            array[j] = b[k]  ;
        }
        Arrays.sort(array) ;
        return array ;
    }
    public static void main(String[] args){
        int [] a = {16,13,15,18} ;
        int [] b = {9, 13, 15, 16, 29, 36, 100} ;
        int [] array = arrayMerge(a, b) ;
        for(int arr : array){
            System.out.print(arr + " ") ;
        }
    }
}

5.9 编写程序,使用方法求解一元二次方程根的个数。

import java.util.Scanner;

/**
 * 5.9 编写程序,使用方法求解一元二次方程根的个数。
 */
public class SolveQuadratic {
    public static int solveQuadratic(double [] eqn, double [] roots){
        double discriminant = (eqn[1] * eqn[1]) - (4 * eqn[0] * eqn[2]) ;
        if(discriminant > 0){
            roots[0] = ((-eqn[1]) + Math.sqrt(discriminant)) / (2 * eqn[0])  ;
            roots[1] = ((-eqn[1]) - Math.sqrt(discriminant)) / (2 * eqn[0])  ;
            return 2 ;

        }else if(discriminant == 0){
            roots[0] = (-eqn[1]) / (2 * eqn[0]) ;
            roots[1] = (-eqn[1]) / (2 * eqn[0]) ;
            return 1 ;
        }else{
            return 0 ;
        }
    }
    public static void main(String[] args){
        Scanner input = new Scanner(System.in) ;
        System.out.print("请输入一元二次方程的系数:a,b,c:") ;
        double [] roots = new double [2] ;
        double [] eqn = new double [3] ;
        for(int i=0; i<eqn.length; i++){
            eqn[i] = input.nextDouble() ;
        }
        System.out.println("一元二次方程有" + solveQuadratic(eqn,roots) + "个根") ;
    }
}

5.10 编写程序,筛选出2~100的所有素数。

public class PrimeNumber {
    public static boolean isPrime(int n){
        for(

以上是关于Java语言程序设计(第3版)沈泽刚主编第5章课后习题答案的主要内容,如果未能解决你的问题,请参考以下文章

Java语言程序设计(第3版)沈泽刚主编第4章课后习题答案

Java语言程序设计(第3版)沈泽刚主编第6,7,8章课后习题答案

Java语言程序设计(沈泽刚主编)第3版 第1~3章编程练习答案

求数据结构(用面向对象方法与C++语言描述)第二版 殷人昆主编 课后答案

Matlab程序设计与应用(第3版,刘卫国主编)课后习题参考答案

软件设计师教程第5版课后习题答案