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版)沈泽刚主编第6,7,8章课后习题答案
Java语言程序设计(沈泽刚主编)第3版 第1~3章编程练习答案
求数据结构(用面向对象方法与C++语言描述)第二版 殷人昆主编 课后答案