JavaSE-习题-循环结构等

第 1 题(编程题)

题目名称:

打印 X 图形

题目内容:

https://www.nowcoder.com/practice/83d6afe3018e44539c51265165806ee4

假设i代表行,j代表列,当i==j 或者 i+j+1 == n,此时为星号。其余的都是空格。

如图, 把它想成平面直角坐标系, 发现i==j或i+j==n的时候, 分别是两根直线关于横纵坐标轴的方程表达式

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    if(i==j || i + j == n-1 ){
                        System.out.print("*");
                    }
                    else{
                        System.out.print(" ");
                    }
                }
                System.out.println(" ");
            }
        }
    }
}

第 2 题(编程题)

题目名称:

计算分数的值

题目内容:

计算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);
}

第 3 题(编程题)

题目名称:

输出一个整数的每一位

题目内容:

输出一个整数的每一位,如: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;
	}
}

第 4 题(编程题)

题目名称:

模拟登陆

题目内容:

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

本题注意考察,字符串怎么比较相同?使用方法equals。

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

        int count = 3;
        while (count != 0){
            System.out.print("请输入>");
            String password = in.nextLine();
            count--;
            if(password.equals("123abc")){
                System.out.println("密码正确 登陆成功");
                break;
            }
            else {
                System.out.println("密码错误");
                System.out.println("剩余" + count +"次机会");
            }
        }
        if (count == 0){
            System.out.println("机会耗尽 登录失败");
        }
    }

第 5 题(编程题)

题目名称:

使用函数求最大值

题目内容:

创建方法求两个数的最大值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));
}

第 6 题(编程题)

题目名称:

斐波那契数列

题目内容:

求斐波那契数列的第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的值。

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;

  }

第 7 题(编程题)

题目名称:

求和的重载

题目内容:

在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果

重载满足的几个条件:

  1. 方法名相同
  2. 参数列表不同(数据类型,个数,顺序)
  3. 返回值无关
    public static int sum(int a,int b) {
        return a+b;
    }
    
    public static double sum(double a,double b,double c) {
        return a+b+c;
    }

第 8 题(编程题)

题目名称:

求最大值方法的重载

题目内容:

在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?

重载:

  1. 方法名相同
  2. 参数列表不同(数据类型,个数,顺序)
  3. 返回值无关

本题可以借助Java原生类Math当中的max方法求最大值,当然也可以自己通过If else进行比较。

Math的使用 不需要导入相关的包

public static int max(int a,int b) {
    return Math.max(a,b);
}

public static double max(double a,double b,double c) {

    double m = Math.max(a,b);
    return Math.max(m,c);
}

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值