Java小白的成长(基础篇)3 下

咋们继续没有做完的题

实战演练下

3.14编写程序,提示用户输入一个在1-15之间的整数


/*

数据:给出的数字模型

1.for循环每个的行数

2.for循环没行的空隔

3.for循环每行的列数

分析

 4  3  2  1 2 3 4

-3 -2 -2  0 1 2 3

第4行 x∈[-3,3] y=|x|+1

第5行 x∈[-4,4] y=|x|+1

*/

import java.util.Scanner;

class Demo03_14{

    public static void main(String[] args){

        Scanner scanner=new Scanner(System.in);

        System.out.print("请输入行数:");

        int line=scanner.nextInt();

        for(int i=1;i<=line;i++){          //行数

            for(int k=1;k<=(line-i);k++){  //空格

                 System.out.print("  ");

            }

            for(int x=-(i-1);x<=i-1;x++){   //列

                if(line<10){

                    System.out.printf("%-2d",Math.abs(x)+1);

                }else{

                    System.out.printf("%-3d",Math.abs(x)+1);

                }

            }

            System.out.println();

        }

    }

}

%-3d表示的是向左对齐,不够的补空格

3.15使用嵌套的循环语句,用四个独立的程序打开


/*

数据:给出的数字模型

步骤:

1.for循环每个的行数

2.for循环每行的列数

*/

class Demo03_15{

    public static void main(String[] args){

         //第一个

        for(int i=1;i<=6;i++){            //行数

            for(int j=1;j<=i;j++){        //列

                System.out.print(j+" ");

            }

            System.out.println();//换行

        }

        //第二个

        System.out.println("==========");

        for(int i=1;i<=6;i++){            //行数

            for(int j=1;j<=7-i;j++){      //列

                System.out.print(j+" ");  //输出数字

            }

            System.out.println();         //换行

        }

        //第三个

        System.out.println("==========");

        for(int i=1;i<=6;i++){         //行数

            for(int k=1;k<=6-i;k++){   //空格数

                System.out.print("  ");  

            }

            for(int j=i;j>=1;j--){

                System.out.print(j+" "); //输出数

            }

            System.out.println();///换行

        }

        //第四个

        System.out.println("==========");

        for(int i=1;i<=6;i++){           //行数

            for(int k=1;k<=i-1;k++){     //每行空格数

                System.out.print("  ");  //列

            }

            for(int j=1;j<=7-i;j++){

                System.out.print(j+" ");

            }

            System.out.println();

        }

    }

}

3.16打印金字塔形状的数字


/*

数据:数据:给出的数字模型

1.for循环每个的行数

2.for循环没行的空隔

3.for循环每行的列数

分析:

第4行  

         1  2  4 8 4 2 1

         0  1  2 3 2 1 0

      x -3 -2 -1 0 1 2 3

第5行

        1 2 4 8 16 8 4 2 1

        0 1 2 3 4  3 2 1 0

    x  -4-3-2-1 0  1 2 3 4

 

 



class Demo03_16{

    public static void main(String[] args){

        for(int i=1;i<=8;i++){

            for(int k=1;k<=8-i;k++){

                System.out.print("    ");

            }

            for(int x=-(i-1);x<=i-1;x++){

                System.out.printf("%4d",(int)Math.pow(2,i-1-Math.abs(x)));

            }

            System.out.println();

        }

    }

}

/*

提示:

对于打印一些对称性的三角形图案或者是类似的问题

尽量向绝对值考虑

*/

3.17打印2-1000包括2和1000之间的所有素数,每行显示8个素数,数字之间用一个空格字符隔开

步骤:1.输入一个整数

2.从2开始除,知道自己本身,如果,除的过程当中有余数为0的,证明他不是素数,反之


/*

思路分析:

素数就是这个数从2开始一直到除自己以外的数相除有余数



*/

class Demo03_17{

