java基础练习题

来源:互联网 发布:联合作战指挥体系 知乎 编辑:程序博客网 时间:2024/05/16 11:51
1.一个10位进制的数用2进制表示打印出来。

2进制:   0b  或0B  大小写都行。
8进制:   0.    输入的大于9就报错,
                     因为是8进制。
16进制:  0x  或0X 大小写都可。


2.求100-200的素数并打印出来。  

public static void main(String[] args) {
        boolean flag = true;
        //是素数的个数,初始值为0;
        int count = 0;
        //100~200的范围,定义一个int型变量赋初始值。
        int digit = 101;
        //for循环,依次从100到200进行循环运算。
        for (; digit <= 200; digit++) {
        //嵌套for语句,数值i用    选择语句( i <= Math.sqrt(digit);),从
            //2开始到他本身进行比较运算。
            for (int i = 2; i <= Math.sqrt(digit); i++) {
                //判断语句,当i的值为0时,说明这个数本身不是素数。
                if (digit % i == 0) {
                    //
                    flag = false;
                    //跳出跟他最近 的for循环
                    break;
                }
            }
            //如果不是假,那就是真,运行下面的程序。
            if (flag)
                //当flag为真时,就是一个素数,进行输出这个数,并且个数加  1;
                System.out.println(digit + "* " + (++count));
                flag = true;
        }

    }

}
结果如下图:




int      min=(int)(Math。pow(10,length-1));
int      max=(int)(Math。pow(10,length)-1);

3.求3位数的水仙花数       abc=a*a*a+ b*b*b+ c*c*c
int res=0;
        for(int i=100;i<=999;i++){
            int k=i;
            while(k>=1){
                int bit=k%10;
                res=res+bit* bit * bit;
                        k=k/10;

            }
            if(res==i)
                System.out.println(i);
            res=0;
        }

    }
结果为:




4.求n位的水仙花数。
        int length=new Scanner(System.in).nextInt();
        int res=0;

        int min=(int)Math.pow(10, length-1);
        int max=(int)(Math.pow(10, length)-1);
        //三位数的遍历
        for(int i=min;i<=max; i++){
            int k=i;
            //while里面的每个数都分解成单个的数
            while (k>=1){
                int bit=k%10;
                res=(int) (res+Math.pow(bit, length));//水仙花数的计算公式。
                k=k/10;
            }if(res==i)
                System.out.println(i);
            res=0;
        }
    }

10.1进制转换成2进制的程序。
    int digit =23;
        String res="";
        while (digit >0){
            int sth=digit %2;
            res=res+sth;
            digit=digit/2;
        }
        System.out.println(res);  
        //输出字符串的字节数。     
        System.out.println(res.length());
         //反向输出
        for(int i=res.length()-1;i>=0;i--)
            System.out.print(res.charAt(i));
    }

}

10.2进制转换成2/8/16进制的程序。
//程序bug:16进制输出的结果不对。
    public static void main(String[] args) {
        System.out.println("输入一个数:");
        int digit=new Scanner(System.in).nextInt();
        System.err.println("输入要转成的进制");
        int jinzhi=new Scanner(System.in).nextInt();
        switch(jinzhi){
        case 2:
            ten2x(digit, jinzhi);
            break;
        case 8:
            ten2x(digit, jinzhi);
            break;
        case 16:
            ten2x(digit, jinzhi);
            break;
        }                
    }
//子方法模块:
    public static void ten2x(int digit, int jinzhi) {
        String res = "";
        while (digit > 0) {
            int sth = digit % jinzhi;
            res = res + sth;
            digit = digit / jinzhi;
        }
        for (int i = res.length() - 1; i >= 0; i--)
            System.out.print(res.charAt(i));
        System.out.println();
    }
}


10.3
11.    //对于2进制,左移n位,数字扩大2的n次方倍,右移n位,数字缩小2的n次方倍。
//移位比普通的+ —运算速度快的多。
public static void main(String[] args) {
    System.out.println(16<<2);
    System.out.println(16>>2);
}

}


10.4  

//   1 1 2 3 5  8  13   21   .....费波纳切数列。第n个月的兔子对数
public class Demo1 {
    public static void main(String[] args) {
        int total = 0;
        int month = 7;
        int a = 1;
        int b = 1;

        if (month == 1)
            total = 1;
        else if (month == 2)
            total = 1;
        for (int i = 3; i <= month; i++){
            total = a + b;
        a = b;
        b = total;
        }System.out.println(total);
    }

}

0 0
原创粉丝点击