Java算法题挑战 Third day

算法题打卡第三天:11 - 15题

第十一题

  1. 问题描述:
    利用递归函数调用方式,将所输入的n个字符,以相反顺序打印出来

  2. 代码块:

import java.util.Scanner;
public class str1 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String str = in.nextLine();
            func(str, str.length());
        }
    }
    public static void func(String s, int len){
        if(len == 0)
            return;
        System.out.print(s.charAt(len - 1));
        func(s,len - 1);
    }
}
  1. 个人思路方法:
    应题目要求用递归去求解,这题是对递归用法的巩固,很基本的一个递归题,我的思路和斐波那契数求解思路基本一样,通过输入字符串,给func()函数传入字符串和其的长度,然后通过长度-1先输出最后的数,逐步去输出字符串的每项。

第十二题

  1. 问题描述:
    输出 n*n 乘法口诀表。

输出格式要求:
在这里插入图片描述
2. 代码块:

import java.util.Scanner;
public class nine_nine {
    public static void main(String[] args) throws Exception
    {
        Scanner in = new Scanner(System.in);
        while (in.hasNext())
        {
            int n = in.nextInt();
            int num = 0;
            int i,j;
            for ( i=n;i>=1;i--)
            {
                for ( j=i;j<=n;j++)
                {
                    num = i*j;
                    System.out.printf("%d*%d==%d",i,j,num);
                    System.out.print(" ");
                }
                System.out.println();
            }
        }
    }
}
  1. 个人思路方法:
    乘法表打印和其他打印图形题很类似,用for循环进行双重遍历就可以达到效果,但是这题需要达到题目中给出的效果图,就需要对遍历先后的值进行特定赋值。

第十三题

  1. 问题描述:
    暂停一秒输出(延迟一秒输出值)
  2. 代码块:
import java.util.Scanner;
public class stop {
    public static void main(String[] args) throws InterruptedException {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        double num = (double)n*n;
        Thread.sleep(1000);
        System.out.println(num);
    }
}
  1. 个人思路方法:
    这题我的方法是直接使用Java中的Thread.sleep()去是线程睡眠一秒完成。

第十四题

  1. 问题描述:
    一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

  2. 代码块:

import java.util.Random;
import java.util.Scanner;
public class solve_num {
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        Random random = new Random();
        int num = random.nextInt(10000);
        //System.out.println(num);
        double m ,n;
        for (int i=0;i<num;i++)
        {
            m=Math.sqrt(i+100);
            n=Math.sqrt(i+100+168);
            if( m == (int)m && n ==(int)n)
            {
                System.out.println(i);
            }
        }
    }
}
  1. 个人思路方法:
    我的思路很简单,也是大部分人都会想到的思路,根据在一段范围中的数,去遍历求出能满足题目条件中的数。

第十五题

  1. 问题描述:
    输入某年某月某日,判断这一天是这一年的第几天?
    判断一个正整数是否是两位数(即大于等于 10且小于等于 99)。
  2. 代码块:
import java.util.*;
public class Main{
    public static void main(String[] args)
    {
        Scanner in =new Scanner(System.in);
        int n=in.nextInt();
        if(n>=10&&n<=99)
        {
            System.out.print(1|1);
        }else
        {
            System.out.print(1&0);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值