1.计算阶乘
1 import java.util.Scanner;
2 public class test {
3 public static void main(String[] args) {
4 Scanner s=new Scanner(System.in);
5 System.out.println("计算阶乘:");
6 int res=s.nextInt();
7 int i=res-1;
8 while(i>0)
9 {
10 res=res*(i--);
11 }
12 System.out.println("结果是:"+res);
13 }
14 }
2.寻找某两个数相除,其结果 离黄金分割点 0.618最近
分母和分子不能同时为偶数
分母和分子 取值范围在[1-20]
1 public class test
2 {
3 public static void main(String[] args) {
4 int i,j,x,y;
5 double min=9999;
6 double tmp=0;
7 x=y=0;
8 for(i=1;i<=20;i++)
9 {
10 for(j=1;j<=20;j++)
11 {
12 if(i%2==0 && j%2==0)
13 continue;
14 tmp=(double)i/j-0.618;//这里的强制转换double是个坑,不转换就会得出错误的结果
15 if(tmp<0)
16 {
17 tmp=tmp*(-1.0);
18 }
19 if( tmp<min)//当发现有更小的差值时,更新min和x,y
20 {
21 x=i;
22 y=j;
23 min=tmp;
24 }
25 }
26 }
27 System.out.println("这两个数是"+x+"/"+y+"="+(double)x/y);
28 }
29 }
3.水仙花数定义:
1. 一定是3位数
2. 每一位的立方,加起来恰好是这个数本身,比如153=1*1*1+5*5*5+3*3*3
寻找所有的水仙花数
1 int i,j,k;
2 for(int n=100;n<=999;n++)
3 {
4 k=n%10;//个位
5 j=n/10%10;//十位
6 i=n/100;//百位
7 if(i*i*i+j*j*j+k*k*k==n)
8 {
9 System.out.println(n);
10 }
11 }
4.由小到大,由大到小排序。(冒泡排序)
1 public class test
2 {
3 static void selectSort(int a[])
4 {
5 int i,j,min,tmp;
6 for(i=0;i<a.length;i++)
7 {
8 min=i;
9 for(j=i+1;j<a.length;j++)
10 {
11 if(a[j]<a[min])
12 min=j;
13 }
14 tmp=a[i];
15 a[i]=a[min];
16 a[min]=tmp;
17 }
18 }
19 static void bubbleSort1(int a[])//由小到大排序
20 {
21 int i,j,tmp;
22 for(i=a.length-1;i>=1;i--)
23 {
24 for(j=0;j+1<=i;j++)
25 {
26 if(a[j]>a[j+1])
27 {
28 tmp=a[j];
29 a[j]=a[j+1];
30 a[j+1]=tmp;
31 }
32 }
33 }
34 }
35 static void bubbleSort2(int a[])//由大到小排序
36 {
37 int i,j,tmp;
38 for(i=0;i<a.length-1;i++)
39 {
40 for(j=a.length-1;j-1>=i;j--)
41 {
42 if(a[j-1]<a[j])
43 {
44 tmp=a[j-1];
45 a[j-1]=a[j];
46 a[j]=tmp;
47 }
48 }
49 }
50 }
51 static void print(int a[])
52 {
53 for(int i=0;i<a.length;i++)
54 {
55 System.out.println(a[i]);
56 }
57 }
58 public static void main(String[] args) {
59 int a[]=new int[5];
60 for(int i=0;i<5;i++)
61 {
62 a[i]=(int)(Math.random()*100);
63 }
64 // selectSort(a);
65 //先由小到大排序,再由大到小排序
66 bubbleSort1(a);
67 print(a);
68 bubbleSort2(a);
69 System.out.println("........我是分割线.......");
70 print(a);
71
72 }
73 }
5.生成随机的5*5二维数组,找出最大值并打印行列坐标
1 static void print2(int a[][])
2 {
3 int i,j;
4 for(i=0;i<a.length;i++)//此乃最大行数
5 {
6 for(j=0;j<a[0].length;j++)//此乃最大列数
7 if(j==a[0].length-1){//排版好看
8 System.out.print(a[i][j]);
9 System.out.print("
");
10 }
11 else
12 {
13 System.out.print(a[i][j]+" ");
14 }
15 }
16 }
17 public static void main(String[] args) {
18 int a[][]=new int[5][5];
19 int i,j;
20 for(i=0;i<5;i++)
21 {
22 for(j=0;j<5;j++)
23 {
24 a[i][j]=(int)(Math.random()*100);
25 }
26 }
27 int max=0;
28 int x,y;
29 x=y=0;
30 for(i=0;i<5;i++)
31 {
32 for(j=0;j<5;j++)
33 {
34 if(a[i][j]>max)
35 {
36 max=a[i][j];
37 x=i;
38 y=j;
39 }
40 }
41 }
42 print2(a);
43 System.out.println("最大值是:"+max);
44 System.out.println("坐标是:"+x+","+y);
45 }
46 }
6.首先定义一个5X8的二维数组,然后使用随机数填充满。
借助Arrays的方法对二维数组进行排序。
参考思路:
先把二维数组复制到一个一维数组
然后使用sort进行排序
最后再复制回到二维数组
1 static void print2(int a[][])//打印二维数组
2 {
3 int i,j;
4 for(i=0;i<a.length;i++)
5 {
6 for(j=0;j<a[0].length;j++)
7 if(j==a[0].length-1){
8 System.out.print(a[i][j]);
9 System.out.print("
");
10 }
11 else
12 {
13 System.out.print(a[i][j]+" ");
14 }
15 }
16 }
17 public static void main(String[] args) {
18 int a[][]=new int[5][8];
19 for(int i=0;i<a.length;i++)
20 {
21 for(int j=0;j<a[0].length;j++)
22 {
23 a[i][j]=(int)(Math.random()*100);
24 }
25 }
26 print2(a);
27 int b[]=new int[40];
28 int k=0;
29 while(k<b.length)
30 {
31 for(int i=0;i<a.length;i++)
32 {
33 System.arraycopy(a[i], 0, b, k, a[0].length);
34 k=k+a[0].length;
35 }
36 }
37 Arrays.sort(b);
38 System.out.println("............我是分割线.............");
39 k=0;
40 while(k<b.length)
41 {
42 for(int i=0;i<a.length;i++)
43 {
44 // for(int j=0;j<a[0].length;j++)
45 // {
46 // a[i][j]=b[k++];
47 // }
48 System.arraycopy(b, k, a[i], 0, a[0].length);
49 k=k+a[0].length;
50 }
51 }
52 print2(a);
53 }
54 }