经典例题整理归纳

Posted 王嘻嘻-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典例题整理归纳相关的知识,希望对你有一定的参考价值。

  1.  猜数字
  2. 判断闰年
  3. 输出 1000 - 2000 之间所有的闰年
  4. 计算1-100中出现9的个数。
  5. 判断素数
  6. 输出100以内所有素数
  7. 输出0~999之间的所有水仙花数
  8. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
  9. 求两个正整数的最大公约数
  10. 模拟三次密码输入的场景
  11. 写一个递归按顺序输出一个整数的每一位
  12. 写一个递归实现5!
  13. 求两数或三数最大值
  14. 交换两个常量的值
  15. 计算从1~num的累加和

猜数字

public class test 
    public static void main(String[] args) 
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();//随机种子
        int guess = random.nextInt(100);//随机生成一个0~100的整数
        System.out.println(guess);
        System.out.println("请输入数字:");
        while(scanner.hasNextInt())    //判断输入是否为int,是为true
            int toGuess=scanner.nextInt();
            if (toGuess > guess) 
                System.out.println("大了");
             else if (toGuess < guess) 
                System.out.println("小了");
             else 
                System.out.println("猜对了~");
                break;
            
        
    

判断闰年

public class test 
    public static void main(String[] args) 
        //闰年:能被400整除的是世纪闰年 ;能被4整除,但不能被100整除的是普通闰年。
        int year=2000;
        if(year%100==0)
            if(year%400==0)
                System.out.println(year+"是世纪闰年");
            
        else 
            if(year%4==0)
                System.out.println(year+"是普通闰年");
            
            else
                System.out.println("不是闰年");
            
        
    

输出 1000 - 2000 之间所有的闰年

public class test 
    public static void main(String[] args) 
// 输出 1000 - 2000 之间所有的闰年
        int count=0;
        for (int year = 1000; year <= 2000; year++) 
            if(year%100==0)
                if(year%400==0)
                    System.out.print(year+" ");
                    count++;
                
            else
                if(year%4==0)
                    System.out.print(year+" ");
                    count++;
                
            
        
        System.out.println(count);
    

编写一个程序计算数字1-100中出现9的个数。

public class test 
    public static void main(String[] args) 
//编写一个程序计算数字1-100中出现9的个数。
        //整数有两种 1位数 2位数
        int count=0;
        for (int i = 0; i < 100; i++) 
            //计算个位出现9的个数
            if(i%10==9)
                count++;
            
            //计算十位出现9的个数
            if(i/10==9)
                count++;
            
        
        System.out.println("100以内9的个数有"+count+"个"); //20个
    

判断素数

//法一
public class test 
    public static void main(String[] args) 
      Scanner scanner = new Scanner(System.in);
        boolean isPrime = true;//标记位
        while (scanner.hasNextInt()) 
            int num = scanner.nextInt();
            for (int i = 2; i < num; i++) 
                if (num % i == 0) 
                    System.out.println("不是素数");
                    isPrime = false;
                
            
            if (isPrime) 
                System.out.println("是素数");
            
        
    

//法二
//public class test 
//    public static void main(String[] args) 
//      Scanner scanner = new Scanner(System.in);
//        boolean isPrime = true;
//        while (scanner.hasNextInt()) 
//            int num = scanner.nextInt();
//            // 走到平方根
//            for (int i = 2; i <= Math.sqrt(num); i++) 
//                if (num % i == 0) 
//                    System.out.println("不是素数");
//                    isPrime = false;
//                
//            
//            if (isPrime) 
//                System.out.println("是素数");
//            
//        
//    
//

 输出100以内所有素数

public class test 
    public static void main(String[] args) 
      // 输出100以内所有素数
        for (int i = 2; i <= 100; i++) 
            boolean isPrime = true;
    //求素数
            for (int j = 2; j <= Math.sqrt(i) ; j++) 
                if(i%j==0)
                    isPrime = false;
                
            
            if (isPrime)
                System.out.print(i+" ");
            
        
    

