JAVA语言程序设计课后习题----第五单元解析(仅供参考)
1 本题是水题,题目要求你求最大值、最小值,建议你用Arrays.sort函数进行排序,最大值、最小值就可以确定了
import java.util.Arrays;
import java.util.Scanner; public class paone {
public static void main(String[] args) {
int [] aa = new int[5];
double sum = 0.0;
Scanner input =new Scanner(System.in);
for (int i = 0; i <5 ; i++) {
aa[i] = input.nextInt();
sum += aa[i];
}
Arrays.sort(aa);
for (int a : aa)
System.out.print(a+" ");
System.out.println();
System.out.println("最小值:"+aa[0]);
System.out.println("最大值:"+aa[4]);
System.out.println("平均值:"+sum/5);
}
}
2 本题建议用swtich函数进行统计1-6的整数,每次产生一个随机数,就进行+1,switch中进行统计数目的大小建议用素组来定义。
import java.util.Random;
public class potwo {
public static void main(String[] args) {
Random r = new Random();
int [] a =new int[1000];
int [] b =new int[6];
int count = 0;
for (int i = 0; i < 1000; i++) {
a[i] = r.nextInt(6)+1;
switch (a[i]){
case 1:
b[0]++;
break;
case 2:
b[1]++;
break;
case 3:
b[2]++;
break;
case 4:
b[3]++;
break;
case 5:
b[4]++;
break;
case 6:
b[5]++;
break;
}
}
for (int A : a){
count++;
System.out.print(A+" ");
if (count % 10 == 0)
System.out.println();
}
System.out.println("1的个数为"+b[0]);
System.out.println("2的个数为"+b[1]);
System.out.println("3的个数为"+b[2]);
System.out.println("4的个数为"+b[3]);
System.out.println("5的个数为"+b[4]);
System.out.println("6的个数为"+b[5]);
}
}
3 本题水题,还是用sort函数进行排序,直接找到最小元素
import java.util.Arrays;
import java.util.Scanner; public class pothree {
public static void main(String[] args) {
double [] arrays = new double[5];
Scanner input = new Scanner(System.in);
for (int i = 0; i <5 ; i++) {
arrays[i]=input.nextDouble();
}
System.out.println("这个元素最小值是:"+min(arrays));
}
public static double min(double[] array){
Arrays.sort(array);
return array[0];
}
}
4 本题水题根据题目意思写即可,注意交换位置如何交换 a ^= b; b ^= a; a ^= b;
import java.util.Scanner;
public class pofour {
public static void main(String[] args) {
int [] aa = new int[10];
Scanner input =new Scanner(System.in);
for (int i = 0; i < 10 ; i++) {
aa[i] = input.nextInt();
}
System.out.println("排序前的元素:");
for (int A : aa)
System.out.print(A+" ");
System.out.println();
for (int i = 0; i < 4 ; i++) {
aa[i] ^= aa[9-i];
aa[9-i] ^= aa[i];
aa[i] ^= aa[9-i];
}
System.out.println("交换后的元素:");
for (int A : aa)
System.out.print(A+" ");
}
}
5 理解题目意思即可
import java.util.Scanner;
public class pofive {
public static void main(String[] args) {
int [] aa = new int[8];
Scanner input =new Scanner(System.in);
for (int i = 0; i < 8; i++) {
aa[i]=input.nextInt();
}
System.out.println("选择排序前:");
for (int A : aa)
System.out.print(A+" ");
System.out.println();
for (int i = 0; i < 7; i++) {
int k = i;
for (int j = k+1; j < 8 ; j++) {
if (aa[j] < aa[k])
k = j;
}
if (i!=k) {
aa[i] ^= aa[k];
aa[k] ^= aa[i];
aa[i] ^= aa[k];
}
/* for (int A : aa)
System.out.print(A+" ");
System.out.println();*/
}
System.out.println("选择排序后:");
for (int A : aa)
System.out.print(A+" ");
}
}
6 根据题目意思,把Fibonacci数列意思理解即可
public class posix {
public int [] aa = new int[20];
public static void main(String[] args) {
posix posix =new posix();
int i,count=0;
for (i = 0; i < 20; i++) {
System.out.print(posix.fic(i)+" ");
count++;
if (count % 10 ==0)
System.out.println();
}
}
public int fic(int n){
if (n==0)
return aa[n]=1;
if (n==1)
return aa[n]=1;
else
return fic(n-2)+fic(n-1);
}
}
7 本题有点坑,你写的可能只是一种结果,因为你定义a、b两个数组,两个数组的长度有三种可能 a>b;a=b;a<b;三种可能,注意即可
import java.util.Scanner;
public class Poseven {
public static void main(String[] args) {
//int [] aa ={1,2,3,4,15};
//int [] bb ={4,5,6,7};
int a,b;
Scanner input = new Scanner(System.in);
System.out.print("请输入第一个数组的元素个数:");
a=input.nextInt();
System.out.print("请输入第二个数组的元素个数:");
b=input.nextInt();
int []aa=new int[a];
int []bb=new int[b];
System.out.println("请输入第一个数组的元素:");
for (int i = 0; i < a; i++) {
aa[i] = input.nextInt();
}
System.out.println("请输入第二个数组的元素:");
for (int i = 0; i < b; i++) {
bb[i] = input.nextInt();
}
System.out.println("加之前两个数组分别为:");
for (int AA : aa)
System.out.print(AA+" ");
System.out.println();
for (int BB : bb)
System.out.print(BB+" ");
System.out.println();
System.out.println("相加后数组为:");
Poseven poseven =new Poseven();
int []abs= poseven.sumAraay(aa,bb);
for (int ABS : abs)
System.out.print(ABS+" ");
}
public static int[] sumAraay(int [] a,int [] b){
int max,min;
max = a.length >= b.length ? a.length:b.length;
min = a.length < b.length ? a.length:b.length;
int leng1=a.length,leng2=b.length;
int sum []=new int[max];
for (int i = 0; i < min; i++) {
sum[i] = a[i]+b[i];
leng1--;
leng2--;
}
for (int j = min; j < max; j++) {
if (leng1==0)
sum[j] = b[j];
else
sum[j] = a[j];
}
/* for (int SUM : sum)
System.out.print(SUM+" ");
System.out.println();*/
return sum;
}
}
8 定义一个可以放下这两个素组大小的素组,记录一个数组存完后,这个素组的下标即可
import java.util.Arrays;
public class Poeight {
public static void main(String[] args) {
Poeight poeight =new Poeight();
int [] aa = {1,10,3,4};
int [] bb = {4,5,6,7,8};
System.out.println("和成前的数组分别为:");
for (int AA : aa)
System.out.print(AA+" ");
System.out.println();
for (int BB : bb)
System.out.print(BB+" ");
System.out.println();
System.out.println("合成后的数组为:");
int [] merge=poeight.arrayMerge(aa,bb);
for (int MERGE : merge)
System.out.print(MERGE+" ");
System.out.println();
}
public static int [] arrayMerge(int [] a,int [] b){
int sum=a.length+b.length;
int [] suml = new int[sum];
int min = a.length < b.length ? a.length:b.length;
int max = a.length >= b.length ? a.length:b.length;
for (int i = 0; i < min ; i++) {
if (a.length < b.length)
suml[i] = a[i];
else
suml[i] = b[i];
}
for (int i = min; i < sum; i++) {
if (a.length>b.length)
suml[i] = a[i-b.length];
else
suml[i] = b[i-a.length];
}
Arrays.sort(suml);
return suml;
}
}
9 根据题目意思,直接求解即可
import java.util.Scanner;
public class Ponine {
public static void main(String[] args) {
double [] aa = new double[3];
double [] bb = new double[3];
Scanner input = new Scanner(System.in);
System.out.print("请依次输入a,b,c的值:");
aa[0] = input.nextDouble();
aa[1] = input.nextDouble();
aa[2] = input.nextDouble();
double x1 =( -aa[1]+Math.sqrt(Math.pow(aa[1],2)-4*aa[0]*aa[2]))/2*aa[0];
double x2 =( -aa[1]-Math.sqrt(Math.pow(aa[1],2)-4*aa[0]*aa[2]))/2*aa[0];
bb[0]=x1;
bb[1]=x2;
System.out.println("根的个数为"+ solveQuadratic(aa,bb));
}
public static int solveQuadratic(double [] eqn, double [] roots){
int solve=-1;
if(Math.pow(eqn[1],2)-4*eqn[0]*eqn[2]==0)
solve=1;
if(Math.pow(eqn[1],2)-4*eqn[0]*eqn[2] > 0)
solve=2;
return solve;
}
}
10 本题有个小技巧,我用的是“置0法”,把不符合要求的全部置0,2是素数,所以我们从下标为1的开始筛选,这个方法有点坑,因为你这样筛选可能会把本身给筛选掉,就需要错位筛选,比如筛选2的倍数,我们从3开始筛选,依次类推,因为求的是2~100的素数,所以因子只可能到50,定义循环的次数即可
public class Poten {
public static void main(String[] args) {
int a[] = new int[100];
//int b[] =new int[99];
int i,k,j,cout=0;
for (i = 0; i < 99 ; i++) {
a[i] = i+2;
}
for (int A : a)
System.out.print(A+" ");
System.out.println();
/* System.out.println();
k=0;
System.out.println(a.length);
for (i=0;i<a.length;i++) {
if (a[i] % 2 != 0) {
b[k] = a[i];
k++;
}
}
for (i=0;i<b.length;i++)
System.out.print(b[i]+" ");*/
// 把每次结果都输出来显示。
for (j = 2; j <=50 ; j++) {
for (k = j-1 ; k<a.length ; k++) {
if (a[k] % j == 0)
a[k]=0;
}
for (int A : a)
System.out.print(A+" ");
System.out.println();
}
for (i=0;i<a.length;i++){
if (a[i]!=0)
System.out.print(a[i]+" ");
}
// a[i] != '\0'
//System.out.println(cout);
}
}
11 根据题目意思理解即可
import java.util.Arrays;
public class Poeleven {
public static void main(String[] args) {
int [] a={1,2,3,4};
int [] b={1,2,3,4};
System.out.println( equals(a,b));
// System.out.println(a.equals(b));
}
public static boolean equals (int [] list1,int [] list2){
// 定义count的原因是把满足题目条件的结果进行加一
int count=0;
if(Arrays.equals(list1,list2)){
for (int i = 0; i <list1.length ; i++) {
if(list1[i]==list2[i])
count++;
}
}
// 满足条件的结果与数组长度相等则满足
if (count==list1.length)
return true;
else
return false;
}
}
12 本题用的 较简单的方法与第十题基本想法一致,每次循环一遍就把那个数“置0”
public class Potwleven {
public static void main(String[] args) {
int j=0,i=0;
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
//int t= s(a);
// while循环的条件就是数组里面不为18的数大于1
while (s(a)>1){
// 因为是12个数,则用%12来进行循环
if (a[i%12]!=18)
j++;
if (j % 5 == 0)
a[i%12]=18;
i++;
}
// System.out.println(j);
for (int k = 0; k <a.length ; k++) {
if (a[k]!=18)
System.out.println(a[k]);
}
}
public static int s(int a[]){
int count=0;
for (int i = 0; i < a.length; i++) {
if (a[i]!=18)
count++;
}
return count;
}
}
13 本题的选牌次数纯属运气,因为有随机,根据题目意思定义一个二维数组来存放牌
import java.util.Random;
public class threeteen {
public static void main(String[] args) {
int [][]desk = new int[4][13];
int count=1;
// 用来存放选牌的次数
int cu=0;
boolean flag =true;
for (int i = 0; i <4 ; i++) {
for (int j = 0; j < 13; j++) {
desk[i][j]=count;
count++;
}
count=1;
}
Random random =new Random();
while (flag) {
cu++;
int r1 = random.nextInt(4);
int r2 = random.nextInt(13);
int a = desk[r1][r2];
int b = desk[r1][r2];
int c = desk[r1][r2];
int d = desk[r1][r2];
if (a+b+c+d==24)
flag=false;
}
System.out.println(cu);
}
/* public static void main(String[] args) {
int[] sum = new int[52];
int[] a = new int[4];
boolean flag = true;
for (int i = 0; i < 52; i++) {
sum[i] = i % 13 + 1;
}
for (int i = 0; i < sum.length; i++) {
System.out.print(sum[i] + " ");
}
System.out.println();
Random random = new Random();
int r = random.nextInt(52);
int n = sum.length;
int cu = 0;
while (flag) {
for (int i = 0; i < 4; i++) {
a[i] = sum[r];
for (int j = r; j < n - 1; j++) {
sum[j] = sum[j + 1];
}
n--;
for (int j = 0; j < n; j++) {
System.out.print(sum[j] + " ");
}
System.out.println();
}
System.out.println();
if (a[0]+a[1]+a[2]+a[3]==24)
flag=false;
}*/
}
14 本题就是求因子,每次求得的因子就让他进栈,知道最后一次进栈,最后再出栈,即可
import java.util.Scanner;
public class Pofourteen {
private int[]elements;
private int size=0;
public static final int DEFAULT_CAPACITY = 10;
public Pofourteen(){
this(DEFAULT_CAPACITY);
}
public Pofourteen(int capacity){
elements = new int[capacity];
}
//进栈
public void push(int value){
if(size >= elements.length){
int []temp = new int[elements.length*2];
System.arraycopy(elements,0,temp,0,elements.length);
elements = temp;
}
elements[size++]=value;
}
//出栈
public int pop() {
return elements[--size];
}
public int peek() {
return elements[size--];
}
// 栈是否为空
public boolean empty() {
return size == 0;
}
public int getSize() {
return size;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number = input.nextInt();
Pofourteen stack = new Pofourteen();
Pofourteen stack1 =new Pofourteen();
int ans=0;
int[] a = new int[20];
while (number != 1) {
for (int i = 2; i <= number; i++) {
if (number % i == 0) {
// a[ans] = i;
stack.push(i);
ans++;
number /= i;
break;
}
}
}
while (!stack.empty()) {
stack1.push(stack.pop());
// System.out.print(stack1.pop() + " ");
}
//System.out.println();
while (!stack1.empty()) {
// stack1.push(stack.pop());
System.out.print(stack1.pop() + " ");
}
}
}
15 注意转置是什么意思,就是行列里面的元素互换
public class Pofifteen {
public static void main(String[] args) {
int [][]A= {{1,3,5},{-3,6,0},{13,-5,7},{-2,19,25}};
int [][]B={{0,-1,2},{7,-1,6},{-6,13,2},{12,-8,-13}};
System.out.println("A+B矩阵");
jia(A,B);
System.out.println("A-B矩阵");
jian(A,B);
// System.out.println(A[0].length);
// System.out.println(A.length);
System.out.println("*********************");
System.out.println("A的转置");
zhuan(A);
}
public static void jia(int [][]a,int [][]b){
int [][] add= new int[4][3];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
add [i][j] = a[i][j]+b[i][j];
System.out.print(add [i][j]+" ");
}
System.out.println();
}
}
public static void jian(int [][]a,int [][]b){
int [][] add= new int[4][3];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
add [i][j] = a[i][j]-b[i][j];
System.out.print(add [i][j]+" ");
}
System.out.println();
}
}
public static void zhuan(int [][]a){
int [][]AA=new int[3][4];
for (int i = 0; i < a[0].length; i++) {
for (int j = 0; j < a.length; j++) {
AA[i][j]=a[j][i];
}
}
for (int i = 0; i < a[0].length; i++) {
for (int j = 0; j < a.length; j++) {
System.out.print(AA[i][j]+" ");
}
System.out.println();
}
}
}
16 把二维素组的下标存入数组即可
import java.util.Scanner;
public class Posixteen {
public static int a1,a2;
public static void main(String[] args) {
System.out.print("请输入数组的行数和列数:");
Scanner input = new Scanner(System.in);
a1 = input.nextInt();
a2 =input.nextInt();
double [][]A=new double[a1][a2];
for (int i = 0; i <a1 ; i++) {
for (int j = 0; j <a2 ; j++) {
A[i][j] = input.nextDouble();
}
}
int C[]=locateLargest(A);
System.out.println("最大数的位置是:"+"("+C[0]+","+C[1]+")");
}
public static int[] locateLargest(double [][] a){
int n=0;
int m=0;
int c[]=new int[2];
for (int i = 0; i <a1 ; i++) {
for (int j = 0; j <a2 ; j++) {
// a[i][j] = input.nextDouble();
if (a[i][j]>a[n][m]) {
c[0] = i;
c[1] = j;
n=i;
m=j;
}
}
}
return c;
}
}
17 本题水题,但是有点意思,根据题目的意思写即可
import java.util.Scanner;
public class Potwelve {
/* public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
int count = 1;
int n=0,m=num/2;
int temp1=0,temp2=0;
int [][]A = new int[num][num];
for (int i = 0; i <num*num; i++) {
// System.out.println(n+" "+m);
// if (A[n][m]==0){
// A[n][m]=count;
if (A[n][m]!=0) {
n=++temp1;
m=temp2;
}
A[n][m]=count;
// System.out.println(n+" "+m+" "+A[n][m]);
count++;
temp1 = n;
temp2 =m;
n--;
m++;
if (n==-1)
n=num-1;
if (m==num)
m=0;
// }
}
for (int i = 0; i <num; i++) {
for (int j = 0; j <num; j++) {
System.out.print(A[i][j]+" ");
}
System.out.println();
}
}*/
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int num = input.nextInt();
int [][]A=new int[num][num];
int x=0,y=num/2;
for (int i = 1; i <=num*num ; i++) {
if (A[x][y]!=0) {
//A[x][y] = i;
x=(x+2)%num;
// y=(y+1)%num;
// 保存原来位置的y
y=(y+num-1)%num;
}
A[x][y]=i;
x=(x+num-1)%num;
y=(y+1)%num;
}
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
System.out.print(A[i][j]+" ");
}
System.out.println();
}
}
}
JAVA语言程序设计课后习题----第五单元解析(仅供参考)的更多相关文章
- JAVA语言程序设计课后习题----第八单元解析(仅供参考)
1 本题主要考的是方法的克隆,与c++里面的拷贝有点相似,具体看书本p147 import java.util.Objects; public class Square implements Clon ...
- JAVA语言程序设计课后习题----第七单元解析(仅供参考)
1 本题水题,就是想让你理解继承的含义 public class Animaal { public double weight; public void eat(){ } } public class ...
- JAVA语言程序设计课后习题----第六单元解析(仅供参考)
1 本题就是基本函数的用法 import java.util.Scanner; public class Poone { public static void main(String[] args) ...
- JAVA语言程序设计课后习题----第四单元解析(仅供参考)
1 本题水题,主要理解题目的意思即可,访问方法和修改方法可以通过快捷方式alt+insert选中你需要的成员变量即可 public class Person { public String name; ...
- JAVA语言程序设计课后习题----第三单元解析(仅供参考)
1 本题水题,记住要知道输入格式即可 import java.util.Scanner; public class test { public static void main(String[] ar ...
- JAVA语言程序设计课后习题----第二单元解析(仅供参考)
1 注意不同类型转换 import java.util.Scanner; public class Ch02 { public static void main(String[] args) { Sc ...
- JAVA语言程序设计课后习题----第一单元解析(仅供参考)
1 本题是水题,基本的输出语句 public class test { public static void main(String[] args) { // 相邻的两个 "" 要 ...
- Java语言程序设计(基础篇) 第五章 循环
第五章 循环 5.2 while循环 1.while循环的语法如下: while(循环继续条件){ //循环体 语句(组); } 2.程序:提示用户为两个个位数相加的问题给出答案 package co ...
- Java语言程序设计-助教篇
1. 给第一次上课(软件工程)的老师与助教 现代软件工程讲义 0 课程概述 给学生:看里面的第0个作业要求 2. 助教心得 美国视界(1):第一流的本科课堂该是什么样?(看里面的助教部分) 助教工作看 ...
随机推荐
- 各种集合key,value能否为null
转: 各种集合key,value能否为null 2019年03月12日 13:22:58 mingwulipo 阅读数 238 HashMap key,value都可以为null static f ...
- List去重为什么要写equals(),hashCode()方法
一,各个集合的特点: Collection(集合):容器,用于存放对象(引用类型.基本类型需要自动装箱) List(列表):元素有序,元素可以重复 (有索引). 通过元素的equals()方法判断是否 ...
- 使用div 的 contenteditable属性,实现输入编辑,输入 "#" 出现下拉选择
文章原文:https://www.cnblogs.com/yalong/p/11883585.html 演示效果如下: 具体代码可以看 https://github.com/YalongYan/e ...
- [Feature] Compare the effect of different scalers
Ref: Compare the effect of different scalers on data with outliers 主要是对该代码的学习研究. from sklearn.prepro ...
- Maven 官网 查找&下载 jar包& pom引用 完美方案
Maven 官网 查找&下载 jar包 & pom引用 问题描述 在我们在开发过程中,经常遇到程序中需要引用的某个版本jar包,但是在公司的私有仓库下载不到的情况. 遇到这种情况,该怎 ...
- 错误 MSB6006 CL.exe 已退出,代码为2
环境 WIN10 + VS2019 社区版 按照其他网友的方法说 解决方法: 1 一个类内部的定义返回类型为double的方法种没有写return语句. 2 变量没有初始化也会导致这种情况. 但是设置 ...
- Oracle面试题
0.绑定变量的优缺点及使用场合分别是什么? 优点:能够避免SQL的硬解析以及与之相关的额外开销(SQL语法.语义的分析.逻辑分析.生成较佳的执行计划等开销),提高执行效率. 缺点:如果在表存在数据倾斜 ...
- C# AES的128位、192位、256位加密
C# AES的128位.192位.256位加密 AES加密原理,这里就不解释了,自行百度.这里主要细说AES的CBC加密模式下的128位.192位.256位加密区别,参考 对称加密和分组加密中的四 ...
- e4a 记录
自动点击 浏览框.跳转("javascript:document.getElementById('按钮的ID').clcik();")
- 第六周&java实验报告四
实验报告: 一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:rad ...