编程入门

小球落地问题

 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。

它在第N次落地时反弹多高?共经过多少米? 保留两位小数

 

第一次落地反弹 M/2,

第二次落地反弹 M/4 (即 M/(2^2)),

第三次落地反弹 M/8 (即 M/(2^3)),

以此类推第 N次反弹高度为 M/(2^N)

public class  Test{
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int M = scanner.nextInt(); //总高度
    int N = scanner.nextInt(); //反弹的次数
    double height = 0,sum = M;
    for(int i=1;i<=N;i++) {
        height=M/Math.pow(2, i);
        if(i<N) {
            sum += 2*height;
        }else if(i==N) {
            sum += 0;
        }
    }
    String h = String.format("%.2f", height);
    String s = String.format("%.2f", sum); 
    System.out.println(h+" "+s);
  }
}

 

求n以内的素数

对正整数 n,如果用 2到  之间的所有整数去除,均无法整除,则 n为质数。质数大于等于 2 不能被它本身和 1 以外的数整除

public class Test {
public static void main(String[] args) {    
    boolean flag;
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    for(int i=2;i<=n;i++) {
        flag=true;
        for(int j=2;j<=Math.sqrt(i);j++) {
            if(i%j==0) {
                flag=false;//不是素数
            }
        }
        if (flag==true) {
            System.out.println(i);
        }
    }
  }
}        

 

数组的插入和排序

已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

 

public class Test {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int[]a = new int[10];
        for(int i=0;i<a.length-1;i++) {
            a[i]=scanner.nextInt();
        }
        int b =scanner.nextInt();
        a[a.length-1]=b;
        for(int i =a.length-1;i>0;i--) {
            if(a[i]<a[i-1]) {
                int temp = a[i-1];
                a[i-1] =a[i];
                a[i]=temp;
            }
        }
        for(int n:a) {
            System.out.println(n);
        }
        
    }
}

 

自定义函数处理素数

写入一个判断素数的函数,在主函数输入一个整数,输出是否为素数,如果是素数输出prime,否则输出not prime 

 1 public class Test {
 2 public static void main(String[] args) {
 3     int n; boolean flag;
 4     Scanner scanner = new Scanner(System.in);
 5     n = scanner.nextInt();
 6     flag = prime(n);
 7     if (flag) {
 8         System.out.print("prime");
 9     }else {
10         System.out.print("not prime");
11     }
12 }
13   //判断是否为素数
14  public static boolean prime(int n) {
15      int i;boolean flag = true;
16      if (n<1||n==1) {
17         flag = false;
18         return flag;
19     }
20      for(i=2;i<n;i++) {
21          if (n%i==0) {
22             flag=false;
23         }
24      }
25     return flag;
26 }
27 }

 

二维数组的转置

写入一个函数,使给定的一个二维数组(3x3)转置,即行列互换

 1 public class Test{
 2 public static void main(String[] args) {
 3     Scanner scanner = new Scanner(System.in);
 4     int[][] arr = new int[3][3] ;
 5     //接收键盘输入的二维数组
 6     for(int i=0;i<3;i++) {
 7        for(int j=0;j<3;j++) {
 8           int num = scanner.nextInt();
 9           arr[i][j]=num;                
10        }
11     }
12     printArray(arr);    
13     }
14     //遍历输出二维数组
15   private static void printArray(int[][] arr) {
16     for (int i = 0; i < arr.length; i++) {
17       for (int j = 0; j < arr.length; j++) {
18          System.out.print(arr[j][i]+" ");
19       }
20     }
21 }
22 }

 

posted @ 2019-05-13 22:16  笺笙  阅读(169)  评论(0编辑  收藏  举报