第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx

上传人:b****7 文档编号:22933796 上传时间:2023-02-06 格式:DOCX 页数:19 大小:50.15KB
下载 相关 举报
第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx_第1页
第1页 / 共19页
第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx_第2页
第2页 / 共19页
第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx_第3页
第3页 / 共19页
第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx_第4页
第4页 / 共19页
第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx

《第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

第四届蓝桥杯全国软件大赛预赛CC++本科A组试题Word文件下载.docx

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

对于编程题目,要求选手给出的解答完全符合ANSIC++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。

代码中允许使用STL类库,但不能使用MFC或ATL等非ANSIC++标准的类库。

例如,不能使用CString类型(属于MFC类库)。

注意:

main函数需要返回0

所有依赖的函数必须明确地在源文件中#include<

xxx>

,不能通过工程设置而省略常用头文件。

所有源码必须在同一文件中。

调试通过后,拷贝提交。

提交时,注意选择所期望的编译器类型。

结果填空(满分4分)

问题的描述在考生文件夹下对应题号的“题目描述.txt”中。

相关的参考文件在同一目录中。

请先阅读题目,不限解决问题的方式,只要求提交结果。

必须通过浏览器提交答案。

题目标题:

高斯日记

大数学家高斯有个好习惯:

无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:

4210

后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。

这或许也是个好习惯,它时时刻刻提醒着主人:

日子又过去一天,还有多少时光可以用于浪费呢?

高斯出生于:

1777年4月30日。

在高斯发现的一个重要定理的日记上标注着:

5343,因此可算出那天是:

1791年12月15日。

高斯获得博士学位的那天日记上标着:

8113

请你算出高斯获得博士学位的年月日。

提交答案的格式是:

yyyy-mm-dd,例如:

1980-03-21

请严格按照格式,通过浏览器提交答案。

只提交这个日期,不要写其它附加内容,比如:

说明性的文字。

 

结果填空(满分6分)

排它平方数

小明正看着203879这个数字发呆。

原来,203879*203879=41566646641

这有什么神奇呢?

仔细观察,203879是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。

具有这样特点的6位数还有一个,请你找出它!

再归纳一下筛选要求:

1.6位正整数

2.每个数位上的数字不同

3.其平方数的每个数位不含原数字的任何组成数位

答案是一个6位的正整数。

请通过浏览器提交答案。

只提交另一6位数,题中已经给出的这个不要提交。

不要书写其它的内容(比如:

说明性的文字)。

标题:

振兴中华

小明参加了学校的趣味运动会,其中的一个项目是:

跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:

(也可参见p1.jpg)

从我做起振

我做起振兴

做起振兴中

起振兴中华

比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。

一直要跳到“华”字结束。

要求跳过的路线刚好构成“从我做起振兴中华”这句话。

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?

答案是一个整数,请通过浏览器直接提交该数字。

不要提交解答过程,或其它辅助说明类的内容。

结果填空(满分13分)

颠倒的价牌

小李的店里专卖其它店中下架的样品电视机,可称为:

样品电视专卖店。

其标价都是4位数字(即千元不等)。

小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。

这种价牌有个特点,对一些数字,倒过来看也是合理的数字。

如:

1256890都可以。

这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:

1958倒着挂就是:

8561,差了几千元啊!

!

当然,多数情况不能倒读,比如,1110就不能倒过来,因为0不能作为开始数字。

有一天,悲剧终于发生了。

某个店员不小心把店里的某两个价格牌给挂倒了。

并且这两个价格牌的电视机都卖出去了!

庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。

请根据这些信息计算:

赔钱的那个价牌正确的价格应该是多少?

答案是一个4位的整数,请通过浏览器直接提交该数字。

代码填空(满分5分)

请先阅读题目,不限解决问题的方式。

只要求填写缺失的代码部分,千万不要画蛇添足,填写多余的已有代码或符号。

题目标题:

前缀判断

如下的代码判断needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL。

比如:

"

abcd1234"

就包含了"

abc"

为前缀

char*prefix(char*haystack_start,char*needle_start)

{

char*haystack=haystack_start;

char*needle=needle_start;

while(*haystack&

&

*needle){

if(______________________________)returnNULL;

//填空位置

}

if(*needle)returnNULL;

returnhaystack_start;

}

请分析代码逻辑,并推测划线处的代码,通过网页提交。

仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!

代码填空(满分10分)

标题:

逆波兰表达式

正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便。

例如:

3+5*(2+6)-1

而且,常常需要用括号来改变运算次序。

相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为:

