蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

第七届蓝桥杯C语言C组-(自己懂的题目)

表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结,

先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级。。。

第一题

报纸页数

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

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

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

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

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

1125,1126,1727,1728

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

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

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

这道题我没填,说实话,没看懂,没看过报纸的孩纸

不会。。

贴吧说的。。。

1125+1126+1727+1728=1+2+X,X等于5703,5703等于2851+2852

第二题

煤球数目

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

第一层放1个,

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

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

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

….

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

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

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

#include

#include

using namespace std;

int getInt(int n) {

int n1 = 1;

int sum = n1;

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

sum = i + n1;

n1 = sum;

}

return sum;

}

int main() {

int sum = 0;

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

sum += getInt(i);

}

cout << sum << endl;

return 0;

}

我当时填的5050,计算的是第100层。。 题目要求的是100层总共多少。

答案171700

第三题

平方怪圈

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

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

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

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

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

请填写该最大数字。

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

#include

#include

#include

using namespace std;

char s[100];

int getInt(char *s) {

int sum = 0;

int len = strlen(s);

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

sum += (s[i]-'0')*(s[i]-'0');

}

return sum;

}

int main() {

int num = 3;

int MAX = 0;

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

sprintf(s, "%d", num);

num = getInt(s);

MAX = max(MAX, num);

}

cout << MAX << endl;

return 0;

}

答案145 有一些是1,可以打印出来

第四题

打印方格

11分

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

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

+—+—+—+—+—+—+—+—+—+—+

| | | | | | | | | | |

+—+—+—+—+—+—+—+—+—+—+

| | | | | | | | | | |

+—+—+—+—+—+—+—+—+—+—+

| | | | | | | | | | |

+—+—+—+—+—+—+—+—+—+—+

| | | | | | | | | | |

+—+—+—+—+—+—+—+—+—+—+

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

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

#include

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

void f(int m, int n)

{

int row;

int col;

for(row=0; rowfor(col=0; colprintf("+---");

printf("+\n");

for(col=0; colprintf("| ");

printf("|\n");

}

printf("+");

_____________________________; //填空

printf("\n");

}

int main()

{

f(10,4);

return 0;

}

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

for循环即可,反正我是这样写的

for(col=0; colprintf("---+");

//或者

for(row=0; rowprintf("---+");

第五题

13分

快速排序

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

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

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

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

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

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

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

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

#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(iwhile(a[--j]>x);

if(i>=j) break;

swap(a,i,j);

}

______________________;

return j;

}

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

{

if(pint q = partition(a,p,r);

quicksort(a,p,q-1);

quicksort(a,q+1,r);

}

}

int main()

{

int i;

int a[] = {

5,13,6,24,2,8,19,27,6,12,1,17};

int N = 12;

quicksort(a, 0, N-1);

for(i=0; iprintf("%d ", a[i]);

printf("\n");

return 0;

}

答案是swap(a,p,j)

第六题

6.

15分

凑算式

B DEF

A + — + ——- = 10

C GHI

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

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:

6+8/3+952/714 就是一种解法,

5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

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

f3782fb928984ce98e09fc9b1e5a8f5f.jpg

记住要通分,不要fabs(…) < 1E10 这样来进行约等于

dfs思路

#include

#include

#include

using namespace std;

int a1[9], book[9], COUNT = 0;

bool getSum(int *a) {

int A = a[0], B = a[1], C = a[2];

int DEF = a[3]*100+a[4]*10+a[5], GHI = a[6]*100+a[7]*10+a[8];

if ((B*GHI+DEF*C)%(C*GHI) != 0) return false;

if (A+(B*GHI+DEF*C)/(C*GHI) == 10) return true;

return false;

}

void dfs(int step) {

if (step == 9) {

if (getSum(a1)) COUNT++;

return;

}

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

if (book[i] == 0) {

book[i] = 1;

a1[step] = i+1;

dfs(step+1);

book[i] = 0;

}

}

}

int main() {

dfs(0);

cout << COUNT << endl;

return 0;

}

答案29

第七题

19分

寒假作业

现在小学的数学题目也不是那么好玩的。

看看这个寒假作业:

□ + □ = □

□ - □ = □

□ × □ = □

□ ÷ □ = □

(如果显示不出来,可以参见【图1.jpg】)

每个方块代表1~13中的某一个数字,但不能重复。

比如:

6 + 7 = 13

9 - 8 = 1

3 * 4 = 12

10 / 2 = 5

以及:

7 + 6 = 13

9 - 8 = 1

3 * 4 = 12

10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)

你一共找到了多少种方案?

还是dfs思路

#include

#include

#include

using namespace std;

int a1[13], book[13], COUNT = 0;

bool getSum(int *a) {

if (a[9]%a[10] != 0) return false;

return (

a[0]+a[1] == a[2] &&

a[3]-a[4] == a[5] &&

a[6]*a[7] == a[8] &&

a[9]/a[10] == a[11]

);

}

void dfs(int step) {

if (step == 13) {

if (getSum(a1)) COUNT++;

return;

}

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

if (book[i] == 0) {

book[i] = 1;

a1[step] = i+1;

dfs(step+1);

book[i] = 0;

}

}

}

