算法题打卡第三天:11 - 15题
第十一题
-
问题描述:
利用递归函数调用方式,将所输入的n个字符,以相反顺序打印出来 -
代码块:
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);
}
}
- 个人思路方法:
应题目要求用递归去求解,这题是对递归用法的巩固,很基本的一个递归题,我的思路和斐波那契数求解思路基本一样,通过输入字符串,给func()函数传入字符串和其的长度,然后通过长度-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();
}
}
}
}
- 个人思路方法:
乘法表打印和其他打印图形题很类似,用for循环进行双重遍历就可以达到效果,但是这题需要达到题目中给出的效果图,就需要对遍历先后的值进行特定赋值。
第十三题
- 问题描述:
暂停一秒输出(延迟一秒输出值) - 代码块:
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);
}
}
- 个人思路方法:
这题我的方法是直接使用Java中的Thread.sleep()去是线程睡眠一秒完成。
第十四题
-
问题描述:
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? -
代码块:
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);
}
}
}
}
- 个人思路方法:
我的思路很简单,也是大部分人都会想到的思路,根据在一段范围中的数,去遍历求出能满足题目条件中的数。
第十五题
- 问题描述:
输入某年某月某日,判断这一天是这一年的第几天?
判断一个正整数是否是两位数(即大于等于 10且小于等于 99)。 - 代码块:
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);
}
}
}