2011年全国软件大赛模拟题及参考答案(Java高职组)

这是一份2011年的Java高职模拟试题,包含了多种类型的编程题目,旨在帮助学生掌握Java编程技巧,包括递归、数组操作、算法实现等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不是官方的答案,如有不妥,请指出。

2011 模拟 java 高职

注意:

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

说明:

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

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

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

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

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

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. 代码填空(满分4分)

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

a = a ^ b;

b = _________; b = a ^ b;

a = _________; a = a ^ b;

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

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

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

{

if(i % 7 == 0)

printf("*\n");

else if(___________________) i%10 == 0 || i/10==7

printf("*\n");

else

printf("%d\n", i);

}

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

下面的静态方法的目的是求出某个日期是该年度的第几天。试完善之。

如果传入:year=1980month=1, day=1

则返回 1

如果传入:year=1980month=2, day=1

则返回 32

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

{

int [][]days=_____________________; {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30}}

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

int sum = day ;

for(int i=0;i<month;i++) {

sum += days[flag][i];

}

return sum;

}

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

下列方法的目的是,找出1~n之间所有的平方数。试补全缺失的代码。

n=10时,输出结果是:

1 4 9

n=100时,输出结果是:

1 4 9 16 25 36 49 64 81

public static void showSqure(int n)

{

for(int i=0; i<n; i++)

{

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

{

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

}

}

System.out.println();

}

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

(a+b)n次幂的展开式中各项的系数很有规律,对于n=234时分别是:1 2 1 1 3 3 11 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个系数的计算方法,试完善之(mn都从0算起)。

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. 代码填空(满分4分)

下面的代码将数组中的元素的位置颠倒过来:

比如:原来的元素是 [1,2,3]

则颠倒后变为:[3,2,1]

public static void reverse(int[] arrs)

{

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

{

int temp = arrs[i];

arrs[i] = arrs[j];

arrs[j] = temp;

}

}

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 3 4

12 13 14 5

11 16 15 6

10 9 8 7

import java.util.Scanner;

public class MyTest {

public static void main(String[] args)

{

Scanner in = new Scanner(System.in);

int n = in.nextInt();

int value[][] = new int[n][n];

int direction = 1; // 1向右,-1向左,2向上,-2向下

int row=0;

int col=0;

for(int i=0;i<n*n;i++){

if(value[row][col]==0){

value[row][col]=i+1;

if(direction==1){ // 向右

if(col+1<n && value[row][col+1]==0){

col++;

}else{

direction=-2;

row++;

}

} // 向下

else if(direction==-2){

if(row+1<n && value[row+1][col]==0){

row++;

}else{

direction=-1;

col--;

}

}

else if(direction==-1){

if(col-1>=0 && value[row][col-1]==0){

col--;

}else{

direction=2;

row--;

}

}

else{

if(row-1>=0 && value[row-1][col]==0){

row--;

}else{

direction=1;

col++;

}

}

}

}

for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

if(j == 0)

System.out.print(value[i][j]);

else{

System.out.print(" "+value[i][j]);

}

}

System.out.println();

}

}

}

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

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

要求计算该日期与1949101日距离多少天

例如:

用户输入了:1949-10-2

程序输出:1

用户输入了:1949-11-1

程序输出:31

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Scanner;

public class MyTest {

public static

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值