2016第七届蓝桥杯大赛CC++大学C组省赛真题

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

第七届蓝桥杯大赛个人赛省赛(软件类)

C/C++ 大学C组

一、试题 (2)

1、报纸页数 (2)

2、煤球数目 (2)

3、平方怪圈 (2)

4、打印方格 (2)

5、快速排序 (4)

6、凑算式 (5)

7、寒假作业 (6)

8、冰雹数 (6)

9、卡片换位 (7)

10、密码脱落 (9)

二、我的作答 (10)

1、2852 (10)

2、171700 (10)

3、145 (10)

4、for(col=0; col

5、swap(a,p,j) (10)

6、32990530 (10)

7、4(猜的) (10)

8、代码 (10)

9、 (10)

10、代码 (10)

一、试题

1、报纸页数

X星球日报和我们地球的城市早报是一样的,

都是一些单独的纸张叠在一起而已。每张纸印有4版。

比如,某张报纸包含的4页是:5,6,11,12,

可以确定它应该是最上边的第2张报纸。

我们在太空中捡到了一张X星球的报纸,4个页码分别是:

1125,1126,1727,1728

请你计算这份报纸一共多少页(也就是最大页码,并不是用了几张纸哦)?

请填写表示总页数的数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

2、煤球数目

有一堆煤球,堆成三角棱锥形。具体:

第一层放1个,

第二层3个(排列成三角形),

第三层6个(排列成三角形),

第四层10个(排列成三角形),

....

如果一共有100层,共有多少个煤球?

请填表示煤球总数目的数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

3、平方怪圈

如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。

对新产生的正整数再做同样的处理。

如此一来,你会发现,不管开始取的是什么数字,

最终如果不是落入1,就是落入同一个循环圈。

请写出这个循环圈中最大的那个数字。

请填写该最大数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

4、打印方格

小明想在控制台上输出m x n 个方格。

比如10x4的,输出的样子是:

+---+---+---+---+---+---+---+---+---+---+

| | | | | | | | | | |

+---+---+---+---+---+---+---+---+---+---+

| | | | | | | | | | |

+---+---+---+---+---+---+---+---+---+---+

| | | | | | | | | | |

+---+---+---+---+---+---+---+---+---+---+

| | | | | | | | | | |

+---+---+---+---+---+---+---+---+---+---+

(如果显示有问题,可以参见【图1.jpg】)

以下是小明写的程序,请你分析其流程,填写划线部分缺少的代码。#include

//打印m列,n行的方格

void f(int m, int n)

{

int row;

int col;

for(row=0; row

for(col=0; col

printf("+\n");

for(col=0; col

printf("|\n");

}

printf("+");

_____________________________; //填空

printf("\n");

}

int main()

{

f(10,4);

return 0;

}

注意:仅仅填写划线部分缺少的内容,不要添加任何已有内容或说明性文字。

5、快速排序

排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。

其思想是:先选一个“标尺”,

用它把整个队列过一遍筛子,

以保证:其左边的元素都不大于它,其右边的元素都不小于它。

这样,排序问题就被分割为两个子区间。

再分别对子区间排序就可以了。

下面的代码是一种实现,请分析并填写划线部分缺少的代码。

#include

void swap(int a[], int i, int j)

{

int t = a[i];

a[i] = a[j];

a[j] = t;

}

int partition(int a[], int p, int r)

{

int i = p;

int j = r + 1;

int x = a[p];

while(1){

while(i

while(a[--j]>x);

if(i>=j) break;

swap(a,i,j);

}

______________________;

return j;

}

void quicksort(int a[], int p, int r)

{

if(p

int q = partition(a,p,r);

相关文档
最新文档