    public static void main(String[] args){

      int count = 0;                   //标记素数的个数

     for(int num = 2;num <= 1000;num++){ //2-1000的数

         boolean flag = true;          //对这个数标记,一开始为true

      for(int i = 2;i <= num - 1;i++){

         if(num % i == 0){

           flag = false;               //不是素数为false

           break;

         }

     }

      if (flag){

        count++;

       System.out.println(num);     //输出素数

       if(count%8 == 0){            //一行输出8个数

          System.out.println();

       }

 

    }

  }

}

}

3.18计算π

咋们对于这道题的思路,分母是2i-1,但是他偶数的时候是负数,所以,咋们可以加一句flag =-flag;他没执行完一次,就去负,刚好满足了,偶数为负的需求

class Test18{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int imax=in.nextInt();
        double sum=0;
        double flag = 1;
        for(int i=1;i<=max;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);
    }
}

3.19计算e

分析这道题,可以看到分母均为阶层,所以,我们可以把1看为是1/0!

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

3.20编写程序,显示从101到2100期间所有的闰年,每行显示10个,数字之间用一个空格字符隔开,同时显示着期间闰年的数目。

咋们需要知道闰年怎么算的,年份%4==0或者年份%100!=0,还有就是特殊的年份,例如千禧年,他是年份%400==0

class Test20{
    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.println(i+" ");
                if(count%10==0){
                    System.out.println();
                }
            }
        }
        System.out.println("\n闰年一共"+count+"个");
    }
}

3.21完全数

步骤:1.输入一个整数

2.从2开始除,如果他的余数为0就进行相加,直到没有没有之时,

3.若是相加的结果,与输入的整数相等,则输出

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

3.22剪刀石头布,连续玩这个游戏

可以在原先的程序之上,加一些条件,当**为2时,谁赢

import java.util.Scanner;
pubilc class Test22{
    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.println("请输入 剪刀0 石头1 布2:");
     int usr = scanner.nextInt();
     int com = random.nextInt(3);/*Random随机函数*/
     String usrStr="";
     String comStr="";
switch(usr){
    case 0:
    usrStr = "剪刀";
    break;
    case1:
    usrStr = "石头";
    break;
    case 2:
    usrStr = "布";
    break;
    }
swith(com){
    case 0:
    comStr = "剪刀";
    break;
    case 1:
    comStr = "石头";
    break;
    case 2:
    comStr = "布";
    break;
}
 if(usr==com){
            System.out.printf("用户是%s,电脑是%s,平局",usrStr,comStr);
        }else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
            System.out.printf("用户是%s,电脑是%s,用户赢",usrStr,comStr);
        usrwin++;
        }else{
            System.out.printf("用户是%s,电脑是%s,用户输",usrStr,comStr);
        
        comwin++;
        }
        if(usrWin==2 || comWin==2){
            break;
        }
    }
    if(usrWin==2){
        System.out.println("最终玩家赢!");
    }
    else{
        System.out.println("最终电脑赢!");
    }
}
}

3.23

十进制到二进制,提示用户输入十进制整数,然后显示对应的二进制值,这个程序不要使用Java的Interger方法

思路:十进制到二进制,就是一直除二,直到1,然后他们的余数从下到上进行输出,所以,咋们可以他每次取余,咋们就将结果加到字符串上

Class Test23{
    public static void main(String[] args){
        Scanner in =new Scanner(System.in);
        System.out.println();
        int sum = in.nextInt();
        String binStr=" ";
        While(true){
            binStr=num%2+binStr;
            num/=2;
            if(num==0){
                break;
            }
        }
        System.out.println(binStr);
    }
}

3.24最大数的出现次数

步骤:1.首先输入一串数字

2.两两进行比较,如果大于,就赋值,继续比较,如果后面有与最大数一样的数字就加1

import java.util.Scanner;
class Test24{
    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);
    }
}

给大家分享一个桌面壁纸

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章