int main() {

dfs(0);

cout << COUNT << endl;

return 0;

}

大概运行了5分钟。。

答案64

如果有好的解法,请告诉我,本人水平有限。嘿嘿

第八题

21分

冰雹数

任意给定一个正整数N,

如果是偶数,执行: N / 2

如果是奇数,执行: N * 3 + 1

生成的新的数字再执行同样的动作,循环往复。

通过观察发现,这个数字会一会儿上升到很高,

一会儿又降落下来。

就这样起起落落的,但最终必会落到“1”

这有点像小冰雹粒子在冰雹云中翻滚增长的样子。

比如N=9

9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

可以看到,N=9的时候,这个“小冰雹”最高冲到了52这个高度。

输入格式:

一个正整数N(N<1000000)

输出格式:

一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。

例如,输入:

10

程序应该输出:

52

再例如,输入:

100

程序应该输出:

9232

相信很多童鞋被这道题给坑了。。。 哈哈哈,请看清题意

一个正整数,表示不大于N的数字

好吧,是后面往前面推,在考场我不到五分钟写好代码。。。 然后跪了。。

错误代码

#include

#include

using namespace std;

int getInt(int N) {

if (N%2 == 0) return N/2;

return N*3+1;

}

int main() {

int N;

scanf("%d", &N);

int MAX = N;

while(N != 1) {

N = getInt(N);

MAX = max(MAX, N);

}

cout << MAX << endl;

return 0;

}

写完之后,感觉么么哒。。。

然后一测数据,感觉不对劲,是不是题目测试数据给错了,到了快交卷,我还是以为是测试数据错了。。

其实是我理解题意错了。

正确代码

#include

#include

using namespace std;

int getInt(int N) {

if (N%2 == 0) return N/2;

return N*3+1;

}

int main() {

int N, MAX, M;

scanf("%d", &N);

MAX = N;

for (int i = N; i >= 1; i--) {

M = i;

while(M != 1) {

M = getInt(M);

MAX = max(MAX, M);

}

}

cout << MAX << endl;

return 0;

}

如果输入的数大于122222就会超时。。

水一部分数据吧。

第九题

25

卡片换位

你玩过华容道的游戏吗?

这是个类似的,但更简单的游戏。

看下面 3 x 2 的格子

+—+—+—+

| A | * | * |

+—+—+—+

| B | | * |

+—+—+—+

在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵。

还有一个格子是空着的。

你可以把一张牌移动到相邻的空格中去(对角不算相邻)。

游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。

输入格式:

输入两行6个字符表示当前的局面

输出格式:

一个整数,表示最少多少步,才能把AB换位(其它牌位置随意)

a1efe286d52505bbe12dd84d44e925fd.png

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 1000ms

记忆化搜索

不会。。

第十道

密码脱落

X星球的考古学家发现了一批古代留下来的密码。

这些密码是由A、B、C、D 四种植物的种子串成的序列。

仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。

由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。

你的任务是:

给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。

输入一行,表示现在看到的密码串(长度不大于1000)

