您的当前位置:首页蓝桥杯模拟题(含本科,高职java,c,c++)

蓝桥杯模拟题(含本科,高职java,c,c++)

2023-04-03 来源:六九路网
1. 竞赛规则及样题(JAVA、C/C++) ............................................................................ 3

1.1. 1.2. 1.3. 1.4. 1.5. 1.6.

组别 ............................................................................................................... 3 时长 ............................................................................................................... 3 形式 ............................................................................................................... 3 参赛选手机器环境 .......................................................................................... 3 题目形式 ........................................................................................................ 4 涉及知识 ........................................................................................................ 4

1.7. 评分 ............................................................................................................... 5 2. 2011 模拟 c语言 本科 ............................................................................................. 5

2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7.

代码填空(满分2分) ................................................................................... 5 代码填空(满分3分) ................................................................................... 6 代码填空(满分3分) ................................................................................... 6 代码填空(满分5分) ................................................................................... 6 代码填空(满分6分) ................................................................................... 6 代码填空(满分9分) ................................................................................... 7 代码设计(满分5分) ................................................................................... 8

2.8. 代码设计(满分11分) ................................................................................. 8 2.9. 代码设计(满分18分) ................................................................................. 9 2.10. 代码设计(满分20分) .............................................................................. 9 3. 2011 模拟 java 本科................................................................................................. 9 3.1. 代码填空(满分2分) ................................................................................. 10

3.2. 3.3. 3.4. 3.5. 3.6. 3.7.

代码填空(满分3分) ................................................................................. 10 代码填空(满分4分) ................................................................................. 10 代码填空(满分5分) ..................................................................................11 代码填空(满分6分) ..................................................................................11 代码填空(满分9分) ................................................................................. 12 代码设计(满分5分) ................................................................................. 13

3.8. 代码设计(满分11分) ............................................................................... 13 3.9. 代码设计(满分18分) ............................................................................... 13 3.10. 代码设计(满分20分) ............................................................................ 14 4. 2011 模拟 c语言 高职 ........................................................................................... 14 4.1. 代码填空(满2分)..................................................................................... 14

4.2. 4.3. 4.4. 4.5. 4.6. 4.7. 4.8.

代码填空(满分3分) ................................................................................. 15 代码填空(满分3分) ................................................................................. 15 代码填空(满分6分) ................................................................................. 15 代码填空(满分7分) ................................................................................. 16 代码填空(满分10分) ............................................................................... 16 程序设计(满分15分) ............................................................................... 16 程序设计(满分9分) ................................................................................. 17

4.9. 程序设计(满分 12 分).............................................................................. 17 4.10. 程序设计(满分 20 分) .......................................................................... 17 5. 2011 模拟 java 高职............................................................................................... 18 5.1. 代码填空(满分3分) ................................................................................. 18 5.2. 代码填空(满分4分) ................................................................................. 18

第 1/22 页

5.3. 5.4. 5.5. 5.6. 5.7. 5.8. 5.9.

代码填空(满分3分) ................................................................................. 19 代码填空(满分5分) ................................................................................. 19 代码填空(满分2分) ................................................................................. 19 代码填空(满分9分) ................................................................................. 20 代码填空(满分4分) ................................................................................. 20 程序设计(满分15分) ............................................................................... 21 程序设计(满分9分) ................................................................................. 21

5.10. 程序设计(满分20分) ............................................................................ 21 5.11. 程序设计(满分 9 分) ............................................................................... 22

第 2/22 页

1. 竞赛规则及样题(JAVA、C/C++)

1.1. 组别

竞赛分为:高职高专c/c++, 高职高专java,本科c/c++,本科java 共4个组别。每位选手只能参加其中一个组别的竞赛。 1.2. 时长

4小时,全程封闭。 1.3. 形式

全程机考。

选手机器通过局域网连接到各个分赛区的竞赛服务器。 以服务器-浏览器方式发放试题、提交结果。 1.4. 参赛选手机器环境

 机器配置

X86 兼容机器,内存不小于1G,硬盘不小于60G Windows NT 内核系统(WindowsXP, Windows2000等)  c/c++ 开发环境:

Visual C++ 6.0 (英文,精简版)

支持ANSI C++ 标准 支持 STL

不支持 MFC,ATL类库

帮助文档(英文,chm格式) Borland C++ 3.1 (精简版)  Java 开发环境 JDK 1.5

第 3/22 页

Eclipse Helios for JavaSE JCreator 2.0

