尚学堂java答案解析 第三章

本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改

一.选择题

1.A

2.BD

解析:switch的的判断表达式的数据类型:byte  short   int  char,注意case里的数据是int型,所以String并不行

3.A

解析:0+3+5=8

4.BD

解析:函数重载时对返回数据类型不做检查,但形参数量或类型必须变化,B和原函数是同一函数,D中形参数据个数和类型和原函数相同

5.B

解析:非静态变量,形参并不影响实参.

二,简答题

1.https://blog.csdn.net/wendy_yuanyuan/article/details/48138413

2.break是跳出循环,continue是直接进入下一次循环

3.使用break- label,先在循环之前加入一个label标签,然后break label;

4.定义:一个类中可以有多个相同名字的方法

   作用:行为多态

   判断依据:同方法名,不同的形参个数或数据类型

5.定义:方法自身调用自身

  优点:代码简洁,可以省去很多循环

  缺点:需要消耗大量计算机资源

三.编程题

1.

import java.util.Scanner;

public class Binary {
    public static void main(String[] args) {
        int decimal;
        String Sbinary;
        int  binary;

        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        decimal = input.nextInt();
        Sbinary = Integer.toBinaryString(decimal);
        binary  = Integer.parseInt(Sbinary);
        System.out.printf("二进制数为:%d",binary);

    }
}

2.

/**
第一种方法,简单,但没综合调用方法
*/
public class Sum {
    public static void main(String[] args) {
        int sum = 0;
        int step = 0;
        for(int i = 0; i <= 100; i++){
            step += i;
            sum += step;
        }
        System.out.println("sum:"+sum);

    }
}


/**
第二种方法,综合调用方法,还有一些static知识

*/
public class Sum {
    static int sum =0;//定义全局静态变量
    static int temp=0;
    public static void main(String[] args) {
       int i=1;
        for(;i<=100;i++){
            int t;
            t=callBack(i);
            System.out.printf("t:%d
",t);
       }


    }
    public static int  callBack(int i){//定义静态函数
        temp=sum;
        sum=sum+i;
        System.out.printf("sum:%d 	 temp:%d	",sum,temp);
        return temp+sum;
    }
}

3.斐波那契数列,通项公式 large x_{n} = x_{n-1}+x_{n-2}  large (n>=3)

public class Fibonacci {
    public static void main(String[] args) {
        int before = 0;
        int now = 1;

        Recursion recursion = new Recursion();

        System.out.println("第40个数:"+recursion.Recursion(before,now));

        //方法二
                int[] nums = new int[40];
		nums[0] = nums[1] = 1; //第一个和第二个不满足通项公式
		
		for (int i = 2; i < nums.length; i++) {
			nums[i] = nums[i-1] + nums[i-2]; 
		}
		
		System.out.println("nums:"+nums[nums.length-1]);



    }
}
class Recursion{

    int i=1;

    int Recursion(int before ,int now){ 

        if(i > 40){           //第几个数
            return before;
        }

//now(下一个斐波那契数)=now(上一个斐波那契数)+before(前两个斐波那契数)
         now += before; 

//before(前一个斐波那契数)=now(新的斐波那契数)-before(前两个斐波那契数)
        before = now -before;

        i++;

         return Recursion(before , now); //递归调用
    }
}
原文地址:https://www.cnblogs.com/jeasion/p/10758377.html