16-20题

16.试题编号:J1-16 《中学生数学辅助学习系统》关键算法

(1)任务描述 由于中学数学是培养数学思维的基础阶段,为了让学生打造一个坚实的数学基础,A 学 校决定开发一个中学生数学辅助学习系统,通过完成趣味试题,采用游戏通关的方式,帮助 中学生初步掌握二元一次方程解简单应用题的方法和步骤,并会列出二元一次方程解简单的 应用题。

任务一:实现汽车与摩托问题的关键算法并绘制流程图(30 分) 在一个停车场内,汽车、摩托车共停了 48 辆,其中每辆汽车有 4 个轮子,每辆摩托车 有 3 个轮子,这些车共有 172 个轮子,编程输出停车场内有汽 车和摩托车的数量。 注意:用循环语句实现。

public class Teast1 {

	public static void main(String[] args) {
		//定义x为汽车数量,y为摩托车数量
		int x=1;
		while (x<48) {
			if (x*4+(48-x)*3==172) {
				System.out.println("汽车的数量为:"+x);
				System.out.println("摩托车的数量为:"+(48-x));
			}
		}
	}
}

任务二:实现鸡兔同笼问题的关键算法并绘制流程图(30 分) 已知鸡和兔的总数量为 n,总腿数为 m。输入 n 和 m,依次输出鸡和兔的数目,如果无解, 则输出“No answer”(不要引号)。注意:用循环语句实现。

import java.util.Scanner;

public class Test2 {

	public static void main(String[] args) {
		int j,t;
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入鸡兔的总数:");
		int n=scanner.nextInt();
		System.out.println("请输入鸡兔的腿总数:");
		int m=scanner.nextInt();
		jito(n, m);
	}
	
	public static void jito(int n,int m) {
		int count=1;//鸡
		for ( count = 1; count <n; count++) {
			if ((count*2+(n-count)*4)==m) {
				System.out.println(count);
				System.out.println(n-count);
			}else {
				System.out.println("NO answer");
			}
		}
	}
}

任务三:实现合格电视机问题的关键算法并绘制流程图(30 分) 某电视机厂每天生产电视 500 台,在质量评比中,每生产一台合格电视机记 5 分,每生 产一台不合格电视机扣 18 分。如果四天得了 9931 分,编程计算这四天生产的合格电视机的 台数,并输出。 注意:用循环语句实现。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3

public class Test1 {

	public static void main(String[] args) {
		// 设合格的电视机台数为x
		int x = 1;
		// 不合格的电视机台数为4*500-x;
		for (x = 1; x < 2000; x++) {
			if (5 * x - (500 * 4 -x) * 18 == 9931) {
				System.out.println("合格的电视机台数为:" + x);
			}

		}
	}
}

17.试题编号:J1-17《几何图形公式记忆系统》关键算法

(1)任务描述 由于几何图形的公式繁多且不好记忆,为了让学生能快速并轻松的记住这些公式,A 学 校决定开发一个几何图形公式记忆系统,通过完成趣味试题,采用游戏通关的方式,帮助学 生轻松记住几何图形的公式。请完成以下任务。

任务一:实现图形计算功能 1 关键算法并绘制流程图(30 分) 输入一个正方体的变长(a)计算盒子体积。 注意:结果保留两位小数。

import java.util.Scanner;

public class Task1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入正方体的边长:");
		int x = sc.nextInt();

		volume(x);
	}

	/**
	 * 输入正方体的边长,求正方体的体积
	 * 
	 * @return 正方体的体积
	 */
	public static int volume(int x) {
		int v = 0;
		v = x * x * x;
		System.out.println("正方体的体积为:" + v);
		return v;
	}

} 

任务二:实现图形计算功能 2 关键算法并绘制流程图(30 分) 输入三个数,分别是圆柱体底圆的高 h,半径 r,请你编程求出该圆柱的表面积。 注意:PI = 3.14,输出结果保留两位小数。

import java.text.DecimalFormat;
import java.util.Scanner;

public class Task2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入圆柱体的半径:");
		double r = sc.nextDouble();
		System.out.println("请输入圆柱体的高:");
		double h = sc.nextDouble();

		volume(r, h);
	}

	/**
	 * 键盘输入圆柱体的高的半径,求圆柱体的体积
	 * 
	 * @param r
	 *            圆柱体的半径
	 * @param h
	 *            圆柱体的高
	 * @return 圆柱体的体积
	 */
	public static double volume(double r, double h) {
		double v = 0;
		v = 3.14 * r * r * h;
		DecimalFormat df = new DecimalFormat("######0.00");
		System.out.println("圆柱体的体积为:" + df.format(v));
		return v;
	}

}

