计算机程序设计基础随堂测验2 A卷

Problem 1

编写一个程序,包含一个方法:该方法接收一个正整数 n,并打印所有乘积等于 n 的两个正整数的组合。例如,给定 n = 12,方法应打印: 1 x 12 2 x 6 3 x 4 注意:结果中两个数的顺序不区分先后,因此在上述示例中不打印 4 x 3, 6 x 2, 或 12 x 1。在main方法里调用并测试这个方法。

Solution Quiz2AProblem1.java

public class Quiz2AProblem1 {
	public static void main(String[] args) {
		int n = 12;
		printFactorizedCombinations(n);
	}

	/**
	 * 给定正整数n,打印分解成两个数的乘积
	 */
	public static void printFactorizedCombinations(int n) {
		if (n <= 1) {
			System.out.println("Wrong number. The number should be greater than 1. your input: " + n);
			return;
		}
		for(int i = 1; i <= n/2; i++) {
			// 如果n不能被i整除,进入下一循环
			if(n % i != 0) {
				continue;
			}
			int quotient = n / i;
			// 如果商小于i,结束循环。此时已经打印了所有组合
			if(quotient < i) {
				break;
			}
			System.out.println(i + " x " + quotient);
		}
	}
}

Problem 2

编写一个程序,找出函数f(x)=-x^2+2023x+2024的近似最大值。

Solution Quiz2AProblem2.java

public class Quiz2AProblem2 {
	public static void main(String[] args) {
		double bestValue = 0.;
		double step = 0.1;
		for(double x = 0.; x <2023; x +=step) {
			double newValue = getFuntionalValue(x);
			if(newValue > bestValue) {
				bestValue = newValue;
				continue;
			}else {
				break;
			}
		}
		System.out.println("The approximate optimal value of func is: " + bestValue);
		// check the approximate opt. value
		double optX = 2023./2;
		double optValue = getFuntionalValue(optX);
		System.out.println("The opt value by quadratic formula: " + optValue);
	}

	static double getFuntionalValue(double x) {
		return -x * x + 2023 * x + 2024;
	}
}