要求输出一个正整数,表示至少脱落了多少个种子。

例如,输入:

ABCBA

则程序应该输出:

0

再例如,输入:

ABECDCBABC

则程序应该输出:

3

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 3000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

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

注意: main函数需要返回0

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

注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

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

听大神说动态规划

不会。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于多线程的几道面试题

点击蓝字关注我们第一题&#xff1a;线程的基本概念、线程的基本状态及状态之间的关系&#xff1f;线程&#xff0c;有时称为轻量级进程&#xff0c;是CPU使用的基本单元&#xff1b;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数…

大牛谈嵌入式C语言的高级用法

点击蓝字关注我们内存管理我们需要知道——变量&#xff0c;其实是内存地址的一个抽像名字罢了。在静态编译的程序中&#xff0c;所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的&#xff0c;只知道地址。 内存的使用时程序设计中需要考虑的重要因素之一&…

博科光纤交换机java_带有光纤的可扩展,健壮和标准的Java Web服务

博科光纤交换机java这篇博客文章讨论了负载下的基准Web服务性能。 要了解有关Web服务性能理论的更多信息&#xff0c;请阅读利特尔定律&#xff0c;可伸缩性和容错 。 使用阻塞和异步IO对Web服务进行基准测试 Web应用程序&#xff08;或Web服务&#xff09;如何在负载下&#…

很棒的C语言入门笔记,推荐收藏!

点击蓝字关注我们c语言入门C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好&#xff0c;可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言&#xff0c;所以说学习…

C语言的注释要注意几点

点击蓝字关注我们如果领导给你一个项目的源码让你阅读&#xff0c;并理解重构代码&#xff0c;但里面一句注释都没有&#xff0c;我想这肯定是之前同事“删库跑路”了。看一份源码什么很重要&#xff1f;除了各种代码规范之外&#xff0c;还有一个比较重要的就是注释。注释虽然…

java自动推断类型_推断:Facebook的新Java静态分析工具

java自动推断类型如何使用Facebook的Infer改善Java开发工作流程&#xff1f; 如果您与技术话题保持同步&#xff08;如果您正在阅读此博客&#xff0c;我想您会这样做&#xff09;&#xff0c;那么您可能听说过Facebook 刚刚向公众发布的新工具&#xff1a;推断。 由于它来自F…

android官方架构组件,Android 架构组件官方文档01——LifeCycle

使用生命周期感知组件处理生命周期支持生命周期的组件执行操作以响应另一个组件(例如Activity和fragment)的生命周期状态更改。这些组件可帮助您生成组织性更好&#xff0c;并且通常更轻量的代码&#xff0c;这些代码更易于维护。常见的模式是在Activity和fragment的生命周期方…

C语言的核心和灵魂

点击蓝字关注我们提起C语言大部分开发者很自然就会想到指针二字&#xff0c;没错&#xff0c;作为C的核心和灵魂&#xff0c;它的地位咱们就不再赘述了。今天我们想跟大家讲的是指针中的两个特有名词&#xff1a;“悬空指针”和“野指针”。悬空指针C语言中的指针可以指向一块内…

javaone_JavaOne 2015 –提交技巧和建议

javaone大家都知道JavaOne 。 感觉就像一直存在。 而且&#xff0c;即使我们跌宕起伏&#xff0c;而地理位置也不是我们想要的那样&#xff0c;旧金山也很昂贵&#xff0c;而且和。 这是有关各种Java的顶级会议。 今年又再次成为程序委员会&#xff08;“ Java&#xff0c;DevO…

C语言_结构体总结,附实例源码

点击蓝字关注我们当前文章介绍动态堆空间内存分配与释放&#xff0c;C语言结构体定义、初始化、赋值、结构体数组、结构体指针的相关知识点&#xff0c;最后通过一个学生管理系统综合练习结构体数组的使用。1. 动态内存管理C语言代码----->编译----->链接------>可执行…

四大C语言知识总结

点击蓝字关注我们1、#define宏定义以#号开头的都是编译预处理指令&#xff0c;它们不是C语言的成分&#xff0c;但是C程序离不开它们&#xff0c;#define用来定义一个宏&#xff0c;程序在预处理阶段将用define定义的来内容进行了替换。因此在程序运行时&#xff0c;常量表中并…

