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);
    }
}

給大家分享一個桌面壁紙

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