50道JAVA编程算法题(三)

【程序41】

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

public class  Prog41{

    public static void main(String[] args){

        int n;

        n = fun(0);

        System.out.println("原来有"+n+"个桃子");

    }

    private static int fun(int i){

        if(i==5)

  return 1;

        else

  return fun(i+1)*5+1;

    }

}

【程序42】

题目:809*??=800*??+9*??+1

其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

public class  Prog42{

    public static void main(String[] args){

        int n = 0;

        boolean flag = false;

        for(int i=10;i<100;i++)

  if(809*i==800*i+9*i+1){

    flag = true;

    n = i;

    break;

  }

        if(flag)

  System.out.println(n);

        else

  System.out.println("无符合要求的数!");

    }

}

【程序43】

题目:求0—7所能组成的奇数个数。

public class  Prog43{

    public static void main(String[] args){

        int count = 0;

        //声明由数字组成的数

        int n = 8;

        //一位数

        count = n/2;

        //两位数

        count += (n-1)*n/2;

        //三位数

        count += (n-1)*n*n/2;

        //四位数

        count += (n-1)*n*n*n/2;

        //五位数

        count += (n-1)*n*n*n*n/2;

        //六位数

        count += (n-1)*n*n*n*n*n/2;

        //七位数

        count += (n-1)*n*n*n*n*n*n/2;

        System.out.println("0-7所能组成的奇数个数:"+count);

    }

}

【程序44】

题目:一个偶数总能表示为两个素数之和。

import  java.util.Scanner;

public class  Prog44{

    public static void main(String[] args){

        System.out.print("请输入一个偶数:");

        Scanner scan = new Scanner(System.in);

        int n = scan.nextInt();

        scan.close();

        if(n%2!=0){

  System.out.println("您输入的不是偶数!");

  return;

        }

        twoAdd(n);

    }

    //偶数分解为素数之和

    private static void twoAdd(int n){

        for(int i=2;i

            if(isPrime(i)&&isPrime(n-i)){

                System.out.println(n+"="+(i)+"+"+(n-i));

                break;

            }

        }

    }

    //判断素数

    private static boolean isPrime(int m){

        boolean flag = true;

        for(int i=2;i

            if(m%i==0){

                flag = false;

                break;

            }

        }

        return flag;

    }

}

【程序45】

题目:判断一个素数能被几个9整除

import  java.util.Scanner;

public class  Prog45{

    public static void main(String[] args){

        System.out.print("请输入一个数:");

  Scanner scan = new Scanner(System.in);

  long l = scan.nextLong();

  long n = l;

  scan.close();

  int count = 0;

  while(n>8){

  n /= 9;

  count++;

      }

  System.out.println(l+"能被"+count+"个9整除。");

    }

}

【程序46】

题目:两个字符串连接程序

public class  Prog46{

    public static void main(String[] args){

        String str1 = "lao lee";

  String str2 = "牛刀";

  String str = str1+str2;

  System.out.println(str);

    }

}

【程序47】

题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

import  java.util.Scanner;

public class  Prog47{

    public static void main(String[] args){

        System.out.print("请输入7个整数(1-50):");

        Scanner scan = new Scanner(System.in);

        int n1 = scan.nextInt();

        int n2 = scan.nextInt();

        int n3 = scan.nextInt();

        int n4 = scan.nextInt();

        int n5 = scan.nextInt();

        int n6 = scan.nextInt();

        int n7 = scan.nextInt();

        scan.close();

        printStar(n1);

        printStar(n2);

        printStar(n3);

        printStar(n4);

        printStar(n5);

        printStar(n6);

        printStar(n7);

    }

    static void printStar(int m){

        System.out.println(m);

        for(int i=0;i

  System.out.print("*");

        System.out.println();

    }

}

【程序48】

题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

public class  Prog48{

    public static void main(String[] args){

        int n = 1234;

        int[] a = new int[4];

        for(int i=3;i>=0;i--){

  a[i] = n%10;

  n /= 10;

        }

        for(int i=0;i<4;i++)

  System.out.print(a[i]);

        System.out.println();

        for(int i=0;i

  a[i] += 5;

  a[i] %= 10;

        }

        int temp1 = a[0];

        a[0] = a[3];

        a[3] = temp1;

        int temp2 = a[1];

        a[1] = a[2];

        a[2] = temp2;

        for(int i=0;i

  System.out.print(a[i]);

    }

}

【程序49】

题目:计算字符串中子串出现的次数

public class  Prog49{

    public static void main(String[] args){

        String str = "I come fromCounty DingYuan ProvinceAnHui.";

        char[] ch = str.toCharArray();

        int count = 0;

        for(int i=0;i

            if(ch[i]==' ')

  count++;

        }

        count++;

        System.out.println("共有"+count+"个字串");

    }

}

【程序50】

题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

import  java.io.*;

public class  Prog50{

    //定义学生模型

    String[] number = new String[5];

    String[] name = new String[5];

    float[][] grade = new float[5][3];

    float[] sum = new float[5];

    public static void main(String[] args)  throws Exception{

        Prog50 stud = new Prog50();

        stud.input();

        stud.output();

    }

    //输入学号、姓名、成绩

    void input() throws IOException{

        BufferedReader br = new  BufferedReader(new InputStreamReader(System.in));

        //录入状态标识

        boolean isRecord = true;

        while(isRecord){

            try{

  for(int i=0;i<5;i++){

                  System.out.print("请输入学号:");

                  number[i] = br.readLine();

                  System.out.print("请输入姓名:");

                  name[i] = br.readLine();

                  for(int j=0;j<3;j++){

                      System.out.print("请输入第"+(j+1)+"门课成绩:");

                      grade[i][j] = Integer.parseInt(br.readLine());

                  }

                  System.out.println();

                  sum[i] =  grade[i][0]+grade[i][1]+grade[i][2];

  }

  isRecord = false;

  }catch(NumberFormatException e){

                 System.out.println("请输入一个数字!");

  }

        }

    }

    //输出文件

    void output() throws IOException{

        FileWriter fw = new  FileWriter("E://java50//stud.txt");

        BufferedWriter bw = new  BufferedWriter(fw);

        bw.write("No.  "+"Name  "+"grade1  "+"grade2  "+"grade3  "+"average");

        bw.newLine();

        for(int i=0;i<5;i++){

  bw.write(number[i]);

  bw.write(" 

  "+name[i]);

  for(int j=0;j<3;j++)

  bw.write(" 

  "+grade[i][j]);

  bw.write(" 

  "+(sum[i]/5));

  bw.newLine();

        }

        bw.close();

    }

}

你可能感兴趣的:(50道JAVA编程算法题(三))