编程基础题-2

来源:互联网 发布:凯文淘宝店 编辑:程序博客网 时间:2024/06/14 23:14

2017/05/10

题目4:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

分析
 用90从2开始除,如果能整除,则将得到的结果继续从2开始除,直到除数等于结果。
解答

public class chapter4 {    public static void main(String[] args) {        Scanner scn = new Scanner(System.in);        int input = scn.nextInt();        decompose(input);    }    private static void decompose(int input){        int tem = input;        System.out.print(input+"=");        boolean flag =true;        while(flag){   //其实这里想复杂了            for (int i = 2; i <= tem; i++) {                if(tem%i ==0 && i!=tem){                    tem = tem/i;                    System.out.print(i+"*");                    break;                }                if(tem==i){                    flag = false;                    System.out.println(i);                }            }        }    }}

结果:

9090=2*3*3*5

心得
 注意下面的参考答案,比我的想法更加简单~

private static void decompose(int n){        System.out.print(n+"=");        for(int i=2;i<n+1;i++){            while(n%i==0 && n!=i){                n/=i;                System.out.print(i+"*");            }            if(n==i){                System.out.println(i);                break;            }        }    }

===========================================================================

题目5:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

分析
 简单
解答

public class chapter5 {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        System.out.print("Please input the grade:");        System.out.println("学习成绩为:"+getGrade(input.nextInt()));    }    private static char getGrade(int grade){        char level;        if(grade >100 || grade < 0){            System.out.println("input error!");            level = 'E';        }        else if(grade >= 90){            level = 'A';        }        else if(grade >= 60){            level = 'B';        }        else{            level = 'C';        }        return level;    }}

结果:

Please input the grade:90学习成绩为:A

心得
 注意考虑多种输入情况~
参考答案
更简洁且更合理!

public class Prog5{    public static void main(String[] args){        int n = -1;        try{            n = Integer.parseInt(args[0]);        }catch(ArrayIndexOutOfBoundsException e){            System.out.println("请输入成绩");            return;        }        grade(n);    }    //成绩等级计算    private static void grade(int n){        if(n>100 || n<0)          System.out.println("输入无效");        else{          String str = (n>=90)?"分,属于A等":((n>60)?"分,属于B等":"分,属于C等");          System.out.println(n+str);        }    }}

===========================================================================

题目6:输入两个正整数m和n,求其最大公约数和最小公倍数。

分析
 简单
解答

public class chapter6 {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        System.out.print("Please input a number n: ");        int n = input.nextInt();        System.out.print("Please input another number m: ");        int m = input.nextInt();        max_yues(n,m);        min_beis(n,m);    }    private static void min_beis(int n, int m) {        int max = (n<=m?m:n);        System.out.print(m+"和"+n+"的最小公倍数为:");        for(int i = max ; i <= n*m ;i++){            if(i%n == 0 && i%m == 0){                System.out.println(i);                break;            }        }    }    private static void max_yues(int n, int m) {        int min = (n<=m?n:m);        System.out.print(m+"和"+n+"的最大公约数为:");        for (int i = min; i >= 1 ; i--) {            if(n%i == 0 && m%i == 0){                System.out.println(i);                break;            }        }    }}

结果:

Please input a number n: 20Please input another number m: 505020的最大公约数为:105020的最小公倍数为:100

心得
 注意别犯小错,争取一次编译通过。

0 0
原创粉丝点击