实例 11

题目

有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?这些三位数都是多少?

分析

直接三重循环,然后加一个判断语句,让三位数的各位上的数都不相同即可!

实现

  1. /**
  2. * Created with IntelliJ IDEA.
  3. *
  4. * @author : cunyu
  5. * @version : 1.0
  6. * @email : 747731461@qq.com
  7. * @公众号 : 村雨遥
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/2 16:46
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example11
  13. * @description :
  14. */
  15. public class Example11 {
  16. public static void main(String[] args) {
  17. int count = 0;
  18. System.out.println("组成的三位数是:");
  19. for (int i = 1; i < 5; i++) {
  20. for (int j = 1; j < 5; j++) {
  21. if (i != j) {
  22. for (int k = 1; k < 5; k++) {
  23. if (i != k && j != k) {
  24. count++;
  25. System.out.print((i * 100 + j * 10 + k) + "\t");
  26. // 每打印 5 个就换行
  27. if (count % 5 == 0) {
  28. System.out.println();
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35. System.out.println("\n共有 " + count + " 个不重复的三位数");
  36. }
  37. }

结果

那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图1

实例 12

题目

企业发放的奖金根据利润提成。利润低于或等于 10 万元时,奖金可提 10%;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于10万元的部分,可提成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;40 万到60 万之间时高于 40 万元的部分,可提成 3%;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,高于 100 万元时,超过 100 万元的部分按 1% 提成,从键盘输入当月利润,求应发放奖金总数?

分析

分段计算利润即可;

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @公众号 : 村雨遥
  9. * @website : https://cunyu1943.github.io
  10. * @date : 2021/6/2 17:14
  11. * @project : Java 编程实例
  12. * @package : PACKAGE_NAME
  13. * @className : Example12
  14. * @description :
  15. */
  16. public class Example12 {
  17. public static void main(String[] args) {
  18. Scanner scanner = new Scanner(System.in);
  19. System.out.println("输入当月利润(万)");
  20. int profit = scanner.nextInt();
  21. double bonus = 0;
  22. if (profit <= 10) {
  23. bonus = profit * 0.1;
  24. } else if (10 < profit && profit <= 20) {
  25. bonus = 10 * 0.1 + (profit - 10) * 0.075;
  26. } else if (20 < profit && profit <= 40) {
  27. bonus = 10 * 0.1 + 10 * 0.075 + (profit - 20) * 0.05;
  28. } else if (40 < profit && profit <= 60) {
  29. bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (profit - 40) * 0.03;
  30. } else if (60 < profit && profit <= 100) {
  31. bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit - 60) * 0.015;
  32. } else if (profit > 100) {
  33. bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (profit - 100) * 0.01;
  34. }
  35. System.out.println("利润为 " + profit + " 时的奖金为:" + bonus + " 万");
  36. }
  37. }

结果

那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图2

实例 13

题目

一个整数,加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

分析

假设这个数是 num,那么就有:

  • num + 100 = n * n, num + 100 + 168 = m * m
  • m * m - n * n = (m + n)(m - n) = 168
  • 那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图3那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图4那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图5那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图6那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图7 至少一个是偶数
  • 那么 那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图8%20%2F%202#card=math&code=m%20%3D%20%28i%20%2B%20j%29%20%2F%202&id=WMMnf), 那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图9%20%2F%202#card=math&code=n%20%3D%20%28i%20-%20j%29%20%2F%202&id=xAghe),那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图10那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图11 要么都是偶数,要么都是奇数
  • 从上面两部推导可知,那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图12那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图13 均是不小于 2 的偶数
  • 由于 那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图14,$ j>=2$,则 那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图15
  • 接下来将 那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图16 的所有数字循环计算即可

实现

  1. /**
  2. * Created with IntelliJ IDEA.
  3. *
  4. * @author : cunyu
  5. * @version : 1.0
  6. * @email : 747731461@qq.com
  7. * @公众号 : 村雨遥
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/3 9:01
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example13
  13. * @description :
  14. */
  15. public class Example13 {
  16. public static void main(String[] args) {
  17. int m = 0;
  18. int n = 0;
  19. int num = 0;
  20. System.out.println("该数可能是:");
  21. for (int i = 1; i <= (168 / 2); i++) {
  22. if (168 % i == 0) {
  23. int j = 168 / i;
  24. if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0) {
  25. m = (i + j) / 2;
  26. n = (i - j) / 2;
  27. num = n * n - 100;
  28. System.out.print(num + "\t");
  29. }
  30. }
  31. }
  32. }
  33. }

结果

那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图17

实例 14

题目

输入某年某月某日,判断这一天是这一年的第几天?

分析

分别输入年月日,然后优先判断是否为闰年,然后根据是否闰年给出 2 月的天数,最后就是 switch 匹配月份,把天数相加即可。

实现

  1. import java.util.GregorianCalendar;
  2. import java.util.Scanner;
  3. /**
  4. * Created with IntelliJ IDEA.
  5. *
  6. * @author : cunyu
  7. * @version : 1.0
  8. * @email : 747731461@qq.com
  9. * @公众号 : 村雨遥
  10. * @website : https://cunyu1943.github.io
  11. * @date : 2021/6/3 9:39
  12. * @project : Java 编程实例
  13. * @package : PACKAGE_NAME
  14. * @className : Example14
  15. * @description :
  16. */
  17. public class Example14 {
  18. public static void main(String[] args) {
  19. Scanner scanner = new Scanner(System.in);
  20. int year = 0;
  21. int month = 0;
  22. int day = 0;
  23. System.out.println("输入年:");
  24. year = scanner.nextInt();
  25. System.out.println("输入月:");
  26. month = scanner.nextInt();
  27. System.out.println("输入日:");
  28. day = scanner.nextInt();
  29. // 判断是否是闰年
  30. // GregorianCalendar:判断年份是否是闰年的方法
  31. GregorianCalendar gre = new GregorianCalendar();
  32. // 返回true:是闰年,false:不是闰年
  33. boolean isLeapYear = gre.isLeapYear(year);
  34. // 2 月份的天数
  35. int feb = isLeapYear ? 29 : 28;
  36. int dayOfYear = 0;
  37. switch (month) {
  38. case 1:
  39. dayOfYear = day;
  40. break;
  41. case 2:
  42. dayOfYear = 31 + day;
  43. break;
  44. case 3:
  45. dayOfYear = 31 + feb + day;
  46. break;
  47. case 4:
  48. dayOfYear = 31 + feb + 31 + day;
  49. break;
  50. case 5:
  51. dayOfYear = 31 + feb + 31 + 30 + day;
  52. break;
  53. case 6:
  54. dayOfYear = 31 + feb + 31 + 30 + 31 + day;
  55. break;
  56. case 7:
  57. dayOfYear = 31 + feb + 31 + 30 + 31 + 30 + day;
  58. break;
  59. case 8:
  60. dayOfYear = 31 + feb + 31 + 30 + 31 + 30 + 31 + day;
  61. break;
  62. case 9:
  63. dayOfYear = 31 + feb + 31 + 30 + 31 + 30 + 31 + 31 + day;
  64. break;
  65. case 10:
  66. dayOfYear = 31 + feb + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;
  67. break;
  68. case 11:
  69. dayOfYear = 31 + feb + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
  70. break;
  71. case 12:
  72. dayOfYear = 31 + feb + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;
  73. break;
  74. default:
  75. System.out.println("月份输入错误");
  76. break;
  77. }
  78. System.out.println("这一天是这一年的第 " + dayOfYear + " 天!");
  79. }
  80. }

结果

那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图18

实例 15

题目

输入三个整数 num1、num2、num3,请把这三个数从小到大输出。

分析

分别输入三个数,然后两两之间比较并交换,小的在前,大的在后,最后从小到大输出三个数即可;

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @公众号 : 村雨遥
  9. * @website : https://cunyu1943.github.io
  10. * @date : 2021/6/3 10:08
  11. * @project : Java 编程实例
  12. * @package : PACKAGE_NAME
  13. * @className : Example15
  14. * @description :
  15. */
  16. public class Example15 {
  17. public static void main(String[] args) {
  18. int num1 = 0;
  19. int num2 = 0;
  20. int num3 = 0;
  21. Scanner scanner = new Scanner(System.in);
  22. System.out.println("输入第 1 个数");
  23. num1 = scanner.nextInt();
  24. System.out.println("输入第 2 个数");
  25. num2 = scanner.nextInt();
  26. System.out.println("输入第 3 个数");
  27. num3 = scanner.nextInt();
  28. // 交换 num1、num2
  29. if (num1 > num2) {
  30. int tmp = num1;
  31. num1 = num2;
  32. num2 = tmp;
  33. }
  34. // 交换 num1、num3
  35. if (num1 > num3) {
  36. int tmp = num1;
  37. num1 = num3;
  38. num3 = tmp;
  39. }
  40. // 交换 num2、num3
  41. if (num2 > num3) {
  42. int tmp = num2;
  43. num2 = num3;
  44. num3 = tmp;
  45. }
  46. System.out.format("三个数从小到大的顺序:%d < %d < %d", num1, num2, num3);
  47. }
  48. }

结果

那些年,我们一起做过的 Java 课后练习题(11 - 15) - 图19