### 第三届“蓝桥杯”样题(模拟 JAVA 高职) #### 一、代码填空 **1. 打印0至9** 题目要求完成一个递归函数`f`,该函数从一个给定的`begin`值开始递增直至`end`值,并在每次递增过程中打印当前值。 ```java public class MyTest { public static void f(int begin, int end) { if (begin > end) return; // 基本结束条件 System.out.println(begin); f(begin + 1, end); // 递归调用 } public static void main(String[] args) { f(0, 9); } } ``` **2. 无辅助变量交换两个整数** 题目要求在不使用额外变量的情况下实现两个整数`a`和`b`的值互换。这里利用了异或运算的特性。 ```java // 假设 a 和 b 是已经定义好的整数变量 a = a ^ b; // a = a XOR b b = a ^ b; // b = (a XOR b) XOR b = a a = a ^ b; // a = (a XOR b) XOR a = b ``` **3. 模拟“拍七”游戏** 题目要求实现一个循环,用于模拟“拍七”游戏的过程。对于含有7或7的倍数的数字,输出特殊符号(如“*”),其他数字则正常输出。 ```java for (int i = 1; i < 100; i++) { if (i % 7 == 0) { System.out.println("*"); } else if (String.valueOf(i).contains("7")) { // 检查数字是否包含7 System.out.println("*"); } else { System.out.println(i); } } ``` **4. 计算某日是该年的第几天** 题目要求编写一个方法,根据年月日计算这一天是当年的第几天。这里考虑到了闰年和平年的情况。 ```java public static int getDayOfYear(int year, int month, int day) { int[][] days = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, // 平年每个月的天数 {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; // 闰年每个月的天数 int flag = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? 1 : 0; // 判断是否为闰年 int sum = day; for (int i = 0; i < month - 1; i++) { // 注意是从0开始,所以减1 sum += days[flag][i]; } return sum; } ``` **5. 找出1至n之间的所有平方数** 题目要求找出1至n之间所有的平方数并输出。 ```java public static void showSquare(int n) { for (int i = 1; i * i <= n; i++) { // i * i <= n确保不会越界 System.out.print(i * i + " "); } System.out.println(); // 换行 } ``` **6. 杨辉三角的系数** 题目要求编写一个方法来计算杨辉三角形中第m层的第n个系数。 ```java public static int f(int m, int n) { if (m == 0) return 1; if (n == 0 || n == m) return 1; return f(m - 1, n - 1) + f(m - 1, n); // 当前系数等于上一行的相邻两个系数之和 } ``` **7. 数组反转** 题目要求反转一个整数数组。 ```java public static void reverse(int[] arrs) { for (int i = 0, j = arrs.length - 1; i < arrs.length / 2; i++, j--) { // 注意终止条件 int temp = arrs[i]; arrs[i] = arrs[j]; arrs[j] = temp; } } ``` #### 二、程序设计 **8. 螺旋矩阵填充** 题目要求根据用户输入的数字n,生成一个n×n的矩阵,其中1至n×n的数字按照顺时针螺旋形式填充。 ```java public static void fillSpiralMatrix(int n) { int[][] matrix = new int[n][n]; int num = 1; // 开始填充的数字 int rowBegin = 0, rowEnd = n - 1; int colBegin = 0, colEnd = n - 1; while (rowBegin <= rowEnd && colBegin <= colEnd) { // 向右 for (int i = colBegin; i <= colEnd; i++) { matrix[rowBegin][i] = num++; } rowBegin++; // 向下 for (int i = rowBegin; i <= rowEnd; i++) { matrix[i][colEnd] = num++; } colEnd--; // 向左 if (rowBegin <= rowEnd) { for (int i = colEnd; i >= colBegin; i--) { matrix[rowEnd][i] = num++; } rowEnd--; } // 向上 if (colBegin <= colEnd) { for (int i = rowEnd; i >= rowBegin; i--) { matrix[i][colBegin] = num++; } colBegin++; } } // 输出矩阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } ``` 以上解答覆盖了第三届“蓝桥杯”样题(模拟 JAVA 高职)的所有代码填空题及程序设计题,旨在帮助参赛选手更好地理解题目的要求,并通过实践掌握相关的JAVA编程技巧。
- 粉丝: 1
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助