Java编程题(5)

这是我第5次给大家分享题,如果想看看以前的例题,请点开我的博客,查看作业分栏。谢谢收看。

今天我们来看一些关于流程控制语句的例题,循环是我们经常能使用到的。下面就一起来看下题吧。

Demo03_17

在这里插入图片描述
看这个题之前,我们要了解一个知识点
什么是素数 就是除了1和其本身之外 没有其他的数字可以整除的
假如这个数是num,那么m是2~num之间的一个数,
如果这个数字m 满足:num%m==0那么 num不是素数
如果一个都没有找到的话 这个数字是素数这就是我的思路
下面是我的代码演示:

class Demo03_17{
    public static void main(String[] args){
        int count=0;  //当前素数的个数
        boolean flag=true;
        for(int num=2;num<=1000;num++){
            for(int m=2;m<=num-1;m++){
                if(num%m==0){
                    flag=false;
                    break;
                }
            }
            if(flag){
                count++;
                System.out.print(num+" ");
                if(count%8==0){ //8 16 24 32
                    System.out.println();
                }
            }
            flag=true;
        }
    }
}

Demo03_18

在这里插入图片描述
这个题就是一个不停的for循环,输入多少次,就循环多少下,每次都套公式,
没啥难度,
这里有个小技巧,就是你看他分子,是一个次幂运算,这个运算在电脑上运行时等到数字大了,有可能会卡顿,计算机没算过来,如果把他改成每运行一次换个符号的话,你就发现,计算快多了。
下面是代码:

import java.util.Scanner;
class Demo03_18{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int imax=scanner.nextInt();
        double sum=0;
        double flag=1;
        for(int i=1;i<=imax;i++){
            //sum+=Math.pow(-1.0,i+1);/(2*i-1);
            sum+=flag/(2*i-1);
            flag=-flag;
        }
        double pi=sum*4;
        System.out.println(pi);
        // 累乘 Math.pow(-1.0,i+1) for -1*-1*-1....
    }
}

Demo03_19

在这里插入图片描述
这个题跟上面那个题基本上差不多,就是运算公式不一样。这个简单,在for里面改的话,不难
下面时代码:

import java.util.Scanner;
class Demo03_19{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int imax=scanner.nextInt();
        double e=1;
        double item=1.0;
        for(int i=1;i<=imax;i++){
            item=item*i;    //n!=(n-1)*n;
            e+=1/item;
        }
        System.out.println(e);
    }
}

Demo03_20

在这里插入图片描述
这个题在我上一个题集里面有个同类型的
看这个题,我们要先了解下什么是闰年。
闰年分为普通闰年和世纪闰年。
普通闰年:公历年份是4的倍数的,且不是100的倍数,为闰年。;
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年;
这就是闰年的基本概念,下面就简单了。
1给个条件
2满足条件的输出
3在换行就行了。
下面是代码:

class Demo03_20{
    public static void main(String[] args){
        int count=0;
        for(int i=101;i<=2100;i++){
            if(i%4==0&&i%100!=0 || i%400==0){
                count++;
                System.out.print(i+" ");
                if(count%10==0){
                    System.out.println();
                }
            }
        }
        System.out.println("\n闰年一共"+count+"个");
    }
}

Demo03_21

在这里插入图片描述
这个题就是:
1.先做个6~10000的for循环
2.在循环中加一个for循环,从1~这个数的一半
3.通过运算规则,找出符合条件的数
下面是我的代码:

class Demo03_21{
    public static void main(String[] args){
        int sum=0;
        for(int n=2;n<=10000;n++){   
            for(int i=1;i<=n/2;i++){
                if(n%i==0){
                    sum+=i;
                }
            }
            if(n==sum){
                System.out.println("完全数"+n);
            }
            sum=0;
        }
    }
}

Demo03_22

在这里插入图片描述
这个题在上一个题集里也出现过,无非就是加了个条件,多建立两个数,当有一个数等于二了,游戏再结束,输出语句,
下面就是我的代码:

import java.util.*;
class Demo03_22{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        Random random=new Random();
        int usrWin=0;
        int comWin=0;
        while(true){
            System.out.print("请输入剪刀0 石头1布2:");
            int usr=scanner.nextInt();
            int com=random.nextInt(3);
            String usrStr = "";
            String comStr = "";
            switch(usr){
                case 0:
                    usrStr = "scissor"; 
                    break;
                case 1:
                    usrStr = "rock";
                    break;
                case 2:
                    usrStr = "paper";
                    break;
            }
            switch(com){
                case 0: 
                    comStr = "scissor"; 
                    break;
                case 1:
                    comStr = "rock";
                    break;
                case 2:
                    comStr = "paper";
                    break;
            }
            if(usr==com){
                System.out.printf("The computer is %s.you are %s too.It is a draw\n",comStr,usrStr);
            }else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
                System.out.printf("The computer is %s.you are %s.You won\n",comStr,usrStr);
                usrWin++;
            }else{
                System.out.printf("The computer is %s.you are %s.You lost\n",comStr,usrStr);
                comWin++;
            }
            if(usrWin==2||comWin==2){
                break;
            }
        }
        if(usrWin==2){
            System.out.println("最终玩家赢!");
        }else{
            System.out.println("最终电脑赢!");
        }
    }
}

Demo03_23

在这里插入图片描述
这个题,你要知道十进制转二进制到底要咋转:
就是把一个十进制的数字,不停的除以2,得到一个余数,记录下来,还得到一个结果,再把结果除以2,在得到一个余数,一个结果,不停除,直到结果到0为之,停止运算,把每一个余数从后往前,依次写出来,就是他的二进制。
知道这个以后,你就可以实施你的程序。
下面是我的代码:

import java.util.Scanner;
class Demo03_23{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num=scanner.nextInt();
        String binStr="";
        while(true){
            binStr=num%2+binStr;//"1100"
            num/=2;
            if(num==0){
                break;
            }
        }
        System.out.println(binStr);
    }
}

Demo03_24

在这里插入图片描述这个题就是要你熟练运用赋值跟比较,要理解啥时候该给谁赋值,适当的,每多出现一个,给这个数的count+1;就完事了,看着很长,其实非常的简单,
下面是我的代码:

import java.util.Scanner;
class Demo03_24{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int num=0;
        int max=0;
        int count=0;
        System.out.print("请输入数字:");
        while(true){
            num=scanner.nextInt();
            if(num==0){
                break;
            }else if(num>max){
                max=num;
                count=1;
            }else if(num==max){
                count++;
            }
        }
        System.out.println("max="+max+",count="+count);
    }
}

感谢你的阅读,如果我的分享对你有帮助的话,点个赞再走行不行,谢谢。

发布了38 篇原创文章 · 获赞 51 · 访问量 1206

猜你喜欢

转载自blog.csdn.net/xweiwxh/article/details/104268449