蓝桥杯C/C++b组第一题个人整理合集(5年真题+模拟题)

蓝桥杯C/C++b组填空第一题合集

前言

比赛标准的签到题,比赛时的第一题。不会考到什么算法,甚至都不需要你打代码。但有时候第一题都没做出来的确是非常挫灭信心
看了看历年题目。很多小陷阱也不少
今年的比赛也正好还有一个月,自己对填空题第一题进行了一些整理

2022C/C++ 大学B组省赛

题目

九进制正整数 (2022), 转换成十进制等于多少?

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案

1478

分析

经典的进制转化
从最右边开始一个个乘以进制就好,直接用计算器
2 * 90 + 2 * 91 + 0 * 92 + 2 * 93 = 1478

2021C/C++ 大学B组省赛

题目

小蓝准备用256MB 的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个32 位二进制整数?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案

67108864

分析

1B等于8比特,也就是二进制占8位,所以我们的计算公式为256* 1024* 1024*8/32 = 67108864
推荐计算器做,代码的话也能用位运算很容易的写出,其中>>2等于除以4,<<20位就是乘以2的20次方
乘了两个1024,跟上面列式计算一样

#include <stdio.h>
int main() {
    printf("%d", 256 >> 2 << 20);
}

2021C/C++ 大学B组国赛

题目

小蓝家的网络带宽是 200 Mbps,请问,使用小蓝家的网络理论上每秒钟最多可以从网上下载多少 MB 的内容。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案

25

分析

注意分清宽带的Mb和下载速度的MB 一个是大写B,一个是小写b,其中大写B代表字节,小写b代表比特,1字节=8比特。单位之间转化公式:
1Mb=1024kb=10241024bit=1024128Byte=128KB=0.125MB
这道题直接算就可以,就是200/8=25.

2020C/C++ 大学B组省赛

题目

小明要做一个跑步训练。
  初始时,小明充满体力,体力值计为10000。如果小明跑步,每分钟损耗600的体力。如果小明休息,每分钟增加300的体力。体力的损耗和增加都是均匀变化的。
  小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。如果某个时刻小明的体力到达0,他就停止锻炼。
  请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。答案中只填写数,不填写单位。

答案

3880

分析

当时有很多人是直接计算的,看出每一个周期是两分钟,每个周期减少300体力同时耗时2*60=120s
10000/300取整为33,剩下100体力。这100体力用时1/6分钟时间消耗完
所以总时间为33 * 120+10 = 3970
发现问题了吗?
如果是代码实现呢?

#include<iostream>
using namespace std;
int main() {
	int n = 10000;
	int second = 0; 
	while (n > 0 && (second % 2 != 0 || n >= 600)) {
		if (second % 2 == 0) {
			n -= 600, second++;
		}
		else {
			n += 300, second++;
		}
	}
	cout << second * 60 + 60 * n / 600;
	return 0;
}

问题就在于,我们最后的一个(甚至几个)周期前,就已经先把体力耗尽了,这货跑不动了
我们第32个周期的时候结束的时候32300=9600,只剩下400体力了,根本没办法完成第33个周期,当年不知道坑了多少人
所以正确口算应该是32
120+40=3880

2020C/C++ 大学B组国赛

题目

美丽的 2
小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。
他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?

答案

563

分析

推荐写代码,1~2020一个个枚举一下就好

# include <stdio.h>

int main()
{
	int idx = 0;
	int j;
for(int i =  1; i <= 2020; i++){
     j = i;
	while(j){
		if(j % 10 == 2){
		    idx++;
		    break;
		}
		j /= 10;
	}
	
} 
    printf("%d",idx);
	return 0;
}


注意if条件是%10 == 2,也就是一位一位往右移,我看到过%2 ==0的,还看到过忘记break的,算出来会有很多重复

2019C/C++ 大学B组省赛

题目

组队
作为篮球队教练,你需要从以下名单中选出1号到5号位各一名球员,组成球队的首发阵容。
每位球员担任1号位至5号位的评分分别如下表。请你计算首发阵容1号位至5号位的评分之和最大可能是多少?

在这里插入图片描述

答案

490

分析

直接做就好,题目意思就是1~5号的评分和最大嘛。
那就是98+99+99+98+98=492
这个也坑了不少人,一个球员只能去一个位置
这是题目的隐藏条件,所以最大只能选出490的最大组合,看图就好。

2019C/C++ 大学B组国赛

题目

小明想找到两个正整数X和Y,满足
1.2019<X<Y
2.20192<x2<Y2
请你求出所有可能的解中,X+Y的最小值

答案

7072

分析

直接暴力枚举就好,代码如下:

#include<iostream>
using namespace std;

int main()
{
    for(int i = 2020;i < 10000;i ++)
        for(int j = i + 1;j < 10000;j ++)
            if(i * i * 2 == 2019 * 2019 + j * j)
            {
                cout<<i + j<<endl;
                return 0;
            }
}

2018C/C++ 大学B组省赛

题目

题目描述
2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?
注意:需要提交的是一个整数,不要填写任何多余内容。

答案

125

分析

这个。。打开电脑日历一个个数都行,数仔细点就好

2018C/C++ 大学B组国赛

题目

换零钞
x星球的钞票的面额只有:100元,5元,2元,1元,共4种。
小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。
小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,
剩下的当然都是5元面额的。
银行的工作人员有点为难,
你能帮助算出:
在满足小明要求的前提下,
最少要换给他多少张钞票吗?
(5元,2元,1元面额的必须都有,不能是0)

答案

74

分析

简单的枚举,代码如下

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int sum = 0;
	for (a = 1; a < 40; a++)
	{
		for (b = 1; b < 200; b++)
		{
			if (5 * a + 2 * 10 * b + 1 * b == 200)
			{
				printf("5 * %d + 2 * 10 * %d + 1 * %d == 200\n", a, b, b);
				sum++;
			}
		}
	}
	printf("%d", sum);
	return 0;
}

模拟题

待续。。。。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr丶锤子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值