-+3*5+261

不再需要括号,机器可以用递归的方法很方便地求解。

为了简便,我们假设:

1.只有+-*三种运算符

2.每个运算数都是一个小于10的非负整数

下面的程序对一个逆波兰表示串进行求值。

其返回值为一个结构:

其中第一元素表示求值结果,第二个元素表示它已解析的字符数。

structEV

intresult;

//计算结果

intn;

//消耗掉的字符数

};

structEVevaluate(char*x)

structEVev={0,0};

structEVv1;

structEVv2;

if(*x==0)returnev;

if(x[0]>

='

0'

&

x[0]<

9'

){

ev.result=x[0]-'

;

ev.n=1;

returnev;

v1=evaluate(x+1);

v2=_____________________________;

if(x[0]=='

+'

)ev.result=v1.result+v2.result;

*'

)ev.result=v1.result*v2.result;

-'

)ev.result=v1.result-v2.result;

ev.n=1+v1.n+v2.n;

returnev;

程序设计(满分4分)

请先阅读题目,必须通过编程的方式解决问题。

仔细阅读程序的输入、输出要求,千万不要输出没有要求的、多余的内容,例如:

“请您输入xx数据:

”。

建议仔细阅读示例,不要想当然!

程序处理完一个用例的数据后,立即退出(return0),千万不要循环等待下一个用例的输入。

程序必须使用标准输入、标准输出,以便于机器评卷时重定向。

main函数结尾需要return0

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

错误票据

某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的ID号。

全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。

因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。

你的任务是通过编程,找出断号的ID和重号的ID。

假设断号不可能发生在最大和最小号。

要求程序首先输入一个整数N(N<

100)表示后面数据行数。

接着读入N行数据。

每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000)

每个整数代表一个ID号。

要求程序输出1行,含两个整数mn,用空格分隔。

其中,m表示断号ID,n表示重号ID

例如:

用户输入:

2

568119

10129

则程序输出:

79

再例如:

6

164178108109180155141159104182179118137184115124125129168196

172189127107112192103131133169158

128102110148139157140195197

185152135106123173122136174191145116151143175120161134162190

149138142146199126165156153193144166170121171132101194187188

113130176154177120117150114183186181100163160167147198111119

105120

资源约定:

峰值内存消耗<

64M

CPU消耗<

1000ms

请严格按要求输出,不要画蛇添足地打印类似:

“请您输入...”的多余内容。

只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。

程序设计(满分12分)

买不到的数目

小明开了一家糖果店。

他别出心裁:

把水果糖包成4颗一包和7颗一包的两种。

糖果不能拆包卖。

小朋友来买糖的时候,他就用这两种包装来组合。

当然有些糖果数目是无法组合出来的,比如要买10颗糖。

你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。

大于17的任何数字都可以用4和7组合出来。

本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

输入:

两个正整数,表示每种包装中糖的颗数(都不多于1000)

要求输出:

一个正整数,表示最大不能买到的糖数

47

程序应该输出:

17

35

7

3000ms

程序设计(满分16分)

剪格子

如图p1.jpg所示,3x3的格子中填写了一些整数。

我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60。

本题的要求就是请你编程判定:

对给定的mxn的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。

如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。

如果无法分割,则输出0

程序输入输出格式要求:

程序先读入两个整数mn用空格分割(m,n<

10)

表示表格的宽度和高度

接下来是n行,每行m个正整数,用空格分开。

每个整数不大于10000

程序输出:

在所有解中,包含左上角的分割区可能包含的最小的格子数目。

33

10152

20301

123

3

43

1111

130802

111100

10

(参见p2.jpg)

5000ms

程序设计(满分24分)

大臣的旅费

很久以前,T王国空前繁荣。

为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。

为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。

同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。

J是T国重要大臣,他巡查于各大城市之间,体察民情。

所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。

他有一个钱袋,用于存放往来城市间的路费。

聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。

也就是说走1千米花费11,走2千米要花费23。

J大臣想知道:

他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?

输入格式:

输入的第一行包含一个整数n,表示包括首都在内的T王国的城市数

城市从1开始依次编号,1号城市为首都。

接下来n-1行,描述T国的高速路(T国的高速路一定是n-1条)

每行三个整数Pi,Qi,Di,表示城市Pi和城市Qi之间有一条高速路,长度为Di千米。

输出格式:

输出一个整数,表示大臣J最多花费的路费是多少。

样例输入:

5

122

131

245

254

样例输出:

135

样例说明:

大臣J从城市4到城市5要花费135的路费。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1