返回列表 發帖

0511模擬考成績

日期: 2019/5/11
範圍: 103, 203, 303, 403, 503
-----------------------------------
楀諺  4 / 5    (未做完的 303)
秉翰  3 / 5    (未做完的 403 , 503 )
東緯  3 / 5    (未做完的 403 , 503 )

請上述未做完的題目

各員回去後 將每行程式碼打上註解

然後貼上來

下次就由 1.東緯 2.秉翰 上台教學 403跟503

  1. import java.util.Scanner;
  2. public class JPA04 {
  3.     static Scanner keyboard = new Scanner(System.in);
  4.     public static void main(String args[]) {
  5.         int m,n;
  6.         System.out.print("Input m: ");
  7.         m=keyboard.nextInt();
  8.         while(m!=999)//排除999
  9.         {
  10.                 System.out.print("Input n: ");
  11.                 n=keyboard.nextInt();
  12.                 System.out.println("Ans (尾端遞迴): "+powerTail(m,n,1/*1是r初始值*/))/*呼叫函式powerTail*/;
  13.                 System.out.println("Ans (迴圈): "+powerLoop(m,n,1/*1是r初始值*/))/*呼叫函式powerLoop*/;
  14.                 System.out.print("Input m: ");
  15.                 m=keyboard.nextInt();
  16.         }
  17.     }
  18.     static int powerTail(int m, int n, int r)
  19.     {
  20.             if(n==0)/*當遞減至0,馬上回傳r*/
  21.                     return r;
  22.             else
  23.                     return powerTail(m, n-1, r*m);
  24.     }
  25.     /*
  26.     powerTail(2,3(n),1(r))
  27.     =powerTail(2,2(n-1),2(r*m))
  28.     =powerTail(2,1((n-1)-1),2*2((r*m)*m))
  29.     =powerTail(2,0(((n-1)-1)-1),2*2*2(((r*m)*m))*m) n變0,馬上回傳r(r=((r*m)*m))*m)
  30.     =2*2*2
  31.     */
  32.     static int powerLoop(int m, int n, int r)
  33.     {
  34.             while(n!=0)//當n遞減至0,才回傳r
  35.             {
  36.                     r*=m;
  37.                     n--;
  38.             }
  39.             return r;
  40.     }
  41.     /*
  42.     powerLoop(2,3(n),1(r))
  43.     =powerLoop(2,2(n-1),2(r*m))
  44.     =powerLoop(2,1((n-1)-1),2*2((r*m)*m))
  45.     =powerLoop(2,0(((n-1)-1)-1),2*2*2(((r*m)*m))*m) n變0,馬上回傳r(r=((r*m)*m))*m)
  46.     =2*2*2
  47.     */
  48. }
複製代碼

TOP

  1. import java.util.Scanner;                        //import Scanner this function
  2. public class JPA03 {                             //make a class "JPA03"
  3.     public static void main(String[] args) {     //make a function "main"
  4.         int i, sum;                              //declare integers
  5.         System.out.printf("1~1000中的完美數有: ");   //print out "some things"
  6.         for(i=1; i<=1000; i++){                  //the loop for i to run "1 to 1000"
  7.             sum=0;                               //clear integer sum
  8.             for(int j=1; j<i; j++){              //the loop for getting all common factors
  9.                 if(i%j==0)                       //to check if the integer j is the common factor of i
  10.                         sum+=j;                  //if so, then add j to sum
  11.             }
  12.             if(i==sum){                          //to check is i equal to j
  13.                 System.out.printf("%d ",i);      //if so, then print the number
  14.             }
  15.         }
  16.         System.out.printf("\n");                 //print next line(enter)
  17.     }
  18. }
複製代碼

TOP

  1. public class JPA05 {
  2.         final static int ROW = 2;
  3.         final static int COL = 3;

  4.         public static void main(String args[]) {
  5.                 int A[][] = { { 1, 2, 3 }, { 4, 5, 6 } };
  6.                 int B[][] = { { 7, 8, 9 }, { 10, 11, 12 } };
  7.                 int C[][] = new int[ROW][COL];//[2][3]2*3

  8.                 System.out.printf("陣列A的內容為(2x3):\n");
  9.                 show(A);//顯示

  10.                 System.out.printf("\n陣列B的內容為(2x3):\n");
  11.                 show(B);//顯示

  12.                 add(A, B, C);//呼叫相加函式

  13.                 System.out.printf("\n陣列A+B=C,陣列C的內容為(2x3):\n");
  14.                 show(C);//顯示
  15.         }

  16.         public static void add(int a[][], int b[][], int c[][]) {
  17.                 for (int i = 0; i < ROW; i++) {
  18.                         for (int j = 0; j < COL; j++)
  19.                                 c[i][j] = a[i][j] + b[i][j];
  20.                         //ex.c陣列第一列的第一個=a陣列第一列的第一個+b陣列第一列的第一個
  21.                 }
  22.         }

  23.         public static void show(int x[][]) {
  24.                 for (int i = 0; i < ROW; i++) {
  25.                         for (int j = 0; j < COL; j++)
  26.                                 System.out.printf("%02d "/*"02d"指在不滿兩位的數字前加0*/, x[i][j]);
  27.                         System.out.println();
  28.                 }
  29.         }
  30. }
複製代碼

TOP

返回列表