close
501
import java.util.Scanner; public class JPA05 { static Scanner k = new Scanner(System.in); public static void main(String args[]) { int count[] = new int[10]; //arr配置10個整數的陣列元素,索引為0到9 int sum=0,n=0; System.out.println("請輸入10個整數:"); for (int i=0;i<10;i++){ //因為陣列索引只到9,這裡不能等於10 System.out.printf("第%d個整數:",i+1); //因此在這邊直接加上1來計數 count[i] = k.nextInt(); //將每次讀取的值,分別存入陣列中 } for (int i=0;i<10;i++){ //迴圈讀取陣列中的元素 if (count[i] > 60){ //依據題目要求,將大於60的值另外做處理 sum = sum + count[i]; //加總 n++; //計算個數 } } System.out.println("陣列中大於60的有" + n + "個\n總合為" + sum + "\n平均值為" + (sum / (double)n)); } }
502
import java.util.Scanner; public class JPA05 { public static Scanner keyboard = new Scanner(System.in); public static void main(String args[]) { System.out.print("請輸入學生人數:"); int num = keyboard.nextInt(); float count[] = new float[num]; //這題要使用float型態,才能按照題目計算小數點後6位,若使用double會不夠精確 float sum=0; //加總 for (int i=0;i<num;i++){ //個數為使用者輸入的 num 值 System.out.printf("第%d個學生的成績:",i+1); count[i] = keyboard.nextFloat(); //將使用者輸入的值,分別存入陣列中 } for (int i=0;i<num;i++){ //迴圈加總 sum = sum + count[i]; } System.out.printf("人數:%d\n",num); System.out.printf("總分:%.2f\n",sum); System.out.printf("平均:%f\n",(sum/num)); } }
503
public class JPA05 { final static int ROW = 2; final static int COL = 3; public static void main(String args[]) { int A[][] = {{1,2,3}, {4,5,6}}; int B[][] = {{7,8,9}, {10,11,12}}; int C[][] = new int[ROW][COL]; System.out.printf("陣列A的內容為(3x3):\n"); show(A); System.out.printf("\n陣列B的內容為(3x3):\n"); show(B); add(A, B, C); System.out.printf("\n陣列A+B=C,陣列C的內容為(3x3):\n"); show(C); } public static void add(int a[][], int b[][], int c[][]) { for(int i=0;i<ROW;i++){ //迴圈列,在程式開頭已定義 for(int j=0;j<COL;j++){ //迴圈行,在程式開頭已定義 c[i][j] = a[i][j] + b[i][j]; } } } public static void show(int x[][]) { for(int i=0;i<ROW;i++){ //迴圈列,在程式開頭已定義 for(int j=0;j<COL;j++){ //迴圈行,在程式開頭已定義 System.out.printf("%02d ",x[i][j]); //未達2位數,前面補0 } System.out.printf("%n"); //換行 } } }
504
import java.util.Scanner; public class JPA05 { public static Scanner keyboard = new Scanner(System.in); public static void main(String[] argv) { int fs[] = new int[10]; //宣告一個大小為10的整數陣列 fs[0] = 0; //指定前面二個陣列的初始值 fs[1] = 1; for(int i=2;i<10;i++){ //從第3個個陣列開始迴圈 fs[i] =fs[i-1]+fs[i-2]; //費式數列公式 } for(int i=0;i<10;i++){ //迴圈輸出結果 System.out.println(fs[i]); } } }
505
public class JPA05 { public static void main(String[] argv) { String[] data = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}; System.out.print("反轉陣列資料之前: "); for(int i=0;i<data.length;i++){ //迴圈打印,取陣列長度 System.out.print(data[i]+" "); } System.out.printf("%n"); reverse(data); System.out.print("反轉陣列資料之後: "); for(int i=0;i<data.length;i++){ //迴圈打印 System.out.print(data[i]+" "); } System.out.printf("%n"); //換行 } public static void reverse(String s[]) { String x; for(int i=0;i<s.length/2;i++){ //反轉只要取一半,因為前後會同時替換,若全部換會變為原樣 x = s[i]; //將第1個字元存入x變數 s[i] = s[s.length-1-i]; //將最後一個字元,改存到第一個字元 s[s.length-1-i] = x; //將x存入最後一個字元 } } }
506
public class JPA05 { public static void main(String[] argv) { int sum =0; int A[][][] = {{{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}, {{13,14,15},{16,17,18}}, {{19,20,21},{22,23,24}}}; for(int x=0;x<4;x++){ //根據維度,做多重迴圈 for(int y=0;y<2;y++){ //題目說明,維度為 4*2*3 for(int z=0;z<3;z++){ sum = sum + A[x][y][z]; //加總 } } } System.out.printf("sum = %d\n", sum); } }
507
public class JPA05 { public static void main(String[] argv) { int hours = 0; //停車時數 hours = 2; park(hours); System.out.println("--------------------"); hours = 3; park(hours); System.out.println("--------------------"); hours = 5; park(hours); System.out.println("--------------------"); hours = 8; park(hours); } public static void park(int hours) { int[] hourTable = {0, 2, 4, 6}; // 時段 int[] feeTable = {30, 50, 80, 100}; // 時段費率 int fee = 0; //停車費用 System.out.println("停車時數:" + hours + "小時"); //在hours未被改動前先輸出時數 for(int i=3;i>=0;i--){ //總共有四個元素,以遞減的方式回圈 if(hours>hourTable[i]){ //若輸入的時數大於該時段,則計算 fee = fee + (hours-hourTable[i]) * feeTable[i]; //加總 + (時數減時段*該時段價錢)(例如3小時就3-2,算多出一小時的錢*該時段價錢) hours = hourTable[i]; //算下一層時段的錢再次加總 (例如3-2小時算完多出的一小時,還要再算去掉的2小時*下一層時段的價錢) } } System.out.println("應繳費用:" + fee + "元整"); } }
508
public class JPA05 { public static void main(String[] argv) { int[] data = {2, 4, 3, 5, 7, 6, 9, 1}; // 為排序的資料 int x; //泡泡排序法,原理就是比較相鄰元素的大小,根據交換的過程 //一次循環將最小或最大的元素排在最前或最後面,以此類推 //第二層迴圈比較相鄰元素,把最大的元素交換到最右邊 //第一層迴圈會重新讀取變動過後的所有元素,再次進入第二層迴圈 for(int i=0;i<data.length-1;i++){ //長度減少1,比較時才不會超出陣列範圍 for(int j=0;j<data.length-1;j++){ if(data[j] > data[j+1]){ //若前面的元素大於後面的元素,則交換 x = data[j+1]; data[j+1] = data[j]; data[j] = x; } } for(int k=0;k<data.length;k++){ //打印結果 System.out.printf("%d ",data[k]); } System.out.printf("%n"); } } }
509
public class JPA05 { public static void main(String[] argv) { int[] data = {1, 3, 2, 5, 4, 6}; sort(data); } //選擇排序法,原理是將待排序數組分為已排序和未排序兩個 //從待排序數組中取得最小的元素,跟後面元素最比較,小則更新 //最後將最小的元素與迴圈到的元素做交換,結束後再進行下一個元素的迴圈 static void sort(int data[]){ for(int i=0;i<data.length-1;i++){//第一層迴圈,取一個元素,最後跟最小的元素做交換 int x,d;//x用來儲存最小元素,d用來交換值 x=i; for(int j=i+1;j<data.length;j++){ //第二層迴圈,找出最小元素 if(data[j]<data[x]){ //若迴圈到的元素小,則替換為最小元素 x=j; } } d = data[x]; //將最小元素與迴圈到的元素做交換 data[x] = data[i]; data[i] = d; for(int k=0;k<data.length;k++){ //打印結果 System.out.printf("%d ",data[k]); } System.out.printf("%n"); } } }
510
import java.util.Scanner; public class JPA05 { public static Scanner keyboard = new Scanner(System.in); public static void main(String[] argv) { search(); search(); } public static void search() { int[] data = {5, 9, 13, 15, 17, 19, 25, 30, 45}; // 已排序資料 System.out.print("請輸入要找尋的資料:"); int target = keyboard.nextInt(); //二分搜尋法的原理:從數列的中間開始搜尋,若大於或小於中位數,則迴圈繼續搜尋大於或小於的那半邊 //若要搜尋的數等於中位數,或是首項等於末項(搜尋結束沒找到資料),則跳出迴圈打印結果 //設a為首項,b為末項,i為搜尋次數 int a=0,b=data.length-1,i=1; System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)\n",a,data[a],b,data[b],((a+b)/2),data[(a+b)/2]); do{ if (target<data[(a+b)/2]){ //若要尋找的值小於中位數 b = (a+b)/2-1; //則將末項改為中位數-1(-1是要去除掉該中位數) }else if(target>data[(a+b)/2]){ //若要尋找的值大於中位數 a = (a+b)/2+1; //則將首項改為中位數+1(+1是要去除掉該中位數) } i++; System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)\n",a,data[a],b,data[b],((a+b)/2),data[(a+b)/2]); }while(target!=data[(a+b)/2]&&b>a); //如果要尋找的數不等於中位數、末項大於首項,則繼續進行迴圈 System.out.printf("經過 %d 次的尋找\n",i); if (target == data[(a+b)/2]) System.out.printf("您要找的資料在陣列中的第%d個位置\n",(a+b)/2); else System.out.printf("%d不在陣列中\n",target); } }
全站熱搜
留言列表