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);
}
}
全站熱搜
留言列表