11-15题
11.试题编号:J1-11《动物园管理系统》关键算法
动物园内饲养了大量不同种类的动物,因此对这些动物的生活场地的建设及食物投放的 管理工作量非常大。现在 XX 动物园需要设计并实现一套动物园管理系统,提高管理效率。 请完成以下任务。
(1)任务描述
任务一:实现饲养功能关键算法并绘制流程图(30 分) 动物园饲养的食肉动物分大型动物和小型动物两类,规定老虎、狮子一类的大动物每次 喂肉每头三斤,狐狸、山猫一类小动物每三头喂一斤。该动物园共有这两类动物 100 头,每 次需喂肉 100 斤,编程输出大、小动物的数量。 要求:用循环语句实现。
package package11; public class Task1 { public static void main(String[] args) { int big=1; while(big<100){ if((big*3+(100-big)/3)==100) System.out.println("大动物的数量为:"+big+",小动物的数量为:"+(100-big)); big++; } } }
任务二:实现趣味动物问题关键算法并绘制流程图(30 分) 动物园里新来了两只骆驼,那么你能计算出它们年龄的最小公倍数么? 从键盘输入两个整数,输出两个整数的最小公倍数。 要求: 用循环语句实现。
package package11; import java.util.Scanner; public class Task2 { public static void main(String[] args) { int min; Scanner sc=new Scanner(System.in); System.out.print("请输入第一只骆驼的年龄:"); int m=sc.nextInt(); System.out.print("请输入第二只骆驼的年龄:"); int n=sc.nextInt(); min=m*n; if(m<n) { int temp=m; m=n; n=temp; } while(n!=0) { int t=m%n; m=n; n=t; } min=min/m; System.out.print("它们年龄的最小公倍数为:"+min); } }
任务三:实现人工湖关键算法并绘制流程图(30 分) 现在,动物园想在新建一个三角形的人工湖,一是为了养鱼美观,二是可以循环水资源。 从键盘输入三条边 A、B、C 的边长,请编程判断能否组成一个三角形。 要求:A,B,C <1000,如果三条边长 A、B、C 能组成三角形的话,输出 YES,否则 NO。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3
package package11; import java.util.Scanner; public class Task3 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入三角形的三条边长(小于1000):"); int A=sc.nextInt(); int B=sc.nextInt(); int C=sc.nextInt(); if(A>1000||B>1000||C>1000) System.out.println("请输入小于1000的数据"); else { if((A+B)>=C&&(A+C)>=B&&(B+C)>=A) System.out.println("YES"); else System.out.println("NO"); } } }
12.试题编号:J1-12《手机号码查询系统》关键算法
(1)任务描述 现在手机使用非常普及,为方便人们查询手机号码的归属地信息,A 公司决定开发一个 手机号码查询系统,需要完成以下任务。
任务一:实现手机号计数功能关键算法并绘制流程图(30 分) 从键盘接收一行字符串,字符串中只包含数字和空格,统计其中所有的手机号码数量。 比如输入:18711389426 18711389427 输出的结果为:2。 注意:使用分支及循环结构完成。
package package12; import java.util.Scanner; public class Task1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine(); if(!str.matches("[\\d\\s-]+")) System.out.println("字符串中只包含数字和空格"); else { int count=0; String regExp = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; String[] phone=str.split(" "); for(int i=0;i<phone.length;i++) if(phone[i].matches(regExp)) count++; System.out.println("字符串中包含的手机号码个数为:"+count); } } }
任务二:实现连号判断功能关键算法并绘制流程图(30 分) 从键盘接收一个十一位的数字,判断其是否为尾号 5 连的手机号。规则:第 1 位是 1, 第二位可以是数字 358 其中之一,后面 4 位任意数字,最后 5 位为任意相同的数字。例如: 18601088888、13912366666 则满足。 注意:不满足的输出“false”,满足要求的输出“true”。
package package12; import java.util.Scanner; public class Task2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine(); if(!str.matches("\\d{11}$")) System.out.println("请输入11位数字"); else { if(str.matches("^1[3|5|8][0-9]\\d{3}([0-9])\\1{4}")) System.out.print("true"); else System.out.print("false"); } } }
任务三:实现统计非数字功能关键算法并绘制流程图(30 分) 对于给定的一个字符串,统计其中非数字字符出现的次数。 例如:输入:Ab(&%123) 输出:6 注意:使用循环和判断语句实现。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3
package package12; import java.util.Scanner; public class Task3 { public static void main(String[] args) { int count=0; System.out.print("请输入一个字符串:"); Scanner sc=new Scanner(System.in); String str=sc.nextLine(); char[] chs=str.toCharArray(); for(int i=0;i<chs.length;i++) if(chs[i]<'0'||chs[i]>'9') count++; System.out.println("该字符串中非数字字符出现次数为:"+count); } }
13.试题编号:J1-13《图形打印系统》关键算法
(1)任务描述 图形打印技术发展迅速,无论想打印什么图形,只要您输入合格的指令,立马就可以打 印出来。A 公司也开发了一个图形打印系统,为了测试打印系统的性能,需要设计三个测试 用例,请完成以下任务。
任务一:实现打印功能 1 关键算法并绘制流程图(30 分) 从键盘接收一个整数 n,请打印一个由“*”号组成的长度和宽度均为 n 的空心矩形。 例如输入:4 你要在屏幕打印如下图形:
* * * *
* *
* *
* * * * 注意:使用嵌套循环语句实现。
import java.util.Scanner; public class Task1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个整数:"); int n=sc.nextInt(); sc.close(); String str="*"; for (int i = 0; i <n; i++) { for (int j = 0; j <n; j++) { if (i==0) { System.out.print(str); }else if(i==n-1){ System.out.print(str); }else if(j==0||j==n-1) { System.out.print(str); }else{ System.out.print(" "); } } System.out.println(); } } }
任务二:实现打印功能 2 关键算法并绘制流程图(30 分) 注意输出指定空心正方形。输入第一个数字为边长,第二个字符为组成图形边的字符。
例如:输入 4 a
输出
a a a a
a a
a a
a a a a
注意:使用嵌套循环实现。
import java.util.Scanner; public class Task2 { public static void main(String[] args) { /*int x = 3; int y = 10;*/ Scanner sc = new Scanner(System.in); System.out.println("请输入图形边长:"); int n = sc.nextInt(); System.out.println("请输入组成图形边的字符:"); String b = sc.next(); String str = "*"; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == 0) { System.out.print(b); } else if (i == n - 1) { System.out.print(b); } else if (j == 0 || j == n - 1) { System.out.print(b); } else { System.out.print(" "); } } System.out.println(); } } }
任务三:实现打印功能 3 关键算法并绘制流程图(30 分) 从键盘接受一个正整数,列出该数字的中文表示格式,例如:键盘输入 123,打印出一 二三;键盘输入 3103,打印出三一零三。 注意:使用判断语句完成。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3
import java.util.Scanner; public class Tsak3 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入您要转换的数字:"); // 建立一个字符串数组,其中元素为大写的中文字符 String[] s = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; while (true) { Scanner s1 = new Scanner(System.in); String str = s1.nextLine(); for (int i = 0; i < str.length(); i++) { // 提取键盘输入字符串中的每个字符,再转换成阿拉伯数字。 int c = str.charAt(i) - '0'; // 对c进行判断 if (c >= 0 && c < 10) { System.out.print(s[c]); } else { System.out.println("请重新输入数字:" + "\n"); break; } } System.out.println("\n"); } } }
14.试题编号:J1-14《市场分析系统》关键算法
(1)任务描述 在一个新的产品要上市的之前,需要做大量的市场调查,以确保产品能获得理想的收益。 现在 A 公司要设计一款市场分析系统,需完成以下功能模块。
任务一:实现销售分析功能关键算法并绘制流程图(30 分) A 商店准备在今年夏天开始出售西瓜,西瓜的售价如下,20 斤以上的每斤 0.85 元;重 于 15 斤轻于等于 20 斤的,每斤 0.90 元;重于 10 斤轻于等于 15 斤的,每斤 0.95 元;重 于 5 斤轻于等于 10 斤的,每斤 1.00 元;轻于或等于 5 斤的,每斤 1.05 元。现在为了知道 商店是否会盈利要求 A 公司帮忙设计一个输入西瓜的重量和顾客所付钱数,输出应付货款和 应找钱数的程序。 注意:使用分支结构语句实现,结果保留两位小数。
import java.text.DecimalFormat; import java.util.Scanner; public class Task1 { public static void main(String[] args) { DecimalFormat df = new DecimalFormat("#.00"); Scanner sc = new Scanner(System.in); System.out.println("请输入斤数和钱"); double shuliang = sc.nextDouble(); double money = sc.nextDouble(); double qian = count(shuliang); double cha = money-qian; System.out.println("应付"+df.format(qian)+"元,应找钱"+df.format(cha)+"元"); } public static double count(double shuliang) { double sum; if(shuliang<=5) { sum=shuliang*1.05; return sum; }else if(shuliang<=10){ sum=shuliang*1; return sum; }else if(shuliang<=15) { sum=shuliang*0.95; return sum; }else if(shuliang<=20) { sum=shuliang*0.90; return sum; }else { sum=shuliang*0.85; return sum; } } }
任务二:实现销售量分析功能关键算法并绘制流程图并绘制流程图(30 分) KJ 学院为全校同学设计一套校服,A 公司有意招标为 A 学校设计服装,职员小 C 在 A 校排队时偷偷的看了一眼发现 A 学校学生,5 人一行余 2 人,7 人一行余 3 人,3 人一行余 1 人,编写一个程序求该校的学生人数。 注意:使用分支、循环结构语句实现,直接输出结果不计分。
public class Task2 { public static void main(String[] args) { for(int i=1;i>0;i++) { if(i%5==2&&i%7==3&&i%3==1) { System.out.println("该班级学生总数为:"+i); break; } } } }
任务三:实现市场调查数据的恢复功能关键算法并绘制流程图(30 分) 职员小 A 今天犯了一个致命的错误,他一不小心丢失了 X 项目的市场调查结果只记得一 个公式 xyz+yzz=532,其中 x、y、z 均为一位数,现在请你帮忙编写一个程序求出 x、y、z 分别代表什么数。 注意:用带有一个输入参数的函数(或方法)实现,返回值类型为布尔类型。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3
public class Task3 { public static void main(String[] args) { int x,y,z,t; for(x = 1; x < 10; x ++) // 对x穷举 for(y = 1; y < 10; y ++) //对y穷举 for(z = 0; z < 10; z ++)//对z穷举 { t = x * 100 + y * 10 + z + y *100 + z * 10 + z;// 求和 if(t == 532) //判断和是否为532 { System.out.println("x为"+x+" y为"+y+" z为"+z); } } } }
15.试题编号:J1-15《节庆活动管理系统》关键算法
(1)任务描述 在《关于推动特色文化产业发展的意见》中,首次提出“特色文化产业”的内涵,其 中,将特色节庆做为重点发展领域之一。要求发掘各地传统节庆文化内涵,提升新兴节庆文 化品质,形成一批参与度高、影响力大、社会效益和经济效益好的节庆品牌。因此,XX 市 政府决定关键算法节庆活动管理系统。请完成以下任务。
任务一:实现元宵灯谜问题关键算法并绘制流程图(30 分) 小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“我们俩的年龄 之积是年龄之和的 6 倍”。 小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过 8 岁啊。” 请你编程求出小明的较小的妹妹的年龄。
注意:使用循环实现。
import java.util.Scanner; public class Test1 { public static void main(String[] args) { for (int a = 1; a < 100; a++)// 妹妹不可能大于100吧!!! { for (int b = 0; b < a; b++) { if (a * b == (a + b) * 6 && (a - b) <= 8)// 条件判断 System.out.println("年龄较小者是" + b + "岁"); } } } }
任务二:实现获奖序列关键算法并绘制流程图(30 分) 中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生 原理。它的前几项是:0、2、4、8、12、18、24、32、40、50 ...。 其规律是:对偶数项,是序号平方再除 2,奇数项,是序号平方减 1 再除 2。 投资人决定,节庆活动抽奖活动的中奖序列按照“大衍数列”的前 100 项。 请你打印出“大衍数列”的前 100 项。 注意:输出占一行,两个数之间用空格隔开,最后一个数字后面没有多余的符号。
public class Test2 { public static void main(String[] args) { for (int i = 1; i < 100; i++) { if (i % 2 == 0) System.out.println(i * i / 2); else System.out.println((i * i - 1) / 2); } } }
任务三:实现门票核对关键算法并绘制流程图(30 分) 门票的序列号必定是系统里总序列的子序列,请你核对门票的真实性。 从键盘接收两个字符串a和b,请你判断字符串a是否包含字符串b,是的话输出“Yes”, 否则输出“No”。有多组测试用例,每个测试用例占一行,两个字符串之间用空格隔开。 例如:输入 JavaStudy Java Student School 则输出 Yes No 注意:使用循环完成。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3
public class Test3 { public static void main(String[] args) { String str = "ABC_001"; if (str.indexOf("ABC") != -1) { System.out.println("包含"); } else { System.out.println("不包含"); } } }