JAVASE《习题集》分支结构等

目录

一.选择题(多选题)

1.switch(){}结构中,括号中可使用的数据类型不能是(A D )。

A.long        B.int        C.short        D.float

二.编程题 

1.编写程序数一下 1到 100 的所有整数中出现多少个数字9

 2.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用“*”组成的X形图案。

输入:5

输出: *     *              * *                *                * *             *     *

3.完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。

Random random = new Random();int toGuess = random.nextInt(100);产生[0-100)之间的随机数

 4.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。

 5.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序

 6.输出一个整数的每一位,如:123的每一位是3,2,1。

 7.创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。

​ 要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算。

8.求斐波那契数列的第n项。(迭代实现)


一.选择题(多选题)

1.switch(){}结构中,括号中可使用的数据类型不能是(A D )。

A.long        B.int        C.short        D.float

long float double boolean 都不可以作为switch的参数

除了这些基本数据类型,后续说道的枚举,String也可以作为Switch的参数

故选择A D.

二.编程题 

1.编写程序数一下 1到 100 的所有整数中出现多少个数字9。

【思路】

本题主要考察,个位的9怎么判断,十位的9怎么判断?另外99是两个9。

public static void main(String[] args) {
    int count = 0;
    for (int i = 1; i <= 100; i++) {
        if(i % 10 == 9) {//判断个位的9 
            count++;
        }
        if(i/10 == 9) {
            count++;//判断十位的9
        }
    }
    System.out.println(count);
}

 2.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用“*”组成的X形图案。

输入:5

输出: *     *
              * * 
               *  
              * * 
            *     *

【思路】

mport java.util.*;

public class Main {
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {
            int n = scan.nextInt();
        
            for(int i = 0;i < n;i++) {
                for(int j = 0;j < n;j++) {
                    if(i == j) {
                        System.out.print("*");
                    }else if( i+j+1 == n) {
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
}


  


3.完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。

【思路】

Random random = new Random();
int toGuess = random.nextInt(100);产生[0-100)
之间的随机数

public static void main(String[] args) {
    Random random = new Random(); // 默认随机种子是系统时间
    Scanner sc = new Scanner(System.in);
    int toGuess = random.nextInt(100);
    //System.out.println("toGuess: " + toGuess);
    while (true) {
        System.out.println("请输入要输入的数字: (1-100)");
        int num = sc.nextInt();
        if (num < toGuess) {
            System.out.println("低了");
        } else if (num > toGuess) {
        	System.out.println("高了");
        } else {
        	System.out.println("猜对了");
        	break;
        }
    }
    sc.close();
}
  


 4.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。

【思路】

1. 从上述表达式可以分析出

  a. 该表达式主要由100项,基数项为正,偶数项为负

2. 设置一个循环从1~100,给出表达式中的每一项:1.0/i, 注意此处不能使用1,否则结果全部为0

  然后使用flag标记控制奇偶项,奇数项为正,偶数项为负

  然后将所有的项相加即可

public static void main(String[] args) {

    double sum = 0;
    int flg = 1;
    for (int i = 1; i <= 100; i++) {
        sum += 1.0/i * flg;
        flg = -flg;
    }
    System.out.println(sum);
}

 5.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序。

【思路】

本题注意考察,字符串怎么比较相同?使用方法equals。具体的原理会在String章节进行详细讲解。此处只是简单使用。

public static void main11(String[] args) {
	Scanner scanner = new Scanner(System.in);

	int count = 3;

	while (count != 0) {
		System.out.println("请输入你的密码:");
		String password = scanner.nextLine();

		//if(password == "123") { 这个判断相等是错误的,具体原因后续String章节进行讲解
		
        if(password.equals("123")) {
			System.out.println("登录成功!");
			break;
		}else {
			count--;
			System.out.println("你还有"+count+" 次机会!");
		}
	}
}

 6.输出一个整数的每一位,如:123的每一位是3,2,1。

【思路】

本题主要考虑,如何获取一个数字的每一位:

123 % 10 = 3

123/10=12 12%10=2

12/10=1 1%10= 1

public static void main(String[] args) {
	int n = 123;
	while (n != 0) {
		System.out.println(n % 10);
		n /= 10;
	}
}

 7.创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。

​ 要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算。

public static int max2(int a,int b) {
	return a > b ? a:b;
}

public static int max3(int a,int b,int c) {
	int max = max2(a,b);
	return max > c ? max : c;
}
public static void main(String[] args) {
	System.out.println(max3(2, 5, 1));
}

8.求斐波那契数列的第n项。(迭代实现)

【思路】

斐波那契数列定义为:1 1 2 3 5 8 13 21 我们可以看到,从第3项开始,都等于前一项+前一项的前一项的和。

3=1+2

5+2+3

13 = 5+8

我们可以先定义f1保存第一项的值,f2保存第2项的值,f3保存第3项的值。

每次算法一个f3,就同步更新f1和f2的值。

/**

   * 求菲薄那切数列的第n项

   * @param n

   * @return

   */

  public static int fib(int n) {
      if(n == 1 || n == 2 ) {
           return 1;
      }
      int f1 = 1;

      int f2 = 1;

      int f3 = 1;

      for (int i = 3; i <= n; i++) {

          f3 = f1+f2;

          f1 = f2;

          f2 = f3;

      }

      return f3;

  }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值