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):第一流的本科课堂该是什么样?(看里面的助教部分) 助教工作看 ...
随机推荐
- iscsi序列二、iscsi多路径配置方式
一.ISCSI多路径应用 如果存储服务器到交换机只有一条线路的时候,那么一条线路出线故障,整个就没法使用了,所以多线路可以解决这个问题,避免单点故障 如上图,如果SAN服务器与客户端交换机只有一条线路 ...
- Linux 用户管理 与 文件权限
Linux 用户管理 与 文件权限 用户组操作 1.groupadd命令 groupadd [-g -o] gid group 各个选项具体含义如下: -g:指定新建用户组的GID号,该GID号必须唯 ...
- node 笔记整理
node 合并多个请求的数据 function getList1(num) { var url= "netease/search?keyword=独孤天下&type=song& ...
- 【Java】生成随机的手机号码并输出到文件
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.R ...
- Stream系列(十四)parallet方法使用
并发 视频讲解:https://www.bilibili.com/video/av78408286/ EmployeeTestCase.java package com.example.demo; i ...
- hdoj1011(树上分组背包)
题目链接:https://vjudge.net/problem/HDU-1011 题意:给定一颗树,每个结点有两个属性,即花费V和价值w,并且选择子结点时必须选择父结点,求总花费不超过m的最大价值. ...
- gdb移植(设备端本地版本)
Gdb下载地址:http://ftp.gnu.org/gnu/gdb/ ncurse下载地址:http://ftp.gnu.org/pub/gnu/ncurses/ 目录结构如下: ├── insta ...
- Recordset对象的Open方法
Recordset对象的Open方法原型: Open([Source],[ActiveConnection],[CursorType],[LockType],[Options]) CursorType ...
- Jupyter修改默认文件保存路径
一.Jupyter安装 前提需要已经安装好python环境~ 接着,Python3x版本安装路径下执行pip命令安装 pip3 install Jupyter 看网速,安装完后会显示安装成功一段话即可 ...
- ubuntu 系统升级
1.更新软件源和软件 $ sudo apt-get update && sudo apt-get dist-upgrade 2.安装update-manager-core $ sudo ...