求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,
其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,
则153是一个“水仙花数“。)
public class test 
    public static void main(String[] args) 
           for (int i = 100; i < 1000; i++) 
            int gewei = i%10;
            int shiwei = i/10%10;
            int baiwei = i/100;
            int sum = (int)(Math.pow(gewei,3)+Math.pow(shiwei,3)+Math.pow(baiwei,3));//强转
            if(sum==i)
                System.out.println(sum);
            
        
    

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

public class test 
    public static void main(String[] args) 
     //        计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
        int a=1;
        double sum=0.0;
        for (int i = 1; i <= 100; i++) 
            sum+=1.0/i*a;
            a=-a;
        
        System.out.println(sum);
    

求两个正整数的最大公约数

public class test 
    public static void main(String[] args) 
        //求两个正整数的最大公约数
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入两个数字 ");
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        //辗转相除法
        // max min r
        // r = max % min;
        // r = 0; return min
        int max=Math.max(a,b);
        int min=Math.min(a,b);
        int r=max%min;
        while(r!=0)
            max=min;
            min=r;
            r=max%min;
        
        System.out.print("最大公约数是:"+min);
    

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

    public class test 
    public static void main(String[] args)  
        String password="1234567";
        System.out.println("请输入密码 ");
        Scanner scanner=new Scanner(System.in);
        int count=1;
       while(scanner.hasNext())
            String str=scanner.next();
            //比较字符串 equals
             if(str.equals(password)) 
                 System.out.println("登陆成功~");
                 break;
             
            if(count<3)
                System.out.println("密码错误,请正确输入密码");
            
            if(count==3)
                System.out.println("输入错误次数已达三次,银行卡已冻结");
                break;
            else
                 count++;
            
        
    

按顺序输出一个整数的每一位,如:1234的每一位是1 2 3 4(递归)

public class homework 
    public static void main(String[] args) 
        int num=1234;
        print(num);
    
    public static void print(int num)
        if(num>10)
            print(num/10);
        
        //此时num最高位找到了 %10是为了保留其他位
        System.out.println(num%10+" ");
    

写一个递归实现5!

 public class homework 
    public static void main(String[] args)  
        System.out.println(factor(5));
   
    public static int factor(int num)
        //终止条件
        if(num==1)
            return num;
        
        return num*factor(num-1);
    

求两数或三数最大值

 public class homework 
    public static void main(String[] args) 
        System.out.println(max(1,3));
        System.out.println(max(3,6,45));
      
  //方法重载 
    public static int max(int a,int b)
        return a>b?a:b;
    
    public static int max(int a,int b,int c)
        int tepmax=max(a,b);
        int max=max(tepmax,c);
        return max;
    

交换两个常量

public class homework 
    public static void main(String[] args) 
        int a=10;
        int b=20;
        swap(a,b);
        System.out.println(a);
        System.out.println(b);
        int[] arr=new int[2];
        arr[0]=a;
        arr[1]=b;
        swap(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
    
 private static void swap(int[] arr) 
        int tmp=arr[0];
        arr[0]=arr[1];
        arr[1]=tmp;
    
    public static void swap(int a,int b)
        int tmp=a;
        a=b;
        b=tmp;
    

定义一个方法,传入一个num的值,就可以计算从1——num的叠加。例如计算1+2+3+4+5

public class homework 
    public static void main(String[] args) 
     int num=5;
        System.out.println(add(5));
    
     public static int add(int num)
        if(num==1)
            return 1;
        
        return num+add(num-1);
    

以上是关于经典例题整理归纳的主要内容,如果未能解决你的问题,请参考以下文章

心得单调队列

算法竞赛入门经典 例题 3-4 回文串

C语言第二章数据类型及其运算重点要点归纳

离散:常用排列组合模型归纳,DFS代码实现

Unity中HLSL代码块的基本知识归纳整理

关于指针的一些经典例题详解