蓝桥杯软件设计大赛习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.语法知识vs 任务型

int i = 0; while(i>3) ++i; // 循环几次?

10! 共有几位数字? 100! 呢?

2.描述性vs 确定性

c语言宏定义与内联函数有什么区别?

Java static 可否修饰内部类?

一幅随机排列的扑克牌(52张),随机抽取5张,含有“对子”的概率是多少?“同花顺”的概率呢?

3.二阶魔方旋转

魔方可以对它的6个面自由旋转。

我们来操作一个2阶魔方(如图1所示):

为了描述方便,我们为它建立了坐标系。

各个面的初始状态如下:

x轴正向:绿

x轴反向:蓝

y轴正向:红

y轴反向:橙

z轴正向:白

z轴反向:黄

假设我们规定,只能对该魔方进行3种操作。分别标记为:

x 表示在x轴正向做顺时针旋转y 表示在y轴正向做顺时针旋转z 表示在z轴正向做顺时针旋转

xyz 则表示顺序执行x,y,z 3个操作

题目的要求是:

从标准输入获得一个串,表示操作序列。

程序输出:距离我们最近的那个小方块的3个面的颜色。

顺序是:x面,y面,z面。

例如:在初始状态,应该输出:

绿红白

初始状态下,如果用户输入:

x

则应该输出:

绿白橙

初始状态下,如果用户输入:

zyx

则应该输出:

红白绿

4.连通单体面积统计

BMP是常见的图像存储格式。

如果用来存黑白图像(颜色深度=1),则其信息比较容易读取。

与之相关的数据:

(以下偏移均是从文件头开始)

偏移:10字节, 长度4字节:图像数据真正开始的位置。

偏移:18字节, 长度4字节:位图的宽度,单位是像素。

偏移:22字节, 长度4字节:位图的高度,单位是像素。

从图像数据开始处,每个像素用1个二进制位表示。

从图片的底行开始,一行一行向上存储。

Windows规定图像文件中一个扫描行所占的字节数必须是4字节的倍数,不足的位均以0 填充。例如,图片宽度为45像素,实际上每行会占用

8个字节。

可以通过Windows自带的画图工具生成和编辑二进制图像。

需要在“属性”中选择“黑白”,指定为二值图像。

可能需要通过查看| 缩放| 自定义... 把图像变大比例一些,

更易于操作。

图像的左下角为图像数据的开始位置。白色对应1,黑色对应0

我们可以定义:两个点距离如果小于2个像素,则认为这两个点连通。

也就是说:以一个点为中心的九宫格中,围绕它的8个点与它都是连通的。如:t1.bmp 所示,左下角的点组成一个连通的群体;

而右上角的点都是孤立的。

程序的目标是:根据给定的黑白位图,分析出所有独立连通的群体,

输出每个连通群体的面积。所谓面积,就是它含有的像素的个数。

输入数据固定存在in.bmp中。

如示例的in.bmp,

程序应该输出:

12

81

52

133

该输出表示:共有4个连通群体。

输出的连通体面积间的顺序可以随意。

5.蚂蚁问题

有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,只能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。

6.搜索问题

一个很大的数组中,有几乎一半的记录是相同的。如何找出这个相同记录的值?

7.国庆星期几?

1949~2012 几个国庆节是星期日?

用windows日历?

用Excel?

8.四点平均距离

已知平面上若干个点的坐标。

需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数)。

比如有4个点:a,b,c,d, 则平均距离是指:ab, ac, ad, bc, bd, cd 这6个距离的平均值。

每个点的坐标表示为:横坐标,纵坐标

坐标的取值范围是:1~1000

例如,如果程序输入:

10,10

20,20

80,50

10,20

20,10

则程序应该输出:

11.38

9.排列问题

计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组

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

int f(int m, int n)

{

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

return _ _____________;

}

参考答案:f(m-1, n) + f(m, n-1)

10.取5次

A B C D中取5次,每个字母都可以重复取出,形成一个串。

现在要求,串中A出现的次数必须为偶数(0次也算偶数)。

求可以形成多少种可能的串。

参考答案:

528

// 取n次,A出现奇数次

public static int g(int n)

{

if(n==1) return 1;

return 3 * g(n-1) + f(n-1);

}

// 取n次,A出现偶次

public static int f(int n)

{

if(n==1) return 3;

return 3 * f(n-1) + g(n-1);

}

public static void main(String[] args)

{

System.out.println(f(5));

}

11.

相关文档
最新文档