API 帮助文档(英文,中文,chm格式) 1.5. 题目形式

竞赛题目完全为客观题型,选手所提交程序的运行结果为主要评分依据。 (1)填空题

题目为若干具有一定难度梯度、分值不等的结果填空题或代码完善填空题。  结果填空题

题目描述一个具有确定解的问题。要求选手对问题的解填空。  代码填空题

题目描述一个具有确定解的问题。

题目同时给出解决该问题的代码,但其中有缺失部分。

要求选手读懂代码逻辑,对其中的空缺部分补充代码,使整段代码完整。 (2)编程题

题目为若干具有一定难度梯度、分值不等的编程题目。这些题目的要求明确、答案客观。

题目一般要用到标准输入和输出。

要求选手通过编程,对给定的标准输入求解,并通过标准输出按题目要求的格式输出解。

一般题目的难度主要集中于对算法的设计和逻辑的组织上。理论上,考生不可能通过猜测或其它非编程的手段获得问题的解。

1.6. 涉及知识

 Java高职高专组

解题所涉及的知识:基本语法、面向对象、网络编程、接口、集合、IO、多线程、内部类、异常。(数据结构、swing等图形界面不涉及,不涉及html、JSP、Tomcat、开源框架等web开发方面,不涉及JDBC、SQL等数据库编程方面)

解题允许使用的特性:JDK1.5支持的全部特性

第 4/22 页

 Java本科组

解题所涉及的知识:Java高职高专组全部知识 + 数据结构(高校《数据结构》教材中出现的经典结构,及其通过组合、变形、改良等方法创造出的变种)

解题允许使用的特性:同java高职高专组

 c/c++高职高专组

解题所涉及的知识:结构、数组、指针、标准输入输出、文件操作

(在代码填空中不会出现c++知识,不会出现ANSI C之外的windows API调用) 解题允许使用的特性:选手可以使用c风格或c++风格或混合风格解答编程大题。 允许使用ANSI C++特性。允许使用STL类库。 (不允许使用MFC类库,ATL类库)

 c/c++本科组

解题所涉及的知识:c/c++高职高专组全部知识 + 递归、函数指针、位运算 解题允许使用的特性:同 c/c++高职高专组

1.7. 评分

结果填空题:答案唯一。

程序填空题:按选手填写的代码代入程序中能否得出正确结果为判据。 编程大题:主要以选手所提交的程序的运行结果为依据(大于90%);同时会参考选手程序的编码风格、逻辑性、可读性等方面(小于10%)。

2. 2011 模拟 c语言 本科

注意:

本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:

本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。

2.1. 代码填空(满分2分)

第 5/22 页

下列代码,把一个2位整数交换十位与个位的位置。请填写缺失的代码。 例如:当x=95时,返回59。

int switch_num(int x) { }

int a = x / 10; int b = x % 10;

return __________________;

2.2. 代码填空(满分3分)

下列代码把一个二进制的串转换为整数。请填写缺少的语句;

char* p = \"1010110001100\"; int n = 0;