任务三:实现图形计算功能 3 关键算法并绘制流程图(30 分) 输入三个数,分别是三角形的三条边 a,b,c,请你编程求出该三角形边长。 注意:题目的输入数据合法。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3 18.试题编号:

import java.util.Scanner;

public class Task3 {

	public static void main(String[] args) {
				Scanner sc = new Scanner(System.in);
				System.out.println("请输入三角形的边长:");
				double a = sc.nextDouble();
				System.out.println("请输入三角形的边长:");
				double b = sc.nextDouble();
				System.out.println("请输入三角形的边长:");
				double c = sc.nextDouble();

				perimeter(a, b, c);
			}

			/**
			 * 输入三个数,分别是三角形的三条边 a,b,c,请你编程求出该三角形周长。
			 * 
			 * @param a
			 *            三角形的边长
			 * @param b
			 *            三角形的边长
			 * @param c
			 *            三角形的边长
			 * @return 三角形的周长
			 */
			public static double perimeter(double a, double b, double c) {
				double C = 0;
				if (a + b > c && a + c > b && b + c > a) {
					C = a + b + c;
					System.out.println("三角形的周长为:" + C);
				} else {
					System.out.println("您输入的边长不能构成三角形");
				}
				return C;
			}

	}

J1-18《在线考试系统》关键算法

(1)任务描述 在线考试系统可以节约大量的纸张,也能大大减轻阅卷的工作量。越来越多的学校开始 引进在线考试系统。题库是该系统的关键模块,题库中每道题均需提供参考答案,请完成以 下任务来充实在线考试系统的题库。

任务一:实现细胞繁衍关键算法并绘制流程图(30 分) 有一种细胞,从诞生第二天开始就能每天分裂出一个新的细胞,新的细胞在第二天又开 始繁衍。假设在第一天,有一个这样的细胞,请问,在第 N 天晚上,细胞的数量是多少?输 入一个整数 N(0 < N < 20),请编程求解第 N 天该细胞的数量。例如输入 5,输出答案为 32。 注意:使用循环或者递归完成。

import java.util.Scanner;

/**
 * 求解第N天该细胞的数量
 * 
 * @author acer
 *
 */
public class Task1 {

	public static void main(String[] args) {

		int sum = 0; // 细胞的数量
		int start = 1; // 第一天细胞的数量

		System.out.println("请输入天数: ");
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		if (N > 0 && N < 20) {
			for (int i = 0; i < N; i++) {

				start = start * 2;

				sum = start;

			}

			System.out.println(sum);
		} else {
			System.out.println("您输入的整数有误");
		}
	}
}

任务二:实现超级楼梯关键算法并绘制流程图(30 分) 有一楼梯共 M 级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第 M 级, 共有多少种走法?输入一个整数 M(1<=M<=40),表示楼梯的级数。例如: 上到第二层就有 2 种 第三层就 3 种 第四层就有 5 种 第五层就有 8 种 第六 就有 13 种 …… 注意:使用递归或循环实现。

import java.util.Scanner;

public class Task2 {

	public static void main(String[] args) {

		System.out.println("请输入一个整数: ");
		Scanner scanner = new Scanner(System.in);
		int M = scanner.nextInt();
		if (M >= 1 && M <= 40) {
			int num = louCeng(M);
			System.out.println(num);

		} else {
			System.out.println("您输入的整数有误");
		}

	}

	/**
	 * 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级, 共有多少种走法?输入一个整数M(1<=M<=40),表示楼梯的级数
	 * 
	 * @param M
	 * @return
	 */
	public static int louCeng(int M) {
		int f1 = 1; // 第一层
		int f2 = 2; // 第二层
		int sum = 0;
		for (int i = 1; i < M; i++) {
			if (i > 1) {
				sum = f2 + f1;
				f1 = f2;
				f2 = sum;

			} else {
				sum = 2;
			}
		}
		return sum;
	}

}

任务三:实现手机短号计算关键算法并绘制流程图(30 分) 大家都知道,手机号是一个 11 位长的数字串,同时作为学生,还可以申请加入校园网, 如果加入成功,你将另外拥有一个短号。假设所有的短号都是 6+手机号的后 5 位,比如号 码为 13512345678 的手机,对应的短号就是 645678。
现在,如果给你一个 11 位长的手机号码,你能找出对应的短号吗?要求:输入一个手 机号输出对应的手机短号。
注意:使用递归实现或循环实现。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3

import java.util.Scanner;

