• Java编程练习题Demo51-Demo60


    目录

    Demo51 (十进制到八进制)编写程序,提示用户输人一个十进制整数,然后显示对应的八进制值。在这个程序中不要使用Java的Interger.to0ctalString(int)方法。

    Demo52 (最大数的出现次数)编写程序读取整数,找出它们的最大数,然后计算该数的出现次数。

    Demo54 可以通过询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都询问生日是否是5个数字集合中的一个。

    Demo55 十六进制记数系统有16个数字:0~9,A~F。字母A、B、C、D、E和F对应于十进制数字10、11、12、13、14和15。我们现在写一个程序,提示用户输入一个十六进制数字,显示它对应的十进制数。

    Demo56 (几何:五边形的面积)编写程序,提示用户输入从五边形中心到顶点的距离,计算五边形的面积,如右图所示。

    Demo57 (几何:正多边形的面积)编写一个程序,提示用户输入边的个数以及正多边形的边长,然后显示它的面积。

    Demo58 (给出ASCII码对应的字符)编写一个程序,得到一个ASCII码的输入(0~~127之间的一个整数),然后显示该字符。

    Demo59 (十进制转十六进制)编写一个程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。

    Demo60 (检测子串)编写一个程序,提示用户输人两个字符串,检测第二个字符串是否是第一个字符串的子串。


    Demo51 (十进制到八进制)编写程序,提示用户输人一个十进制整数,然后显示对应的八进制值。在这个程序中不要使用Java的Interger.to0ctalString(int)方法。

    这里我使用了循环和递归两种方式:

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo51 {
    4. /*
    5. (十进制到八进制)编写程序,提示用户输人一个十进制整数,然后显示对应的八进制值。
    6. 在这个程序中不要使用Java的Integer.toOctalString(int)方法。
    7. */
    8. public static void main(String[] args) {
    9. Scanner scan = new Scanner(System.in);
    10. System.out.print("请输入一个整数:");
    11. int num = scan.nextInt();
    12. // System.out.println(Integer.toOctalString(num));
    13. System.out.println(toOctal(num));
    14. System.out.println(toOctal1(num));
    15. }
    16. /*
    17. 44
    18. 5 4 ==> 54
    19. */
    20. private static String toOctal(int num) {
    21. StringBuilder s = new StringBuilder();
    22. while (num / 8 > 0) {
    23. s.insert(0, num % 8);
    24. num /= 8;
    25. }
    26. s.insert(0, num);
    27. return s.toString();
    28. }
    29. private static String toOctal1(int num) {
    30. if (num < 8) {
    31. return num + "";
    32. }
    33. return toOctal(num / 8) + num % 8;
    34. }
    35. }

    结果:

    Demo52 (最大数的出现次数)编写程序读取整数,找出它们的最大数,然后计算该数的出现次数。

           假设输入是以0结束的。假定输入是3 5 2 5 5 5 0,程序找出最大数5,而5出现的次数是4。提示:维护max和count两个变量。max存储当前最大数,而count存储它的出现次数。初始状态时,将第一个数赋值给max而将count赋值为1。然后将接下来的每个数字逐个地和max进行比陵。如果这个数大于max,就将它赋值给max,同时将count重置为1。如果这个数等于max,就给count 加1。

     

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo52 {
    4. /*
    5. Demo52 (最大数的出现次数)编写程序读取整数,找出它们的最大数,然后计算该数的出现次数。
    6. 假设输入是以0结束的。假定输入是3 5 2 5 5 5 0,程序找出最大数5,而5出现的次数是4。
    7. 提示:维护max和count两个变量。max存储当前最大数,而count存储它的出现次数。
    8. 初始状态时,将第一个数赋值给max而将count赋值为1。然后将接下来的每个数字逐个地和max进行比陵。
    9. 如果这个数大于max,就将它赋值给max,同时将count重置为1。如果这个数等于max,就给count 加1。
    10. */
    11. public static void main(String[] args) {
    12. Scanner scan = new Scanner(System.in);
    13. System.out.print("请输入一系列整数(输入0结束):");
    14. int max = scan.nextInt();
    15. int count = 1;
    16. while (true) {
    17. int num2 = scan.nextInt();
    18. if (num2 != 0) {
    19. if (max < num2) {
    20. max = num2;
    21. count = 1;
    22. } else if (max == num2) {
    23. count++;
    24. }
    25. } else {
    26. break;
    27. }
    28. }
    29. System.out.println(max);
    30. System.out.println(count);
    31. }
    32. }

    结果:

    Demo53 可以使用数学方法求解许多计算问题。比如,给定一个三角形的三条边,可以通过以下公式计算角度。

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo53 {
    4. /*
    5. 可以使用数学方法求解许多计算问题。比如,给定一个三角形的三条边,可以通过以下公式计算角度。
    6. */
    7. public static void main(String[] args) {
    8. Scanner scan = new Scanner(System.in);
    9. System.out.println("请输入三角形的三条边:");
    10. double a = scan.nextInt();
    11. double b = scan.nextInt();
    12. double c = scan.nextInt();
    13. double A = countAngle(a, b, c);
    14. double B = countAngle(b, a, c);
    15. double C = countAngle(c, b, a);
    16. // System.out.println(String.format("A角%f, B角%f, C角%f", A, B, C));
    17. System.out.printf("A角%.2f, B角%.2f, C角%.2f%n", A, B, C);
    18. }
    19. private static double countAngle(double a, double b, double c) {
    20. double angle = 0;
    21. angle = Math.toDegrees(Math.acos((a * a - b * b - c * c) / (-2 * b * c)));
    22. return angle;
    23. }
    24. }

    结果:

    Demo54 可以通过询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都询问生日是否是5个数字集合中的一个。

    生日是出现这一天的每个集合的第一个数字的和。例如:如果生日是19,那么它会出现在集合1、集合2和集合5中。这三个集合的第一个数字分别是1、2和16。它们的和就是19。

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo54 {
    4. /*
    5. 可以通过询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都询问生日是否是5个数字集合中的一个。
    6. 生日是出现这一天的每个集合的第一个数字的和。例如:如果生日是19,那么它会出现在集合1、集合2和集合5中。
    7. 这三个集合的第一个数字分别是1、2和16。它们的和就是19。
    8. */
    9. public static void main(String[] args) {
    10. String set1 = " 1 3 5 7\n" + " 9 11 13 15\n"
    11. + "17 19 21 23\n" + "25 27 29 31";
    12. String set2 = " 2 3 6 7\n" + "10 11 14 15\n"
    13. + "18 19 22 23\n" + "26 27 30 31";
    14. String set3 = " 4 5 6 7\n" + "12 13 14 15\n"
    15. + "20 21 22 23\n" + "28 29 30 31";
    16. String set4 = " 8 9 10 11\n" + "12 13 14 15\n"
    17. + "24 25 26 27\n" + "28 29 30 31";
    18. String set5 = "16 17 18 19\n" + "20 21 22 23\n"
    19. + "24 25 26 27\n" + "28 29 30 31";
    20. System.out.println("集合1:\n" + set1);
    21. System.out.println("集合2:\n" + set2);
    22. System.out.println("集合3:\n" + set3);
    23. System.out.println("集合4:\n" + set4);
    24. System.out.println("集合5:\n" + set5);
    25. guessBirth();
    26. }
    27. private static void guessBirth() {
    28. Scanner scan = new Scanner(System.in);
    29. int birth = 0;
    30. for (int i = 1; i <= 5; i++){
    31. System.out.printf("生日是否是数字集合%d中的一个(请回答是或否):", i);
    32. String answer = scan.next();
    33. if (answer.equals("是")) {
    34. birth += Math.pow(2, i-1);
    35. }
    36. }
    37. System.out.println("生日是:" + birth);
    38. scan.close();
    39. }
    40. }

    结果:

    Demo55 十六进制记数系统有16个数字:0~9,A~F。字母A、B、C、D、E和F对应于十进制数字10、11、12、13、14和15。我们现在写一个程序,提示用户输入一个十六进制数字,显示它对应的十进制数。

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo55 {
    4. /*
    5. Demo55. 十六进制记数系统有16个数字:0~9,A~F。
    6. 字母A、B、C、D、E和F对应于十进制数字10、11、12、13、14和15。
    7. 我们现在写一个程序,提示用户输入一个十六进制数字,显示它对应的十进制数。
    8. */
    9. public static void main(String[] args) {
    10. Scanner scan = new Scanner(System.in);
    11. System.out.println("请输入一个十六进制数字:");
    12. String hex = scan.next();
    13. int decimal = hexToDecimal(hex);
    14. System.out.println(decimal);
    15. }
    16. /*
    17. A1
    18. A*16^1 + 1*16^0 = 161
    19. */
    20. private static int hexToDecimal(String hex) {
    21. int decimal = 0;
    22. int j = 0; // 位数-1
    23. for (int i = hex.length() - 1; i >= 0; i--) {
    24. if (hex.charAt(i) <= '9') {
    25. decimal += (hex.charAt(i) - '1' + 1) * (int) (Math.pow(16, j++));
    26. } else {
    27. decimal += (hex.charAt(i) - 'A' + 10) * (int) (Math.pow(16, j++));
    28. }
    29. }
    30. return decimal;
    31. }
    32. }

    结果:

    Demo56 (几何:五边形的面积)编写程序,提示用户输入从五边形中心到顶点的距离,计算五边形的面积,如右图所示。

    计算五边形面积的公式为:面积 = (5 × s²) / (4 × tan(π / 5)),其中s是边长。边长可以使用公式s = 2r sin(π / 5) 计算,其中r是从五边形中心到顶点的距离。结果保留小数点后两位数字。下面是一个运行示例:

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo56 {
    4. /*
    5. Demo56 (几何:五边形的面积)编写程序,提示用户输入从五边形中心到顶点的距离,计算五边形的面积,如右图所示。
    6. 计算五边形面积的公式为:面积 = (5 × s²) / (4 × tan(π / 5)),其中s是边长。
    7. 边长可以使用公式s = 2r sin(π / 5) 计算,其中r是从五边形中心到顶点的距离。
    8. 结果保留小数点后两位数字。下面是一个运行示例:
    9. */
    10. public static void main(String[] args) {
    11. Scanner scan = new Scanner(System.in);
    12. System.out.println("请输入从五边形中心到顶点的距离:");
    13. double r = scan.nextDouble();
    14. double area = opentagonArea(r);
    15. System.out.println(area);
    16. }
    17. private static double opentagonArea(double r) {
    18. double area;
    19. double s = 2 * r * Math.sin(Math.PI / 5);
    20. area = (5 * Math.pow(s, 2)) / (4 * Math.tan(Math.PI / 5));
    21. return area;
    22. }
    23. }

    结果:

    Demo57 (几何:正多边形的面积)编写一个程序,提示用户输入边的个数以及正多边形的边长,然后显示它的面积。

    正多边形是一个n条边的多边形,它每条边的长度都相等,而且所有角的度数也相等(即多边形既等边又等角)。计算正多边形面积的公式是:面积 = (n × s²) / (4 × tan(π / n)) 这里,s是边长。这里是一个运行示例:

    1. import java.util.Scanner;
    2. public class Demo57 {
    3. /*
    4. Demo57. (几何:正多边形的面积)编写一个程序,提示用户输入边的个数以及正多边形的边长,然后显示它的面积。
    5. 正多边形是一个n条边的多边形,它每条边的长度都相等,而且所有角的度数也相等(即多边形既等边又等角)。
    6. 计算正多边形面积的公式是:面积 = (n × s²) / (4 × tan(π / n)) 这里,s是边长。这里是一个运行示例:
    7. */
    8. public static void main(String[] args) {
    9. Scanner scan = new Scanner(System.in);
    10. System.out.println("请输入多边形边的个数:");
    11. double n = scan.nextDouble();
    12. System.out.println("正多边形的边长:");
    13. double s = scan.nextDouble();
    14. double area = polygonArea(n, s);
    15. System.out.println(area);
    16. }
    17. private static double polygonArea(double n, double s) {
    18. return (n * Math.pow(s, 2)) / (4 * Math.tan(Math.PI / n));
    19. }
    20. }

    结果:

    Demo58 (给出ASCII码对应的字符)编写一个程序,得到一个ASCII码的输入(0~~127之间的一个整数),然后显示该字符。

    下面是一个运行示例:

    1. package Exer;
    2. import java.util.Scanner;
    3. public class Demo58 {
    4. /*
    5. (给出ASCII码对应的字符)编写一个程序,得到一个ASCII码的输入(0~~127之间的一个整数),然后显示该字符。
    6. */
    7. public static void main(String[] args) {
    8. Scanner scan = new Scanner(System.in);
    9. System.out.println("请输入一个0~127之间的整数:");
    10. int num = scan.nextInt();
    11. asciiToChar(num);
    12. scan.close();
    13. }
    14. private static void asciiToChar(int num) {
    15. System.out.println((char) num);
    16. }
    17. }

    结果:

    Demo59 (十进制转十六进制)编写一个程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。

    下面是一个运行示例:

     此出仅为显示0-15之间的数字的十六进制,任意整数的十进制数转换十六进制,请参考:Java编程练习题Demo33-Demo40_不会敲代码的HZ的博客-CSDN博客

    1. import java.util.Scanner;
    2. public class Demo59 {
    3. /*
    4. (十进制转十六进制)编写一个程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。
    5. */
    6. public static void main(String[] args) {
    7. Scanner scan = new Scanner(System.in);
    8. System.out.print("请输入一个0~15之间的整数:");
    9. int num = scan.nextInt();
    10. if (num < 0 || num > 15) {
    11. System.out.println(num + " 是一个无效输入");
    12. }else if (num < 10) {
    13. System.out.println("十六进制值为:" + num);
    14. }else {
    15. System.out.println("十六进制值为:" + (char)(num - 10 + 'A'));
    16. }
    17. scan.close();
    18. }
    19. }

    结果:

    Demo60 (检测子串)编写一个程序,提示用户输人两个字符串,检测第二个字符串是否是第一个字符串的子串。

    1. import java.util.Scanner;
    2. public class Demo60 {
    3. /*
    4. Demo60. (检测子串)编写一个程序,提示用户输人两个字符串,检测第二个字符串是否是第一个字符串的子串。
    5. */
    6. public static void main(String[] args) {
    7. Scanner scan = new Scanner(System.in);
    8. System.out.print("请输入第一个字符串:");
    9. String s1 = scan.next();
    10. System.out.print("请输入第二个字符串:");
    11. String s2 = scan.next();
    12. judgeStringSub(s1, s2);
    13. }
    14. private static void judgeStringSub(String s1, String s2) {
    15. String maxStr = s1.length() > s2.length() ? s1: s2;
    16. String minStr = s1.length() < s2.length() ? s1: s2;
    17. // boolean isFlag = true;
    18. int j = 0;
    19. for (int i = 0; i <= maxStr.length(); i++) {
    20. if (i > maxStr.length() - minStr.length() && j == 0) {
    21. break;
    22. }
    23. if (j < minStr.length() && minStr.charAt(j) == maxStr.charAt(i)) {
    24. j++;
    25. }else if (j < minStr.length() && minStr.charAt(j) != maxStr.charAt(i)) {
    26. j = 0;
    27. }
    28. }
    29. if (j == minStr.length()) {
    30. System.out.println(minStr + "是" + maxStr + "的" + "字串");
    31. } else {
    32. System.out.println(minStr + "不是" + maxStr + "的" + "字串");
    33. }
    34. }
    35. }

    结果:

  • 相关阅读:
    【C++代码】最大二叉树,合并二叉树,二叉搜索树中的搜索,验证二叉搜索树--代码随想录
    我的互联网秋招经历
    文档信息抽取技术:从非结构化文本到结构化信息的旅程
    隐藏在背后的真相——数据存储的方式(上)
    vue.js前端框架应用案例
    C# 转义字符
    Midjourney 生成油画技巧
    软考高项-项目评估与决策&招投标
    基于AI智能视频分析技术的电力行业视频监控联网解决方案
    在金融行业做数据产品经理是什么体验
  • 原文地址:https://blog.csdn.net/weixin_51612062/article/details/126055050