java入门练习题及标准答案

  1. 表达式(立方) 编写程序,计算用户输入数据的【立方】 数据类型的选择 1. 数据当前的情况 2. 数据的延展性,后期的计算效果 用户输入的数据可以用int类型变量来保存 计算结果是一个立方效果,立方之后数据量的 增长性是非常恐怖的,所以现在double保存结果
import java.util.Scanner; 
class HomeWork1 { 
	public static void main(String[] args) { 
		int num = 0; 
		Scanner sc = new Scanner(System.in); 
		System.out.println("请输入一个整数:"); 
		num = sc.nextInt(); 
		double ret = num * num * num; 
		System.out.println("ret : " + ret); 
	} 
}
  1. 表达式(取值操作) 输入4个数,若第一个数第二个数相等,第三个数和第四个 数的 和与第一个数和第二个数的和相等,输出1,否则输出0
    1. Scanner可以获取多个数据
    2. 条件判断叠加 3.
    3. if else
import java.util.Scanner; 
class HomeWork2 { 
	public static void main(String[] args) { 
		int num1 = 0; 
		int num2 = 0; 
		int num3 = 0; 
		int num4 = 0; 
		Scanner sc = new Scanner(System.in); 
		System.out.println("请输入4个整数:"); 
		num1 = sc.nextInt(); 
		num2 = sc.nextInt(); 
		num3 = sc.nextInt(); 
		num4 = sc.nextInt(); 
		if (num1 == num2 && (num1 + num2) == (num3 + num4)) { 
			System.out.println(1); 
		} else { 
			System.out.println(0); 
		}
	} 
}
  1. 流程控制(数值比较1) 定义两个整型变量x,y,从键盘初始化变量值,判断两个变量的 大小,将较大的值赋 给变量max,将max输出,注意输入使用Scanner输入
    1. 需要使用if分支
    2. 这里需要使用一个临时变量max
import java.util.Scanner; 
class HomeWork3 { 
	public static void main(String[] args) { 
		int x = 0; 
		int y = 0; 
		int max = 0; 
		Scanner sc = new Scanner(System.in); 
		System.out.println("请输入两个整数:"); 
		x = sc.nextInt(); 
		y = sc.nextInt(); 
		if (x > y) { 
			max = x; 
		} else { 
			max = y; 
		}
		System.out.println("Max : " + max);
	}
}
  1. 流程控制(数值比较2) 定义三个整型变量x,y,z,从键盘初始化变量值,判断三 个变量的大小,将较大的值 赋给变量max,将max输出,注意输入使用Scanner输入
import java.util.Scanner; 
class HomeWork4 { 
	public static void main(String[] args) { 
		int x = 0; 
		int y = 0; 
		int z = 0; 
		int max = 0; 
		Scanner sc = new Scanner(System.in); 
		System.out.println("请输入三个整数:"); 
		x = sc.nextInt(); 
		y = sc.nextInt(); 
		z = sc.nextInt(); 
		// 假设最大值是 x,max保存x的值,参照物来完成 
		max = x; 
		// 判断y的值是否大于max 
		if (y > max) { 
			max = y; 
		}
		// 判断z的值是否大于max 
		if (z > max) { 
			max = z; 
		}
		System.out.println("max : " + max); 
	} 
}
  1. 流程控制(月份天数判断) 输入一个月数,然后输出对应月份有多少天(不考虑闰 年),将天数输出,注意输入 使用Scanner输入 比如:输入 6 输出为30 输入 2 输出为28
import java.util.Scanner; 
class HomeWork5 { 
	public static void main(String[] args) { 
		// 方案2 if else if 
		int month = 0; 
		Scanner sc = new Scanner(System.in); 
		System.out.println("请输入月份:"); 
		month = sc.nextInt(); 
		if (month < 1 || month > 12) { 
			System.out.println("输入错误");
			System.exit(0); 
		}
		if (1 == month || 3 == month || 5 == month || 
		7 == month|| 8 == month || 10 == month || 12 == month) { 
			System.out.println("31 天"); 
		} else if (2 == month) { 
			System.out.println("28 天"); 
		} else { 
			System.out.println("30 天"); 
		} 
	}
}
  1. 完成一个9*9乘法表 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
    【嵌套循环】
    1. 总计9 行数据
    2. 每一行数据和当前行号一致
class HomeWork6 { 
	public static void main(String[] args) {
		int i = 1; 
		// while i 循环控制总行数 ==> 9行 
		while (i <= 19) { 
			// 这里需要一个内循环来控制每一行的有多少个数 据 
			// 数据量 ==> 当前行号 
			int j = 1; 
			while (j <= i) { 
				System.out.print(j + "*" + i + "=" + (i * j) + " ");
				j += 1; 
			}
			System.out.println(); i += 1; 
		} 
	} 
}
  1. 将一个正整数进行分解质因数操作 例如: 输入90 结果 233*5