jdbc select语句_SELECT语句使用JDBC和Hibernate批量获取

jdbc select语句介绍 现在&#xff0c;我已经介绍了Hibernate对INSERT &#xff0c; UPDATE和DELETE语句的批处理支持&#xff0c;是时候分析SELECT语句结果集的批量提取了。 JDBC ResultSet提供了一个客户端Proxy游标&#xff0c;用于获取当前语句的返回数据。 执行该语句后&…

看懂开源项目,你得熟悉这几个 C++11 新特性

点击蓝字关注我们C11 中增加了许多的新特性。在本文中&#xff0c;我们来聊一下 lambda 表达式&#xff0c;闭包&#xff0c;std::function以及std::bind。lambda 表达式C11 中新增了 lambda 表达式这一语言特性。lambda 表达式可以让我们快速和便捷的创建一个 “函数”。下面是…

5元素升级android6,【五元素ifive X.7】无障碍升级,ifveX详细升级固件教程,快为爱机升级吧。...

android系统的乐趣就是可以随意的刷机&#xff0c;所以拿到如此高配置的ifiveX也是想随时体验最新的android系统。而很多朋友可能只会用设备&#xff0c;刷机这种比较技术性的动作就不太会弄了。也就在这周&#xff0c;才帮同事刷RUU把已经无法启动的G12刷了回来。所以刷机还是…

昆仑通态复制的程序可以用吗_昆仑通态专题(七):MCGS组态软件的设备窗口...

点击上方蓝色字体&#xff0c;关注我们设备窗口是MCGS嵌入版组态软件系统的重要组成部分&#xff0c;在设备窗口中建立系统与外部硬件设备的连接关系&#xff0c;使系统能够从外部设备读取数据并控制外部设备的工作状态&#xff0c;实现对工业过程设备的实时监控与操作。01 设备…

嵌入式C语言程序调试和宏使用的技巧

点击蓝字关注我们01.调试相关的宏在Linux使用gcc编译程序的时候&#xff0c;对于调试的语句还具有一些特殊的语法。gcc编译的过程中&#xff0c;会生成一些宏&#xff0c;可以使用这些宏分别打印当前源文件的信息&#xff0c;主要内容是当前的文件、当前运行的函数和当前的程序…

matlab中欠定方程组超定方程组_《数值天气预报》:球坐标系中的基本方程组

人们是如何预报天气的&#xff1f;目前的预报方法主要有两种&#xff1a;一种是基于由各种探测资料绘制的天气图&#xff0c;结合历史资料进行分析预测&#xff1b;另一种是基于大气方程组&#xff0c;利用数值解法对其进行求解&#xff0c;从而得到未来时刻的大气状态。后者就…

浏览器总是跳转到缓存界面_跳转到企业缓存之前要考虑的事项

浏览器总是跳转到缓存界面介绍 关系数据库事务是ACID &#xff0c;强大的一致性模型简化了应用程序开发。 由于启用Hibernate缓存是一项配置 &#xff0c;因此&#xff0c;只要数据访问层开始出现性能问题&#xff0c;就转向缓存非常吸引人。 添加缓存层确实可以提高应用程序性…

CryptoTab 服务器_如何架设FTP服务器,如何架设FTP服务器,具体架设方法

FTP服务器&#xff0c;则是在互联网上提供存储空间的计算机&#xff0c;它们依照FTP协议提供服务。 FTP的全称是File Transfer Protocol(文件传输协议)。顾名思义&#xff0c;就是专门用来传输文件的协议。简单地说&#xff0c;支持FTP协议的服务器就是FTP服务器。那么&#xf…

C语言和C++的区别和联系

点击蓝字关注我们C语言和C到底是什么关系&#xff1f;首先C和C语言本来就是两种不同的编程语言&#xff0c;但C确实是对C语言的扩充和延伸&#xff0c;并且对C语言提供后向兼容的能力。对于有些人说的C完全就包含了C语言的说法也并没有错。C一开始被本贾尼斯特劳斯特卢普&#…