'); } 罗宏昆JAVA作业 | Ternence

罗宏昆JAVA作业


罗宏昆JAVA作业

所有程序均是自己一个一个敲进去,类名work3_2代表第三章第二题的求解结果,求解环境为IDEA。

IDEA.png

第二章

1、 用移位运算实现求2的x次方。

//导入扫描库
import java.util.Scanner;

public class work2_1 {
    public static void main(String [] args){
        Scanner input =new Scanner(System.in);
           //判断是否有输入数据,如果有输入数据就进行扫描
        while(input.hasNext()){
            //读取输入的数据,并且赋值给n
            int n = input.nextInt();
            //为什么是n-1呢,因为比方输入1,移位之前原本是10,
            // 现在变成100,就是2的2次方,并不是按照1次放算的
            int num = 2 << n-1;
            System.out.println(num);
        }
    }
}

输出结果

result.png

2、 用按位与运算,取模运算、判断一个数是否为奇数。

import java.util.Scanner;
public class work2_2 {
    public static void main(String [] args){
        //实例化输入对象
        Scanner input =new Scanner(System.in);
        //实例化调用函数的对象
        work2_2 a=new work2_2();
        //isOddNumber为判断是不是奇数的函数
        int int1=input.nextInt();
        boolean b=a.isOddNumber(int1);
        if(b==true){
            System.out.println(int1+"是奇数");
        }
        else
            System.out.println(int1+"是偶数");
    }
    public Boolean isOddNumber(int integer){
        if ((integer&1)==1)//如果和1按照与运算是真,那么就是奇数
        {
          return true;
        }
        return false;
    }
}

输出结果

result.png

1668354927469.png

3、 判断一个数是否是2的n 次幂

import java.util.Scanner;

public class work2_3 {
    public static void main(String [] args) {
        //实例化输入对象
        Scanner input = new Scanner(System.in);
        work2_3 a=new work2_3();
        //四个测试数据
        int int1=input.nextInt();
        int int2=input.nextInt();
        int int3=input.nextInt();
        int int4=input.nextInt();
        //分别输出
        System.out.println(a.isTwoPower(int1));
        System.out.println(a.isTwoPower(int2));
        System.out.println(a.isTwoPower(int3));
        System.out.println(a.isTwoPower(int4));

    }
    public boolean isTwoPower(int n) {
        return n > 0 && (n & (n - 1)) == 0;
    }
}

输出结果

result.png

第三章

1、 计算多项式1!+2!+3!…+n!,当多项式之和超过10000时停止,并输出累加之和以及n的值。

import java.util.Scanner;

public class work3_1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        work3_1 a = new work3_1();
        //定义全局变量
        int sum = 0;
        int i=1;
        //进行循环计算
       while (sum<=10000) {
           sum = sum + a.factorial(i);
           i = i + 1;
       }
       //输出计算结果
       System.out.println(sum);
       System.out.println(i-1);
    }
    //计算阶乘的函数
    public int factorial(int i) {
        if (i == 1)
            return i;
        else
            return i * factorial(i - 1);
    }
}

输出结果

result.png

2、 从标准输入端输入一个字符,判断字符是数字、还是西文字母还是其他的字符。

import java.util.Scanner;

public class work3_2 {
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入字符");
        //charAt函数为返回索引处的字符
        char ch = input.next().charAt(0);
        if (ch >= 65 && ch <= 90) {
            System.out.println(ch + " 是 " + "大写字母");
        } else if (ch >= 97 && ch <= 122) {
            System.out.println(ch + " 是 " + "小写字母");
        } else if (ch >= '0' && ch <= '9') {
            System.out.println(ch + " 是 " + "数字");
        } else {
            System.out.println(ch + " 是 " + "其他字符");
        }
    }
}

输出结果

result.png

result.png

result.png

3、 利用辗转相除法(欧几里得算法)求两个正整数的最大公约数

import java.util.Scanner;

public class work3_3 {
    public static void main(String [] args){
        Scanner input =new Scanner(System.in);
        System.out.println("请输入测试数据:");
        //先实例化对象,方便调用函数
        work3_3 a=new work3_3();
        //读取两个输入的整数
        int int1=input.nextInt();
        int int2=input.nextInt();
        System.out.println(work3_3.solution(int1,int2)+"为两个整数的最大公约数");
    }
    //求最大值函数
    public static int maxint(int a,int b){
        if(a>b)
            return a;
        else
            return b;
    }
    //最小值函数
    public static int minint(int a,int b){
        if(a<b)
            return a;
        else
            return b;
    }
    //辗转相除法的函数
    public  static int solution(int a,int b){
        //如果取余数为0,返回除数,也就是不进入循环
        //如果余数不是0,进行辗转相除
        while (a%b!=0){
            int c;
            c=a%b;
            a= work3_3.maxint(b,c);
            b= work3_3.minint(b,c);
        }
        return b;
    }
}

输出结果

result.png

4、 假设一个数在1000到1100之间,那除以3结果余2,;除以5结果余3,;除以7结果余2(中国剩余定理),求此数。

import java.util.Scanner;

public class work3_4 {
    public  static  void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int i;
        //直接暴力循环
        for(i=1000;i<=1100;i++){
            if(i%3==2&&i%5==3&&i%7==2)
                break;
        }
        System.out.println(i);

    }
}

输出结果

result.png

5、 小球从100米高度自由落下,每次触地后反弹到原来高度的一半,求第10次触地时经历的总路程以及第10次反弹高度。

import java.util.Scanner;

public class work3_5 {
    public  static  void main(String[] args){
        //i代表反弹i次
        //height代表第i次反弹之后的高度
        //sum_h代表累计路程
        float height;
        int i;
        float sum_h=0;
        //求第10次的结果所以i<10,100次就是i<100
        for(i=0,height=100;i<10;i++)
        {
            sum_h=sum_h+height;
            height=height/2;
        }
        System.out.println(sum_h);
        System.out.println(height);
    }
}

输出结果

result.png


文章作者: 罗宏昆
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 罗宏昆 !
评论
  目录