/**
 * 大家都知道,手机号是一个 11 位长的数字串,同时作为学生, 还可以申请加入校园网, 如果加入成功,你将另外拥有一个短号。 假设所有的短号都是
 * 6+手机号的后 5 位
 * 
 * @author acer
 *
 */
public class Task3 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.print("请输入手机号码:");
		String phone = s.next();
		String shortPhone = 6 + phone.substring(phone.length() - 5, phone.length());
		System.out.println("短号为:" + shortPhone);
	}

}

19.试题编号:J1-19《OJ 系统》题库关键算法

(1)任务描述 在线评判系统(简称 OJ,Online Judge)指在线用来评判程序的正确性、时间与效率空间 效率的评判系统。现需要为特定题目设计正确算法以便扩充题库,请完成以下任务。

任务一:实现问题一关键算法并绘制流程图(30 分) 编写一个程序,该程序读取一个字符串,然后输出读取的空格数目。 注意:输入字符串的长度不超过 30 个字符(含空格)。

import java.util.Scanner;

/*
*截取空格
*/
public class Task1 {
	public static void main(String[] args) {
		System.out.print("输入字符串:");
		Scanner s = new Scanner(System.in);
		System.out.print(fun(s.nextLine()));
	}
	public static int fun(String n) {
		int count = 0;
		for (int i = 0; i < n.length(); i++) {
			char sig = n.charAt(i);
			if (sig == ' ') 
				count++;
		}
		return count;
	}
}

任务二:实现问题二关键算法并绘制流程图(30 分) 中国古代的《算经》记载了这样一个问题:公鸡 5 文钱 1 只,母鸡 3 文钱 1 只,小鸡 1 文钱 3 只,如果用 100 文钱买 100 只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?现在请 你编程求出所有的解,每个解输出 3 个整数,打印在一行,用空格隔开,分别代表买的公鸡、 母鸡、小鸡的数量。 注意:100 文钱要正好用完。请输出所有的解,每个解占一行。

public class Task2 {

	public static void main(String[] args) {
		ji();

	}
	/**
	 * 公鸡 5 文钱 1 只,母鸡 3 文钱 1 只,小鸡 1文钱 3 只,
	 * 如果用 100 文钱买 100 只鸡,那么公鸡、母鸡和小鸡
	 * 各应该买多少只呢?现在请你编程求出所有的解,每个解
	 * 输出 3 个整数,打印在一行,用空格隔开,分别代表买的
	 * 公鸡、母鸡、小鸡的数量。
	 */
	public static void ji() {
		int x = 0;// 公鸡
		int y = 0;// 母鸡
		int z = 0;// 小鸡

		for (int i = 0; i < 20; i++) {
			for (int j = 0; j < 33; j++) {
				for(int k =0; k<300; k++){
					if (i*5 + j*3 + k/3 == 100 && i+j+k ==100) {
						x = i;
						y = j;
						z = (100-i-j);
						break;
				}
				}
			}

		}
		System.out.println("公鸡有:"+x+"只");
		System.out.println("母鸡有:"+y+"只");
		System.out.println("小鸡有:"+z+"只");
		

	}

}

任务三:实现问题三关键算法并绘制流程图(30 分) 有一天爱因斯坦给他的朋友出了一个题目,有一个楼,其两层之间有一个很长的阶梯。 如果一个人每步上 2 阶,最后剩 1 阶;如果一个人每步上 3 阶,最后剩 2 阶;如果一个人每 步上 5 阶,最后剩 4 阶;如果一个人每步上 6 阶,最后剩 5 阶;如果一个人每步上 7 阶,最 后刚好一阶也不剩。问这个阶梯至少有多少阶呢? 注意:请编程求出最小的一个答案并输出。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3 20.试题编号:

public class Task3 {

	public static void main(String[] args) {
		jieTi();
	}
	
	/**
	 * 有一个楼,其两层之间有一个很长的阶梯。
	 * 如果一个人每步上 2 阶,最后剩 1 阶;
	 * 如果一个人每步上 3 阶,最后剩 2 阶;
	 * 如果一个人每步上 5 阶,最后剩 4 阶;
	 * 如果一个人每步上 6 阶,最后剩 5 阶;
	 * 如果一个人每步上 7 阶,最后刚好一阶也不剩。
	 * 问这个阶梯至少有多少阶呢?
	 */
	public static void jieTi(){
		int x =0;
		
		while(true){
			x++;
			if(x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0){
				break;
			}
		}
		
		System.out.println("有"+x+"阶");
		
	}
}

J1-20《统计问题处理系统》关键算法