/*
质因数 有且被1 和 本身整除 2 3 5 7 11 13 17 19 23 90 ==> 2 * 3 * 3 * 5 15 ==> 3 * 5 
	120 == > 2 * 2 * 2 * 3 * 5 
	【问题】终止条件在哪里?
	1. 循环变量 == 被操作数 
	2. 被操作数 ==> 120 ÷ 2 ==> 60 ÷ 2 ==> 30 ÷ 2 ==> 15 ÷ 2错 
		2 += 1 ==> 3 ==> 15 ÷ 3 ==> 5 ÷ 3 错 
		3 += 1 ==> 4 ==> 5 ÷ 4 错 
		4 += 1 ==> 5 ==> 
		解出一个数字之后,需要再将循环变量保持原样 继续操作 
*/
class HomeWork7 { 
	public static void main(String[] args) { 
		// 分解质因数从2开始 
		int i = 2; 
		int num = 23; 
		// 要求i值小于等于num,继续循环 
		while (i <= num) { 
			if (num % i == 0) { 
				System.out.println("i : " + i); 
				num /= i; 
				i -= 1; 
			}
			i += 1; 
		} 
	} 
}
  1. 使用循环完成30位以内的斐波那契数列
    1 1 2 3 5 8 13 21…
    斐波那契数列 前两位固定 1 1
    之后的每一个数都是前两数之和
/*		
	num1 = 1;
	num2 = 1;
	
	==> num1 = 1; num2 = 2;
	==> num1 = 2; num2 = 3;
	
	1. 把num2的值赋值给num1,这里需要保留num1数据,为后期相加使用
	2. num1 + num2 ==> num2;
	
	数据类型考虑使用double类型,保证数据的延展性,斐波那契数列使用情况下,数据的增长性是非常恐怖的,使用double可以保证数据后期的展示真实性。
	
*/
class HomeWork8 {
	public static void main(String[] args) {
		double num1 = 1;
		double num2 = 1;
		int count = 1;
		
		System.out.print("1 1 ");
		
		while (count <= 48) {
			double temp = num1;
			num1 = num2;
			num2 += temp;
			
			System.out.print(num2 + " ");
			count += 1;
		}
	}
}
  1. 利用循环完成15的阶乘
    1 * 2 * 3 * 4 *5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15

    这里需要考虑数据的延展性!!!

class HomeWork9 {
	public static void main(String[] args) {
		int num = 1;
		double ret = 1;
		
		while (num <= 15) {
			ret *= num;
			num += 1;
		}
		
		System.out.println("ret : " + ret);
	}
}
  1. 判断一个三位数是否是水仙花数,如果是,输出YES,如果不是,输出NO
    说明: 水仙花就是一个数的每个数字的立方和等于它本身的数, 例如 153就是一个水仙
    花数 111+555+333=153
import java.util.Scanner;

class HomeWork10 {
	public static void main(String[] args) {
		int num = 0;
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个100 ~ 999之间的数据:");
		num = sc.nextInt();
		
		if (num < 100 || num > 999) {
			System.out.println("输入错误");
			System.exit(0);
		}
		
		int ones = num % 10;
		int tens = num / 10 % 10; 
        /*
        112 / 10 ==> 11
        11 % 10 ==> 1
        
        162 / 10 ==> 16
        16 % 10 ==> 6
        */
		int units = num / 100;
		
		int ret = ones * ones * ones 
		+ tens * tens * tens 
		+ units * units *units;
		
		if (ret == num) {
			System.out.println(ret + " Yes");
		} else {
			System.out.println("No");
		}
	
	}
}
  1. 逢七过,1 ~ 100以内的所有数值展示,如果带有7或者和7有关,打印过
    带有7的数
/*
		1. 个位数为7
			num % 10 == 7
		2. 十位数为7
			num / 10 == 7
			70 / 10 = 7
			75 / 10 = 7
			
			逢7过 十位为7 的举个例子呗
	7的倍数
			num % 7 == 0
			
	&& ||
	
*/
class HomeWork11 {
	public static void main(String[] args) {
		int i = 1;
		
		while (i <= 100) {
			if (i % 10 == 7 || i / 10 == 7 || i % 7 == 0) {
				System.out.println("过");
			} else {
				System.out.println(i);
			}
			
			i += 1;
		}
	}
}
  1. 逆序数值
    用户输入123456 展示654321
    用户输入987654 展示456789
/*
	123456 
			123456 ÷ 10 = 12345 ... 6
			123456 % 10 = 6
			123456 / 10 = 12345;
			
			12345 ÷ 10 = 1234 ... 5
            12345 % 10 = 5
            12345 / 10 = 1234
            
	整数和整数相除,没有小数,也没有省略
		5 ÷ 2 = 2 ... 1
		
		取余 1  5 % 2 = 1
		取商 2  5 / 2 = 2 

*/
import java.util.Scanner;

class HomeWork12 {
	public static void main(String[] args) {
		int num = 0;
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个整数:");
		num = sc.nextInt();
		
		while (num > 0) {
           /*
           println 输出结果自带一个换行
           print 输出结果不换行
           */
			System.out.print(num % 10);
			num /= 10;
		}
    }
}

你可能感兴趣的:(java)