1. 程式人生 > >第三章流程控制語句練習和課後作業

第三章流程控制語句練習和課後作業

package com.exercise;

public class _06流程控制語句練習和課後作業 {

public static void main(String[] args) {

//if語句:

    //1、編寫java程式,完成以下功能:
    //假設有整型變數x,判斷x是否為偶數,若為偶數,則在控制檯上列印“輸入的數值是偶數”。
    //無論x是否為偶數,最後都要在控制檯上輸出x的值
    System.out.println("if語句:");
    System.out.println("第一題");
    int x = 4;
    if ((x % 2) == 0)
    {
        System.out.println("輸入的數值是偶數");
    }
    System.out.println("x的值為:"+ x);


    //2、有兩個整型變數x1,y,請在控制檯上輸出x與y中值較大的那個數。 
    System.out.println("\n第二題");
    int x1 = 9, y =4;
    System.out.println("x1的值為:" + x1);
    System.out.println("y的值為:" + y);
    if (x1 < y)
    {
        System.out.println("y大,y=" + y);
    }
    else if (x1 > y)
    {
        System.out.println("x1大,x1=" + x1);
    }
    else
    {
        System.out.println("x1 = y");
    }

//switch語句:

    //仿照左側示例完成如下練習:
    //如果是星期五則在頁面上顯示“Finally Friday!”,
    //如果是星期六則在頁面上顯示“Super Saturday!”,
    //如果是星期日則在頁面上顯示“Sleepy Sunday!”,
    //其他日子顯示“I hope for my weekend!”(提示利用switch語句)
    System.out.println("\nswitch語句:");
    System.out.println("第一題");
    int number = 5;
    switch (number)
    {
        case 5:
            System.out.println("Finally Friday!");
            break;
        case 6:
            System.out.println("Super Saturday!");
            break;
        case 7:
            System.out.println("Sleepy Sunday!");
            break;
        default:
            System.out.println("I hope for my weeknd!");
    }

//while、do…while語句:

    System.out.println("\nwhile、do...while語句:");
    //1、計算1+2+3+…+100的和(提示利用while語句)
    System.out.println("第一題");
    int i1 = 1, sum1 = 0;
    while (i1 <= 100)
    {
        sum1 = sum1 + i1;
        i1++;
    }
    System.out.println("1+2+3+...+100的和為:" + sum1);

    //2、計算從1到100的所有奇數相加(提示利用while語句)
    System.out.println("\n第二題");
    int i = 1, sum = 0;

    //      while (i <= 100)
    //      {
    //          if ((i%2) != 0)
    //          {
    //              sum = sum + i;
    //          }
    //          i++;
    //      }
    //      System.out.println("1到100所有奇數的和為:" + sum);

    do {
        if ((i%2) != 0)
        {
            sum = sum + i;
        }
        i++;
    } while (i <= 100);
    System.out.println("1到100所有奇數的和為:" + sum);

//課後作業:

    System.out.println("\n課後作業");
//      1、企業發放的獎金根據利潤提成。
        //利潤低於或等於10萬元時,獎金可提10%;
        //利潤高於10萬元,低於或等於20萬元時,高於10萬元的部分,可提成7.5%;
        //高於20萬,低於或等於40萬時,高於20萬元的部分,可提成5%;
        //高於40萬,低於或等於60萬時,高於40萬元的部分,可提成3%;
        //高於60萬,低於或等於100萬時,高於60萬元的部分,可提成1.5%,
        //高於100萬元時,超過100萬元的部分按1%提成,
        //在程式中設定一個變數為當月利潤,求應發放獎金總數?(知識點:條件語句) [必做題]
        System.out.println("第一題");
        double profit = 2000000, comm = 0.0;
        System.out.println("您的當月利潤為:" + profit);
        if (profit <= 100000)
        {
            comm = profit * 0.1;
        }
        else if (100000 < profit && profit <= 200000)
        {
            comm = 10000 + (profit - 100000) * 0.075;
        }
        else if (200000 < profit && profit <= 400000)
        {
            comm = 10000 + (profit - 200000) * 0.05;
        }
        else if (400000 < profit && profit <= 600000)
        {
            comm =  10000 + (profit - 400000) * 0.03;
        }
        else if (600000 < profit && profit <= 1000000)
        {
            comm =  10000 + (profit - 600000) * 0.015;
        }
        else
        {
            comm =  10000 + (profit - 1000000) * 0.01;
        }
        System.out.println("應發獎金總數為:" + comm);

//      2、給定一個成績a,使用switch結構求出a的等級。
        //A:90-100,B:80-89,C:70-79,D:60-69,E:0~59(知識點:條件語句switch)
//      [必做題]
        System.out.println("\n第二題");
        int a = 88;
        System.out.println("你輸入的成績為:" + a);
        switch (a/10)
        {
            case 9:
            case 10:
                System.out.println("您的成績等級為:A");
                break;
            case 8:
                System.out.println("您的成績等級為:B");
                break;
            case 7:
                System.out.println("您的成績等級為:C");
                break;
            case 6:
                System.out.println("您的成績等級為:D");
                break;
            default:
                System.out.println("您的成績等級為:E");        
        }

//      3、假設某員工今年的年薪是30000元,年薪的年增長率6%。
        //編寫一個Java應用程式計算該員工10年後的年薪,並統計未來10年(從今年算起)
        總收入。(知識點:迴圈語句for)[選做題]
        System.out.println("\n第三題");
        double i2 = 30000, sum2 = 0;
        for (i=1; i<=10; i++)
        {
            sum2 = sum2 + i2;
            i2 = i2 + (i2 * 0.06);
        }
        System.out.println("未來10年的總收入為:¥" + (int)sum2);

//      4、猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個,
        //第二天早上又將剩下的桃子吃掉一半,又多吃了一個。
        //以後每天早上都吃了前一天剩下的一半零一個。
        //到第10天早上想再吃時,見只剩下一個桃子了。
        //求第一天共摘了多少。(知識點:迴圈語句 while)[選做題]
        System.out.println("\n第四題");
        int a1 = 1, a2 = 1, sum3 = 0;
        while (a1 <= 10)
        {
            sum3 = sum3 +a2;
            a2 = (a2 * 2) +1;
            a1++;
        }
        System.out.println("第一天一共摘了:" + sum3 + "個桃子");


//      5、輸入一個數字,判斷是一個奇數還是偶數(知識點:條件語句) [必做題]
        System.out.println("\n第五題");
        int a3 = 112;
        System.out.println("您輸入的數字為:" + a3);
        if ((a3%2) == 0)
        {
            System.out.println("您輸入的數字為偶數!");
        }
        else
        {
            System.out.println("您輸入的數字為奇數!");
        }       

//      6、編寫程式, 判斷一個變數x的值,
        //如果是1,輸出x=1,如果是5,輸出x=5,如果是 10,輸出x=10,
        //除了以上幾個值,都輸出x=none。(知識點:條件語句) [必做題]
        System.out.println("\n第六題");
        int x2 = 2;
        System.out.println("你輸入的數字為:" + x2);
        switch (x2)
        {
            case 1:
                System.out.println("x=" + x2);
                break;
            case 5:
                System.out.println("x=" + x2);
                break;
            case 10:
                System.out.println("x=" + x2);
                break;
            default:
                System.out.println("x=none");
        }

//      7、判斷一個數字是否能被5和6同時整除(列印能被5和6整除),
        //或只能被5整除(列印能被5整除),或只能被6整除,(列印能被6整除),
        //不能被5或6整除,(列印不能被5或6整除)(知識點:條件語句) [必做題]
        System.out.println("\n第七題");
        int a4 =18;
        if (a4 % 5 == 0 && a4 % 6 == 0)
        {
            System.out.println("能被5和6整除");
        }
        else if (a4 % 5 == 0 && a4 % 6 != 0)
        {
            System.out.println("能被5整除");
        }
        else if (a4 % 5 != 0 && a4 % 6 == 0)
        {
            System.out.println("能被6整除");
        }
        else
        {
            System.out.println("不能被5或6整除");
        }

//      8、輸入一個年份,判斷這個年份是否是閏年(知識點:條件、迴圈語句) [必做題]
        System.out.println("\n第八題");
        int year = 2012;
        System.out.println("您輸入的年份為:" + year);
        if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        {
            System.out.println("您輸入的年份是閏年!");
        }
        else
        {
            System.out.println("您輸入的年份不是閏年!");
        }


//      9、輸入一個0~100的分數,如果不是0~100之間,列印分數無效,
        //根據分數等級列印A,B,C,D,E(知識點:條件語句if elseif) [必做題]
        System.out.println("\n第九題");
        int a5 = 345;
        if (a5 >= 0 && a5 <= 100)
        {
            switch (a5/10)
            {
                case 9:
                case 10:
                    System.out.println("您的成績等級為:A");
                    break;
                case 8:
                    System.out.println("您的成績等級為:B");
                    break;
                case 7:
                    System.out.println("您的成績等級為:C");
                    break;
                case 6:
                    System.out.println("您的成績等級為:D");
                    break;
                default:
                    System.out.println("您的成績等級為:E");        
            }
        }
        else
        {
            System.out.println("您輸入的分數無效!");
        }

//      10、輸入三個整數x,y,z,請把這三個數由小到大輸出(知識點:條件語句) [必做題]
        System.out.println("\n第十題");
        int x4 = 1, y1 = 3, z = 2, temp;
        if (x4 > y1)
        {
            temp = x4;
            x4 = y1;
            y1 = temp;
        }
        if (x4 > z)
        {
            temp = x4;
            x4 = z;
            z = temp;
        }
        if (y1 > z)
        {
            temp = z;
            z = y1;
            y1 = temp;
        }
        System.out.println("從小到大輸出為:" + x4 + " " + y1+ " "  + z);

//      11、有一個不多於5位的正整數,求它是幾位數,分別打印出每一位數字。
       (知識點:條件語句)
//       [必做題]
        System.out.println("\n第十一題");
        int a6 = 84374;
        System.out.println("您輸入的數字是:" + a6);
        int r, r1, r2, r3, r4, sum5;
        if ((a6 / 10000) >= 1)
        {
            System.out.println("您輸入的數字為5位數!");
            r = a6 / 10000;         //取萬位數
            r1 = (a6 / 1000) % 10;  //取千位數
            r2 = (a6 / 100) % 10;   //取百位數
            r3 = (a6 % 100) / 10;   //取十位數
            r4 = a6 % 10;           //取各位數
            sum5 = r + r1 + r2 + r3 + r4;
            System.out.println("各個位數相加為:" + sum5);
        }
        else if ((a6 / 1000) >= 1)
        {
            System.out.println("您輸入的數字為4位數!");
            r1 = (a6 / 1000) % 10;  //取千位數
            r2 = (a6 / 100) % 10;   //取百位數
            r3 = (a6 % 100) / 10;   //取十位數
            r4 = a6 % 10;           //取各位數
            sum5 = r1 + r2 + r3 + r4;
            System.out.println("各個位數相加為:" + sum5);
        }
        else if ((a6 / 100) >= 1)
        {
            System.out.println("您輸入的數字為3位數!");
            r2 = (a6 / 100) % 10;   //取百位數
            r3 = (a6 % 100) / 10;   //取十位數
            r4 = a6 % 10;           //取各位數
            sum5 = r2 + r3 + r4;
            System.out.println("各個位數相加為:" + sum5);
        }
        else if ((a6 / 10) >= 1)
        {
            System.out.println("您輸入的數字為2位數!");
            r3 = (a6 % 100) / 10;   //取十位數
            r4 = a6 % 10;           //取各位數
            sum5 = r3 + r4;
            System.out.println("各個位數相加為:" + sum5);
        }
        else
        {
            System.out.println("您輸入的數字為1位數!");
            sum5 = a6;
            System.out.println("各個位數相加為:" + sum5);
        }

//      12、編寫一個程式,計算郵局匯款的匯費。如果匯款金額小於100元,匯費為一元,
        如果金額在
//      100元與5000元之間,按1%收取匯費,如果金額大於5000元,匯費為50元。
        //匯款金額由命令列輸入。(知識點:條件語句) [選做題]
//      System.out.println("\n第十二題");
//      Scanner scanner = new Scanner(System.in);
//      System.out.println("請輸入您要匯款的金額:");
//      int mon = scanner.nextInt();
//      double m = 0;
//      if (mon < 100)
//      {
//          m =1;
//      }
//      else if (mon >= 100 && mon <= 5000)
//      {
//          m = mon * 0.01;
//      }
//      else
//      {
//          m = 50;
//      }
//      System.out.println("您此次匯款的金額需要繳納的匯費為:" + m);


//      13、分別使用for迴圈,while迴圈,do迴圈求1到100之間所有能被3整除的整數的和。
//     (知識點:迴圈語句) [選做題]
        System.out.println("\n第十三題");
        int sum6 = 0;
//      for (i=1; i<=100; i++)
//      {
//          if (i % 3 == 0)
//          {
//              sum6 = sum6 + i;
//          }
//      }

//      int i3 = 1;
//      while (i3 <= 100)
//      {
//          if (i3 % 3 == 0)
//          {
//              sum6 = sum6 + i3;
//          }
//          i3++;
//      }
        int i4 = 0;
        do {
            if (i4 % 3 == 0)
            {
                sum6 = sum6 + i4;
            }
            i4++;
        } while (i4 <= 100);
        System.out.println("1到100之間所有能被3整除的整數的和為:" + sum6);


//      14、輸出0-9之間的數,但是不包括5。 [選做題]
        System.out.println("\n第十四題");
        for (i=0; i<10; i++)
        {
            if (i != 5)
            {
                System.out.println(i);
            }
        }

//      15、編寫一個程式,求整數n的階乘,例如5的階乘是1*2*3*4*5 [選做題]
        System.out.println("\n第十五題");
        int n = 10, m;
        m = n;
        int fa = n;
        for (i=1; n>1; n--)
        {
            fa = fa * (n - 1);
        }
        System.out.println(m + " 的階乘為: " + fa);

//      16、編寫一個程式,找出大於200的最小的質數[選做題]
        System.out.println("\n第十六題");
        int n1 = 200;
        while (true)
        {
            boolean b = true;
            for (int j = 2; j< n1/2; j++)
            {
                if (n1 % j == 0) b = false;
            }
            if (b) 
            {
                break;
            }
            n1++;
        }
        System.out.println("大於200的最小的質數為:" + n1);


//      17、由命令列輸入一個4位整數,求將該數反轉以後的數,
        //如原數為1234,反轉後的數位4321 [選做題]
        int a7 = 9783;
        System.out.println("您輸入的數字是:" + a7);
        int p1, p2, p3, p4;
        p1 = a7 / 1000;         //取千位數
        p2 = (a7 / 100) % 10;   //取百位數
        p3 = (a7 % 100) / 10;   //取十位數
        p4 = a7 % 10;           //取各位數
        System.out.println("該數反轉以後的數為:" + p4 + p3 + p2 + p1);

    }

}