好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

java经典逻辑编程50题.docx

37页
  • 卖家[上传人]:F****n
  • 文档编号:102725929
  • 上传时间:2019-10-04
  • 文档格式:DOCX
  • 文档大小:88.59KB
  • / 37 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Java经典逻辑编程50题【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1) 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... (斐波那契数列)2) 参考代码import java.util.Scanner;public class RabbitNum {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);                 System.out.println("你想知道前几个月的兔子的数量");        int month = in.nextInt();                 int[] mon = new int[month];        if(month < 3){            System.out.println("第" + month + "个月有 1 对兔子,共 2 只");        }        else{            for(int i = 2; i < month; i++){                mon[0] = mon[1] = 1;                mon[i] = mon[i - 1] + mon[i - 2];                System.out.printf("第 %d 个月有 %d 对兔子,共 %d 只兔子\n", i + 1, mon[i], 2 * mon[i]);            }    }}【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。

      1 ) 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数 (java.lang.Math.sqrt(double a) 返回正确舍入的一个double值的正平方根)2) 参考代码public class Prime {    public static void main(String[] args) {        System.out.print("101--200中的素数有:");        for(int i = 101; i <= 200; i++){            if(isPrime(i))                System.out.print(" " + i);        }    }     //isPrime方法用来判断一个数是否是素数    private static boolean isPrime(int i) {        for(int j = 2; j <= Math.sqrt(i); j++){            if(i % j == 0)                return false;        }        return true;    }}【程序3】 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。

      例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方1 ) 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位 2) 参考代码public class NarcissisticNum {    public static void main(String[] args) {        System.out.print("水仙花数有:");        for(int num = 100; num < 1000; num++){            if(isNarcissisticNum(num))                System.out.println(" " + num);        }    }     //一个判断正整数是否为水仙花数的方法    private static boolean isNarcissisticNum(int num) {        // TODO Auto-generated method stub        int a = num / 100;          //分离出百位 a        int b = (num / 10) % 10;    //分离出十位 b        int c = num % 10;           //分离出个位 c        int sum = a * a * a + b * b * b + c * c * c;        if(sum == num)            return true;        else            return false;    }}【程序4】 题目:将一个正整数分解质因数。

      例如:输入90,打印出90=2*3*3*5 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可 (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步 参考代码:import java.util.Scanner; public class PrimeFactorOfInteger {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);                 System.out.println("请输入一个大于 3 的正整数");        int num = input.nextInt();        System.out.print(num + "的素因数:");        factor(num);    }     private static void factor(int num) {        for(int i = 2; i <= Math.sqrt(num); i++){            if(num % i == 0){                System.out.print(i + " * ");                if(isPrime(num / i)){                    System.out.println(num / i);                }                else                    factor(num / i);                break;            }        }    }     private static boolean isPrime(int i) {        for(int j = 2; j <= Math.sqrt(i); j++){            if(i % j == 0)                return false;        }        return true;    }}【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

       1. 程序分析:(a> b)?a:b这是条件运算符的基本例子 参考代码import java.util.Scanner; public class ConditionalOperator {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);                 System.out.println("请输入你的分数");        int score = in.nextInt();                 if(score >= 90){            System.out.println("A  恭喜");        }        else if(score >= 60){            System.out.println("B  不错");        }        else{            System.out.println("C  加油");        }    }}【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

       1.程序分析:利用辗除法 参考代码import java.util.Scanner; public class Example6 {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);                 System.out.println("请输入第一个数");        int a = in.nextInt();        System.out.println("请输入第二个数");        int b = in.nextInt();                 System.out.println("这两个数的最大公约数是 " + MaxCommonDivisor(a, b));        System.out.println("这两个数的最小公倍数是 " + MinCommonMultiple(a, b));    }     private static int MaxCommonDivisor(int a, int b) {        if(a < b){            int temp = a;            a = b;            b = temp;        }        while(a % b != 0){            int temp = a % b;            a = b;            b = temp;        }        return b;    }     private static int MinCommonMultiple(int a, int b) {     return a * b / MaxCommonDivisor(a, b)。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.