for(int i=0;iprintf(\"%d\\n\

n = __________________;

2.3. 代码填空(满分3分)

假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。

if(a>b) swap(&a, &b); if(b>c) swap(&b, &c); ______________________; int m = b;

2.4. 代码填空(满分5分)

计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。

int f(int m, int n) { }

if(m==0 || n==0) return 1; return _______________________;

2.5. 代码填空(满分6分)

此段代码的意图是把一个缓冲区中的整数重新排列,使得所有负数都在正数的左边。请分析其工作流程,补充缺失的代码。

第 6/22 页

void reorder(int *pData, int len) {

if(pData == NULL || len == 0) return; int *pBegin = pData; int *pEnd = ____________; while(pBegin < pEnd) {

if(*pBegin<0) {

pBegin ++; __________; }

if(*pEnd>=0) {

pEnd --; ___________; }

int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; } }

int main(int argc, char **argv) { }

for(int i=0; i<9; i++) printf(\"%d \printf(\"\\n\"); return 0;

int a[] = {1,2,3,-5,-4,5,9,-8,-1}; reorder(a, 9);

2.6. 代码填空(满分9分)

给定一个字符串,其含有的字符各不相同。程序输出该字符串的所有排列(全排列)情形。例如:给定字符串“xyz”,则程序输出:

xyz

xzy yxz yzx zyx zxy

第 7/22 页

试完善程序中空缺的部分。

void f(char *str, int len, int n) {

int main(int argc, char **argv) { }

char str[] = \"xyz\"; f(str,3,0); printf(\"\\n\"); return 0;

_______________; strcpy(str,p);

tmp = *(str+n); *(str+n) = *(str+i); *(str+i) = tmp;

int i; char tmp;

char *p = (char *)malloc(__________); if(n==len-1){

printf(\"%s\\n\for(i=n;istrcpy(p,str);

}else{

}

}

free(p);

}

2.7. 代码设计(满分5分)

625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗?

请编写程序,寻找所有这样的3位数:它的平方的末3位是这个数字本身。 输出结果中,从小到大,每个找到的数字占一行。比如那个625就输出为: 625

2.8. 代码设计(满分11分)

某游戏规则中,甲乙双方每个回合的战斗总是有一方胜利,一方失败。游戏规定:失败的一方要把自己的体力值的1/4加给胜利的一方。例如:如果双方体力值当前都是4,则经过一轮战斗后,双方的体力值会变为:5,3。

现在已知:双方开始时的体力值甲:1000,乙:2000。

第 8/22 页

假设战斗中,甲乙获胜的概率都是50%

求解:双方经过4个回合的战斗,体力值之差小于1000的理论概率。

2.9. 代码设计(满分18分)

整数的分划问题。

如,对于正整数n=6,可以分划为: 6 5+1 4+2, 4+1+1

3+3, 3+2+1, 3+1+1+1

2+2+2, 2+2+1+1, 2+1+1+1+1

1+1+1+1+1+1+1

现在的问题是,对于给定的正整数n,编写算法打印所有划分。 用户从键盘输入 n (范围1~10) 程序输出该整数的所有划分。

2.10. 代码设计(满分20分)

一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。

例如:

当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。

当N=4时,1634满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。

当N=5时,92727满足条件。

实际上,对N的每个取值,可能有多个数字满足条件。

程序的任务是:求N=21时,所有满足条件的花朵数。注意:这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。

如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。因为这个数字很大,请注意解法时间上的可行性。要求程序在3分钟内运行完毕。

3. 2011 模拟 java 本科

注意:

本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:

本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使

第 9/22 页

用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。

3.1. 代码填空(满分2分)

在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。请完善以下代码:

public class MyTest { }

public static void main(String[] args) { }

Vector a = new Vector();

for(char i='A'; i<='F'; i++) a.add(\"\" + i); for(int k=0; k<3; k++) { }

int d = ____________________________; System.out.println(a.remove(d));

3.2. 代码填空(满分3分)

不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换为十进制。试完善之。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int n = 0;

for(int i=0; iSystem.out.println(n);

char c = s.charAt(i);

if(c<'0' || c > '2') throw new RuntimeException(\"Format error\"); n = ______________________;

3.3. 代码填空(满分4分)

有如下程序,完成的功能为:找出数组中的最大元素。请填写程序的中空白,使程序运行正确。

public class test {

public static void main(String[] args) {

int array[]={0,34,67,90,21,-9,98,1000,-78};

System.out.println(new test().findMax (array, 0));

第 10/22 页

}

}

public int findMax(int array[],int index) { }

return max;

if(array==null || array.length==0) { }

int max=array[0];

if(indexif(maxmax=____________________ return 0;

3.4. 代码填空(满分5分)

电视台开宝箱节目:打进电话的人可以开启一个宝箱。箱子中有一件礼品。礼品是iphone的机率为1/12;是mp3 的机率为1/5;是洗衣粉的机率为1/2;剩余是KFC优惠券。 每次打进电话,宝箱会重置。 以下程序模拟了该抽奖过程。请填写缺失的部分。

public static void main(String[] args) { }

int i = (int) Math.random() * _____________; if (i < 5) { }

System.out.println(\"恭喜中了:iphone手机\"); System.out.println(\"恭喜中了:mp3\"); System.out.println(\"恭喜中了:洗衣粉\"); System.out.println(\"恭喜中了:KFC优惠券\"); }else if (i < 17) { } else if (i < 47) { } else {

3.5. 代码填空(满分6分)

下列代码求出一个二进制串中连续的1或连续的0出现的最大次数。请填缺失代码。 例如:s = “101100111100011”

则返回:4

又例如:s=”0111100000”

第 11/22 页

则返回:5

public static int getMaxContinuity(String s) { int max_1 = 0; int max_0 = 0;

int n_1 = 0; // 当前1连续的次数 int n_0 = 0; // 当前0连续的次数

for(int i=0; i} else { n_1++; _________; }

if(n_1 > max_1) max_1 = n_1; if(n_0 > max_0) max_0 = n_0;

}

return max_1>max_0? max_1 : max_0);

}

3.6. 代码填空(满分9分)

下列代码把16进制表示的串转换为3进制表示的串。试完善之。例如:x=“5” 则返回:“12” 又例如:x=”F” 则返回:“120”

private static int getRealValue(char x) { if(x>='0' && x<='9') return x-'0'; if(x>='a' && x<='f') return x-'a'+10; if(x>='A' && x<='F') return x-'A'+10; return 0;

}

第 12/22 页

public static String jin_zhi_16_3(String x) { }

int n = 0; // 累加真值

for(int i=0; iString t = \"\"; for(;;) { }

return t;

if(n==0) break; t = (n % 3) + t; _____________; // 填空

n = _________ + getRealValue(x.charAt(i)); // 填空

3.7. 代码设计(满分5分)

625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗?

请编写程序,寻找所有这样的3位数:它的平方的末3位是这个数字本身。

输出结果中,从小到大,每个找到的数字占一行。比如那个625就输出为: 625

3.8. 代码设计(满分11分)

考虑方程式:a^3 + b^3 = c^3 + d^3

其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。 这个方程有很多解。比如:

a = 1,b=12,c=9,d=10 就是一个解。因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。

当然,a=12,b=1,c=9,d=10 显然也是解。

如果不计abcd交换次序的情况,这算同一个解。

你的任务是:找到所有小于30的不同的正整数解。把a b c d按从小到大排列,用逗号分隔,每个解占用1行。比如,刚才的解输出为:

1,9,10,12

不同解间的顺序可以不考虑。

3.9. 代码设计(满分18分)

第 13/22 页

整数的分划问题。

如,对于正整数n=6,可以分划为: 6 5+1

4+2, 4+1+1

3+3, 3+2+1, 3+1+1+1 2+2+2, 2+2+1+1, 2+1+1+1+1

1+1+1+1+1+1+1

现在的问题是,对于给定的正整数n,编写算法打印所有划分。 用户从键盘输入 n (范围1~10) 程序输出该整数的所有划分。

3.10. 代码设计(满分20分)

一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。

例如:

当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。

当N=4时,1634满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。

当N=5时,92727满足条件。

实际上,对N的每个取值,可能有多个数字满足条件。

程序的任务是:求N=21时,所有满足条件的花朵数。注意:这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。

如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。因为这个数字很大,请注意解法时间上的可行性。要求程序在3分钟内运行完毕。

4. 2011 模拟 c语言 高职

注意:

本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:

本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。

4.1. 代码填空(满2分)

第 14/22 页

形如:“abccba”,“abcba”的串称为回文串,下列代码判断一个串是否为回文串。请补充空白的部分。

char buf[] = \"abcde11edcba\"; int x = 1;

for(int i=0; iif(___________________) { }

x = 0; break;

printf(\"%s\\n\是\":\"否\");

4.2. 代码填空(满分3分)

下列代码把一个二进制的串转换为整数。请填写缺少的语句;

char* p = \"1010110001100\"; int n = 0;

for(int i=0;iprintf(\"%d\\n\

n = __________________;

4.3. 代码填空(满分3分)

假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。

if(a>b) swap(&a, &b); if(b>c) swap(&b, &c); ______________________; int m = b;

4.4. 代码填空(满分6分)

下面函数的目的是求出某个日期是该年度的第几天。试完善之。 如果传入:year=1980,month=1, day=1 则返回 1

如果传入:year=1980,month=2, day=1 则返回 32

int getDayOfYear(int year, int month, int day) {

int days _____________________;

int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = day ;

第 15/22 页

}

for(int i=0;isum += days[flag][i];

{

return sum;

4.5. 代码填空(满分7分)

计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。

int f(int m, int n) { }

if(m==0 || n==0) return 1; return _______________________;

4.6. 代码填空(满分10分)

(a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起)。

int f(int m, int n) { }

if(m==0) return 1;

if(n==0 || n==m) return 1;

return __________________________;

4.7. 程序设计(满分15分)

从键盘输入一个整数(1~20)

则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:

输入数字2,则程序输出: 1 2 4 3

第 16/22 页

输入数字3,则程序输出: 1 2 3 8 9 4 7 6 5

输入数字4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7

4.8. 程序设计(满分9分)

从键盘输入一个日期,格式为yyyy-M-d

要求计算该日期与1949年10月1日距离多少天 例如:

用户输入了:1949-10-2 程序输出:1

用户输入了:1949-11-1 程序输出:31

4.9. 程序设计(满分 12 分)

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:

1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881

则奇数、偶数位(用红色标出)分布:5432123456788881 奇数位和=35

偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。 最后35+35=70 可以被10整除,认定校验通过。

请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。

比如,用户输入:356827027232780

程序输出:成功

4.10. 程序设计(满分 20 分)

任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大

第 17/22 页

的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。

比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:

[82962, 75933, 63954, 61974]

其中数字的先后顺序可以不考虑。

5. 2011 模拟 java 高职

注意:

本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:

本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。

5.1. 代码填空(满分3分)

以下程序打印出0~9的数字,请补充缺少的代码。

public class MyTest { }

public static void f(int begin, int end) { }

public static void main(String[] args) { }

f(0,9);

__________________;

System.out.println(begin); f(begin+1, end);

5.2. 代码填空(满分4分)

如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过渡,但也可以在不借助任何其它变量的情况下完成。试填写缺失的代码。

第 18/22 页

a = a ^ b; b = _________; a = _________;

5.3. 代码填空(满分3分)

许多人都曾经玩过“拍七”游戏。规则是:大家依次从1开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过(比如:7,14,17等都不能数出),下一人继续数下面的数字。违反规则者受罚。下面的程序模拟这个过程,拍7的情况输出“*”,请完善之。

for(int i=1; i<100; i++) { }

if(i % 7 == 0)

printf(\"*\\n\"); printf(\"*\\n\"); printf(\"%d\\n\else if(___________________) else

5.4. 代码填空(满分5分)

下面的静态方法的目的是求出某个日期是该年度的第几天。试完善之。 如果传入:year=1980,month=1, day=1

则返回 1

如果传入:year=1980,month=2, day=1 则返回 32

public static int getDayOfYear(int year, int month, int day) { }

int [][]days=_____________________;

int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = day ;

for(int i=0;isum += days[flag][i];

{

return sum;

5.5. 代码填空(满分2分)

下列方法的目的是,找出1~n之间所有的平方数。试补全缺失的代码。 当n=10时,输出结果是:

第 19/22 页

1 4 9

当n=100时,输出结果是: 1 4 9 16 25 36 49 64 81

public static void showSqure(int n) { }

for(int i=0; iSystem.out.println();

for(int j=1; j<=i; j++) { }

if(i==_____________) System.out.print(i + \" \");

5.6. 代码填空(满分9分)

(a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:

1

1 1 1 2 1 1 3 3 1 1 4 6 4 1

1 5 10 10 5 1

下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起)。

public static int f(int m, int n) { }

if(m==0) return 1;

if(n==0 || n==m) return 1;

return __________________________;

5.7. 代码填空(满分4分)

下面的代码将数组中的元素的位置颠倒过来: 比如:原来的元素是 [1,2,3] 则颠倒后变为:[3,2,1]

public static void reverse(int[] arrs) {

第 20/22 页

for (int i = 0, j = arrs.length - 1; i <_________ ; i++, j--) { }

}

int temp = arrs[i]; arrs[i] = arrs[j]; arrs[j] = temp;

5.8. 程序设计(满分15分)

从键盘输入一个整数(1~20)

则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:

输入数字2,则程序输出:

1 2 4 3

输入数字3,则程序输出: 1 2 3 8 9 4

7 6 5

输入数字4, 则程序输出: 1 2 12 13 11 16 10 9

3 14 15 8

4 5 6 7

5.9. 程序设计(满分9分)

从键盘输入一个日期,格式为yyyy-M-d

要求计算该日期与1949年10月1日距离多少天 例如:

用户输入了:1949-10-2 程序输出:1

用户输入了:1949-11-1 程序输出:31

5.10. 程序设计(满分20分)

任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。

比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

第 21/22 页

请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:

[82962, 75933, 63954, 61974]

其中数字的先后顺序可以不考虑。

5.11. 程序设计(满分 9 分)

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:

1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881

则奇数、偶数位(用红色标出)分布:5432123456788881 奇数位和=35

偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。 最后35+35=70 可以被10整除,认定校验通过。

请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。

比如,用户输入:356827027232780 程序输出:成功

第 22/22 页

因篇幅问题不能全部显示,请点此查看更多更全内容