(1)任务描述 统计学是通过搜索、整理、分析、描述数据等手段,以达到推断所测对象的本质,甚至 预测对象未来的一门综合性科学。其中用到了大量的数学及其它学科的专业知识,它的使用 范围几乎覆盖了社会科学和自然科学的各个领域。某公司设计出一款统计问题处理系统,系 统需要不断进行样本“训练”,以完成复杂的统计功能。为实现该系统,请完成以下任务。
任务一:实现统计问题 1 关键算法并绘制流程图(30 分) 输出数组第 k 大的数。 说明:首先输入一个整数 n,代表数组的长度,随后输入 n 个数,代表数组的元素,最 后输入一个整数 k,你需要输出这 n 个数中第 k 大的数(0<k<=n)。 例如输入: 5 5 3 1 2 4 3 输出这 5 个数中第 3 大的数:
3 注意:使用数组完成。

import java.util.Scanner;

public class Task1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组长度:");
		int n=sc.nextInt();
		
		int[] arr=new int [n];
		System.out.println("请输入"+n+"个数:");
		for(int i=0;i<arr.length;i++){
			arr[i]=sc.nextInt();
		}
		int num=maoPaoSort(arr);
		System.out.println(num);
	}
	/**
	 * 输出数组第 k 大的数
	 * @param arr
	 * @return
	 */
	public static int maoPaoSort(int [] arr){
		for(int i=0;i<arr.length-1;i++){
			for (int j = 0; j < arr.length-i-1; j++) {
				if(arr[j]<arr[j+1]){
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}			
		}
		Scanner sca=new Scanner(System.in);
		
		System.out.println("请输入要输出第几大的数:");
		int a = sca.nextInt();
	
		for(int i=0;i<arr.length;i++){	
			if(a-1==i){
				int c = arr[i];
				return c;				
			}
		}
		return 0;		
	}
}

任务二:实现统计问题 2 关键算法并绘制流程图(30 分) 统计给定的 n 个数中,负数、零和正数的个数。对于每组输入数据,输出一行 a,b 和 c, 分别表示给定的数据中负数、零和正数的个数。首先输入一个数 n,代表有需要统计的有 n 个数,然后输入 n 个数。

例如输入:

5

1 2 3 0 -4

输出: 1 1 3 注意:使用数组和判断语句完成。

/**
 * 统计给定的 n 个数中,负数、零和正数的个数。对于每组输入数据,输出一行 a,b 和 c, 分别表示给定的数据中负数、零和正数的个数。首先输入一个数
 * n,代表有需要统计的有 n 个数,然后输入 n 个数
 * 
 * @author 
 * 
 */
public class Task2 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 0, -4 };
		int zero = 0;
		int zheng = 0;
		int fu = 0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == 0) {
				zero++;
			} else if (arr[i] > 0) {
				zheng++;
			} else {
				fu++;
			}
		}

		System.out.println(fu + "," + zero + "," + zheng);
	}

}

任务三:实现统计问题 3 关键算法并绘制流程图(30 分) 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从 1 开始写出自然数 1,2,3,4,5,6,....。1 就是第一个幸运数。我们从 2 这个数开 始。把所有序号能被 2 整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 ....把它们缩紧,重新记 序,为:1 3 5 7 9 .... 。这时,3 为第 2 个幸运数,然后把所有能被 3 整除的序号位置 的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, ...。 此时 7 为第 3 个幸运数,然后再删去序号位置能被 7 整除的(19,39,...) ,最后剩下的序列 类似:1, 3, 7, 9, 13, 15, 21, 25……。 注意:请你根据幸运数的生成规则,编写程序打印 100 以内的幸运数。输出占一行,每 个数字后面输出一个空格。 (2)作品提交要求见本模块附录 1 (3)实施条件要求见本模块附录 2 (4)评价标准见本模块附录 3

import java.util.LinkedList;

/**
 * 请你根据幸运数的生成规则,编写程序打印 100 以内的幸运数。输出占一行,每
 * 个数字后面输出一个空格
 * 
 * 
 */
public class Tastk3 {
	public static void main(String[] args) {
		LinkedList<Integer> arr = new LinkedList<Integer>();
		for (int i = 1; i <= 100; i++) {
			arr.add(i);
		}

		int delIndex = 2;
		int i = 1;
		while (i < 3) {
			for (int j = arr.size() - 1; j >= 1; j--) {
				if ((j + 1) % delIndex == 0) {
					arr.remove(j);
				}
			}
			i++;
			delIndex++;
		}

		System.out.println(arr);
	}
}

  

 

posted @ 2018-09-19 11:47  等待の喵  阅读(8297)  评论(1编辑  收藏  举报