26-30题
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); } }