Java语⾔程序设计(第3版)沈泽刚主编第5章课后习题答案Java语⾔程序设计(第3版)沈泽刚主编第5章课后习题答案
5.1 编写程序,从键盘输⼊5个整数,存到⼀个数组,计算所有元素的最⼤值,最⼩值和平均值。
import 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]= Int();
}
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之间的整数,统计每个数出现的次数。
6之间的整数,统计每个数出现的次数,然后随机产⽣1000个1
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){
case1: num3[0]++;break;
case2: num3[1]++;break;
case3: num3[2]++;break;
case4: num3[3]++;break;
case5: num3[4]++;break;
case6: num3[5]++;break;
}
}
for(int m=0; m<1000; m++){
int r =(int)(Math.random()*6)+1;
switch(r){
case1: num4[0]++;break;
case2: num4[1]++;break;
case3: num4[2]++;break;
case4: num4[3]++;break;
case5: num4[4]++;break;
case6: 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型数组的最⼩值。
nextint()方法import 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]= Double();
}
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 Arrays;
/**
* 5.7 编写⼀个⽅法,计算两个数组之和。
*/
public class SumArray {
public static int[]sumArray(int[] a,int[] b){
int length = Math.max(a.length, b.length);
a = pyOf(a,length);
b = pyOf(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 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 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]);
return2;
}else if(discriminant ==0){
roots[0]=(-eqn[1])/(2* eqn[0]);
roots[1]=(-eqn[1])/(2* eqn[0]);
return1;
}else{
return0;
}
}
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]= Double();
}
System.out.println("⼀元⼆次⽅程有"+solveQuadratic(eqn,roots)+"个根"); }
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论