26.試題編號:J1-26《成績分析系統》關鍵算法
(1)任務描述 對學生成績進行統計和數據分析可以發現學生對知識的掌握情況,以便教師根據分析的 結果調整教學內容和重難點,現在需要完成以下任務來實現成績分析系統。 任務一:實現成績等級划分功能關鍵算法並繪制流程圖(30 分) 輸入一個百分制的成績 t,將其轉換成對應的等級然后輸出,具體轉換規則如下:
90~100 為 A
80~89 為 B
70~79 為 C
60~69 為 D
0~59 為 E
要求:如果輸入數據不在 0~100 范圍內,請輸出一行:“Score is error!”。
import java.util.Scanner; /* *成績等級划分 */ public class Task1 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("輸入一個百分制的成績t:"); double t = s.nextDouble(); int d = (int) (t/10); switch (d) { case 10: case 9: System.out.print("A"); break; case 8: System.out.print("B"); break; case 7: System.out.print("C"); break; case 6: System.out.print("D"); break; case 5: case 4: case 3: case 2: case 1: case 0: System.out.print("E"); break; default: System.out.print("Score is error!"); break; } } }
任務二:實現數列求和功能關鍵算法並繪制流程圖(30 分) 數列的定義如下: 數列的第一項為 n,以后各項為前一項的平方根,輸出數列的前 m 項的和。 要求:數列的各項均為正數。
import java.util.Scanner; /* 數列的第一項為 n,以后各項為前一項的平方根,輸出數列的前 m 項的和. */ public class Task2 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("數列第一項n:"); double n = s.nextDouble(); System.out.print("共有m項:"); int m = s.nextInt(); double sum = 0; for (int i = 0; i < m; i++) { sum += n; n = Math.sqrt(n); } System.out.printf("%.2f",sum); } }
任務三:求前 n 項之和功能關鍵算法並繪制流程圖(30 分) 多項式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...,現在要求出該多項式 的前 n 項的和。 要求:結果保留兩位小數。 (2)作品提交要求見本模塊附錄 1 (3)實施條件要求見本模塊附錄 2 (4)評價標准見本模塊附錄 3
import java.util.Scanner; /* * */ public class Task3 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("輸入多少項n:"); int i = 1;//分子 int n = s.nextInt(); double a = 0;//前m項奇數項的和 double b = 0;//前m項偶數項的和 double sum = 0; int a1 = 1; for (int j = 1; j <= n; j++) { if (j%2!=0) {//奇數 a = a + (a1 - i/j+1); a1 = 0; } if (j%2==0) { b = b + i/j+1; } sum = sum + a+b; } System.out.format("%.2f",sum).println(); } }
27.試題編號:J1-27《酒水銷售系統》關鍵算法
(1)任務描述 互聯網的發展極大地促進了全球經濟貿易的發展,同時也正在改變人們的消費方式。某 酒廠打算開發一個酒水銷售系統,以便在網上進行產品銷售、利潤統計及經營分析。為實現 該系統,請完成以下任務。
任務一:實現酒水銷售 1 關鍵算法並繪制流程圖(30 分) 啤酒每罐 2.3 元,飲料每罐 1.9 元。小明買了若干啤酒和飲料,一共花了 82.3 元。我 們還知道他買的啤酒比飲料的數量少,請你編程計算他買了幾罐啤酒。 注意:使用循環實現。
/* 啤酒每罐 2.3 元,飲料每罐 1.9 元。小明買了若干啤酒和飲料,一共花了 82.3 元。我 們還知道他買的啤酒比飲料的數量少,請你編程計算他買了幾罐啤酒。 */ public class Task1 { public static void main(String[] args) { System.out.println(fun()); } public static int fun() { int i,j,x,y,tmp; for (i = 0; i < 100; i ++) { for (j = 0;j<i;j++) { tmp = 19*i+23*j; if (tmp == 823) return j; } } return 0; } }
任務二:實現酒水銷售 2 關鍵算法並繪制流程圖(30 分) 本月酒水的銷售為 2!+4!+5!的值。n!表示 n 的階乘,例如 3!=3×2×1=6,5!=5×4×3 ×2×1=120。求這個值。 注意:分別利用遞歸和非遞歸方法實現求 n!。
/* 本月酒水的銷售為 2!+4!+5!的值。n!表示 n 的階乘,例如 3!=3×2×1=6,5!=5×4×3 ×2×1=120。求這個值。 注意:分別利用遞歸和非遞歸方法實現求 n!。 */ public class Task2 { public static void main(String[] args) { System.out.println(fun(2)+fun(4)+fun(5)); } public static int fun(int n) { int path = 1; if (n<0) { return -1; } while (n>0) { path = path * n; n--; } return path; } }
任務三:實現酒水銷售 3 關鍵算法並繪制流程圖(30 分) 酒水產商臨時打算,為系統增加新功能,根據特定算法生產特定的字符 logo。 把 abcd...s 共 19 個字母組成的序列重復拼接 106 次,得到長度為 2014 的串。 接下來刪除第 1 個字母(即開頭的字母 a),以及第 3 個,第 5 個等所有奇數位置的字 母。得到的新串再進行刪除奇數位置字母的動作。如此下去,最后只剩下一個字母,請編程 求解該字母。 注意:使用循環或者遞歸實現,只需打印最后剩下的那個字母。 (2)作品提交要求見本模塊附錄 1 (3)實施條件要求見本模塊附錄 2 (4)評價標准見本模塊附錄 3
/*猜字母 把abcd...s共19個字母組成的序列重復拼接106次,得到長度為2014的串。 接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。 得到的新串再進行刪除奇數位置字母的動作。如此下去,最后只剩下一個字母,請寫出該字母。 */ public class Task3 { public static void main(String[] args) { String str = ""; for (int i = 1; i <= 19; i++) str += (char) (96+i);//打印19個字母 //重復拼接106次 StringBuilder sb = new StringBuilder(); for (int i = 0; i < 106; i++) sb.append(str); //刪除奇數位 while (sb.length()>1) { for (int i = 0; i < sb.length(); i++) sb.delete(i, i+1);//每循環一次長度就減一並刪除了奇數位 } System.out.print(sb); } }
28.試題編號:J1-28《中學生數學輔助學習系統》關鍵算法
(1)任務描述 由於中學數學是培養數學思維的基礎階段,為了讓學生打造一個堅實的數學基礎,A 學 校決定開發一個中學生數學輔助學習系統,通過完成趣味試題,采用游戲通關的方式,幫助 中學生初步掌握二元一次方程解簡單應用題的方法和步驟,並會列出二元一次方程解簡單的 應用題。
任務一:實現汽車與摩托問題的關鍵算法並繪制流程圖(30 分)
在一個停車場內,汽車、摩托車共停了 48 輛,其中每輛汽車有 4 個輪子,每輛摩托車 有 3 個輪子,這些車共有 172 個輪子,編程輸出停車場內有汽車和摩托車的數量。 注意:用循環語句實現。
/* 在一個停車場內,汽車、摩托車共停了 48 輛,其中每輛汽車有 4 個輪子,每輛摩托車 有 3 個輪子,這些車共有 172 個輪子,編程輸出停車場內有汽車和摩托車的數量。 */ public class Task1 { public static void main(String[] args) { System.out.println("汽車:"+fun()); System.out.println("摩托車:"+(48-fun())); } public static int fun() { int i,j,tmp; for (i = 0; i < 48 ; i++) { for(j = 0; j < i;j++){ tmp = 4*i+3*j; if (tmp==172) return i; } } return 0; } }
任務二:實現運送暖瓶問題的關鍵算法並繪制流程圖(30 分) 某運輸隊為超市運送暖瓶 500 箱,每箱裝有 6 個暖瓶。已知每 10 個暖瓶的運費為 5 元, 損壞一個不但不給運費還要賠 10 元,運后結算時,運輸隊 共得 1332 元的運費。編程輸出 損壞暖瓶的個數。 注意:用循環語句實現。
/* 某運輸隊為超市運送暖瓶 500 箱,每箱裝有 6 個暖瓶。已知每 10 個暖瓶的運費為 5 元, 損壞一個不但不給運費還要賠 10 元,運后結算時,運輸隊 共得 1332 元的運費。編程輸出 損壞暖瓶的個數。 */ public class Task2 { public static void main(String[] args) { System.out.print(fun()); } public static int fun() { int ydyf = 1500;//應得運費 int sjyf = 1332;//實際運費 int ssyf ; int i; for (i = 1; i < 3000; i++) { ssyf = (int) (i*(0.5+10)); if (ssyf == 168 ) return i; } return 0; } }
任務三:實現合格電視機問題的關鍵算法並繪制流程圖(30 分) 某電視機廠每天生產電視 500 台,在質量評比中,每生產一台合格電視機記 5 分,每生 產一台不合格電視機扣 18 分。如果四天得了 9931 分,編程計算這四天生產的合格電視機的 台數,並輸出。 注意:用循環語句實現。 (2)作品提交要求見本模塊附錄 1 (3)實施條件要求見本模塊附錄 2 (4)評價標准見本模塊附錄 3
/* *某電視機廠每天生產電視 500 台,在質量評比中,每生產一台合格電視機記 5 分,每生 產一台不合格電視機扣 18 分。如果四天得了 9931 分,編程計算這四天生產的合格電視機的 台數,並輸出。 */ public class Task3 { public static void main(String[] args) { System.out.println(fun()); } public static int fun() { int ts = 2000;//4天2000 int hgdf = 10000;//應得10000分 int sjdf = 9931;//實際得分 for (int i = 1; i <= 2000; i++) { int tmp = (18+5)*i;//一台不合格5分不加還有反扣18分 if(tmp==69) return i; } return 0; } }
29.試題編號:J1-29《歌手大賽系統》關鍵算法
(1)任務描述 A 學校即將舉行“校園歌手大賽”,為了快速准確的分析選手的得分情況。A 學校決定 開發一個歌手大賽系統。為了實現該系統的功能,請完成以下三個任務。
任務一:實現計算平均分功能關鍵算法並繪制流程圖(30 分) 小明今天參加了“校園歌手大賽”,評委的打分規則是去掉一個最低分和一個最高分后 算出剩下分數的平均分,你能幫助小明快速的算出平均分嗎? (評委數量必須大於 2) 輸入說明:首先輸入一個整數 n,代表評委人數,然后輸入 n 個數。請按照題目的計算 規則計算出平均分然后輸出。 例如輸入:
6
100 90 90 80 85 95
按照題目注意計算平均分並輸出:
90.0
注意:使用循環和數組實現。
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; /* */ public class Task1 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt();//評委個數 double[] arry = new double[n]; for (int i = 0; i < n; i++) arry[i] = s.nextDouble();//分數 //排序 double temp = 0; for (int i = 0; i < arry.length; i++) { for (int j = 0; j < arry.length-i-1; j++) { if (arry[j]<arry[j+1]) { temp = arry[j]; arry[j] = arry[j+1]; arry [j+1] = temp; } } } System.out.println(Arrays.toString(arry)); //去掉第一個和最后一個 ArrayList<Double> aList = new ArrayList<>(); for (int i = 1; i < arry.length-1; i++) { aList.add(arry[i]); } System.out.print(aList.toString()+"\r"); //遍歷數組 double sum = 0;//和 int size = aList.size();//分數個數 double avg; for (Double double1 : aList) sum += double1; avg = sum/size; System.out.print(avg); } }
任務二:實現查數功能關鍵算法並繪制流程圖(30 分) 求 n(2<=n<=10)個整數中倒數第二小的數。每一個整數都獨立看成一個數,比如,有 三個數分別是 1,1,3,那么,第二小的數就是 1。(每個數 均小於 100) 說明:首先輸入一個整數 n,然后輸入 n 個數。請輸出第 2 小的數。 例如輸入: 5 -5 -10 10 50 80 程序輸出第 2 小的數:-5 注意:使用循環實現。
import java.util.Arrays; import java.util.Scanner; /* 首先輸入一個整數 n,然后輸入 n 個數。請輸出第 2 小的數。 例如輸入: 5 -5 -10 10 50 80 程序輸出第 2 小的數:-5 */ public class Task2 { public static void main(String[] args) { System.out.print("輸入一個整數n:"); Scanner s = new Scanner(System.in); int n = s.nextInt(); int[] as = new int[n]; for (int i = 0; i < as.length; i++) as[i] = s.nextInt(); //排序 for (int i = 0; i < as.length; i++) { for (int j = 0; j < as.length-i-1; j++) { if (as[j]>as[j+1]) { int temp = as[j]; as[j] = as[j+1]; as[j+1] = temp; } } } System.out.println(Arrays.toString(as)); System.out.print("第二小的數:"+as[1]); } }
任務三:實現分數排序功能關鍵算法並繪制流程圖(30 分)
小明的老師今天教了冒泡排序,但是小明在網上找到一種更加方便的排序,但是小明不 會使用,你能幫幫他嗎?定義一個 n 輸入 n(0<n<1000)然后輸入 n 正整數,輸出從小到大 輸入結果 注意:按照題目描述完成程序,使用 sort 方法實現。 (2)作品提交要求見本模塊附錄 1 (3)實施條件要求見本模塊附錄 2 (4)評價標准見本模塊附錄 3
import java.util.Arrays; import java.util.Scanner; /* 使用 sort 方法實現 */ public class Task3 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("輸入n:"); int n = s.nextInt(); int[] arry = new int[n]; for (int i = 0; i < arry.length; i++) arry[i] = s.nextInt(); System.out.println(Arrays.toString(arry)); Arrays.sort(arry); for (int i = 0; i < arry.length; i++) System.out.print(arry[i]); } }
30.試題編號:J1-30《英語輔導系統》關鍵算法
(1)任務描述 隨着國際化的到來英語在我們生活中就凸顯得比較重要了,特別是學習編程語言的我們, 所以 B 公司決定開發一套英語輔助學習系統,通過完成趣味試題,采用游戲通關的方式,幫 助有需要的人更好的學習英語。
任務一:實現趣味英語試題 1 關鍵算法並繪制流程圖(30 分) 已知字符串數組 A,包含初始數據:a1,a2,a3,a4,a5;字符串數組 B,包含初始數據: b1,b2,b3,b4,b5。編寫程序將數組 A、B 的每一對應數據項相連接,然后存入字符串數組 C, 並輸出數組 C。輸出結果為:a1b1,a2b2,a3b3,a4b4,a5b5。 例如:數組 A 的值為{“Hello ” , “Hello ” , “Hello ” , “Hello ” , “Hello ” }, 數組 B 的值為{“Jack” , “Tom” , “Lee” , “John” , “Alisa” },則輸出結果 為{“Hello Jack” , “Hello Tom” , “Hello Lee” , “Hello John” , “Hello Alisa” }。
注意:定義 2 個字符串數組 A、B,用於存儲讀取數據。定義數組 C,用於輸出結果。 ①使用循環將數組 A、B 的對應項相連接,結果存入數組 C。 ②使用循環將數組 C 中的值輸出。
import java.util.Arrays; import java.util.Scanner; /* */ public class Task1 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("輸入數組A:"); String[] A = new String[5]; for (int i = 0; i < A.length; i++) A[i] = s.next(); System.out.print("輸入數組B:"); String[] B = new String[5]; for (int i = 0; i < B.length; i++) B[i] = s.next(); System.out.print(Arrays.toString(A)+"\r"); System.out.print(Arrays.toString(B)+"\r"); String[] C = new String[5]; for (int i = 0; i < C.length; i++) { C[i] = A[i]+B[i]; } for (int i = 0; i < C.length; i++) System.out.print(C[i]); } }
任務二:實現趣味英語試題 2 關鍵算法並繪制流程圖(30 分) 判斷一個字符串是否是對稱字符串,例如:“abc”不是對稱字符串,“aba”、“ abba”、 “aaa”、“mnanm”是對稱字符串。是的話輸出“Yes”,否則輸出“No”。 注意:使用循環和判斷語句實現。
import java.util.Scanner; /* 判斷一個字符串是否是對稱字符串,例如:“abc”不是對稱字符串,“aba”、“abba”、 “aaa”、“mnanm”是對稱字符串。是的話輸出“Yes”,否則輸出“No”。 */ public class Task2 { public static void main(String[] args) { if (fun()) { System.out.print("Yes"); } else System.out.print("No"); } public static boolean fun() { System.out.print("輸入一個字符串:"); Scanner s = new Scanner(System.in); String str = s.nextLine(); if (str.charAt(0)==str.charAt(str.length()-1)) { return true; } return false; } }
任務三:實現趣味英語試題 3 關鍵算法並繪制流程圖(30 分) 編寫一個程序實現統計一串字符串中的英文小寫字母個數! 例如:輸入“axZvnNgOuyi”,得到的值應該是 8; 注意:使用分支語句實現,且有輸入輸出,直接輸出不計分 (2)作品提交要求見本模塊附錄 1 (3)實施條件要求見本模塊附錄 2 (4)評價標准見本模塊附錄 3
import java.util.Scanner; /* 使用 sort 方法實現 */ public class Task3 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("輸入n:"); String n = s.nextLine(); int count = 0; for (int i = 0; i < n.length(); i++){ char sig = n.charAt(i); if (Character.isLowerCase(sig)) //判讀小寫 count++; } System.out.print(count); } }