第一题

编程实现:求位数
题目描述:
给定一个正整数N(1<N<10^8),输出N为几位数。
输入描述
输入一个正整数N(1<N<10^8)
输出描述
输出一个整数,表示N为几位数。

解析:这题可以直接通过循环除法求商得出有几位数。

#include<iostream>
using namespace std;
int main(){int N;cin>>N;int ans = 0;while(N>0){N /= 10;ans++; }cout<<ans;return 0;
}

第二题:

编程实现:字符反转
题目描述:
给定一个只包含大写字母“M”和“W”的字符串(字符串长度小于100),
然后对字符串中位置为偶数的字符进行反转(M反转为W,W反转为M;字符串中左边第1个字符位置为1)。
例如:原字符串为“WMMW”,反转后为“WWMM”
输入描述
输入一个只包含大写字符“M”和“W”的字符串(字符串长度小于100)
输出描述
输出一个字符串,表示对原字符串中位置为偶数的字符反转后的字符串

解析:本题考查字符串的操作,也是考查数组的操作。注意:题目中的序号和原来的字符串下标不同,字符序号=字符下标+1。通过遍历每个字符元素,如果满足序号是偶数就进行翻转。

#include<iostream>
#include<cstring>
using namespace std;
int main(){string str;cin>>str;for(int i=0;i<str.size();i++){if((i+1)%2==0){if(str[i]=='W'){str[i]='M';}else if(str[i]=='M'){str[i]='W';}}}cout<<str;return 0;
}

第三题:

编程实现:排名
题目描述:
某比赛有N(2≤N≤50)名选手参加,   N
给定每名参赛选手的编号(1到N)和比赛得分(0≤得分≤100),  编号唯一 1-N
请按照分数从高到低的顺序排序,如果分数相同就按照编号排序,
分数从高到低     如果分数相同就按照编号排序
编号小的排前边。

解析:因为每一个选手有两个参数:编号和成绩,编号和成绩是对应的。可以使用一维数组来实现,也可以使用二维数组来实现。排序的方法可以使用冒泡/插入等,反正你会用哪个就用哪个。

#include<iostream>
using namespace std;
int main(){int N;cin>>N;//输入的要求int a[N+1],b[N+1]; //设置N+1个元素,仅仅只是为了简单处理编号与下标对应问题 //输入编号和成绩 for(int i=1;i<=N;i++){cin>>a[i]>>b[i];//满足输入描述中的第二行开始的要求//scanf("%d %d",a[i],b[i]);} //排序 //冒泡排序。为了实现高到低排序//每轮将最小的成绩移至最后::for(int i=1;i<N;i++){for(int j=1;j<=N-i;j++){//因为每轮比较都能将最小元素往后移 int temp; if(b[j]<b[j+1]){//成绩交换排序顺序temp = b[j];b[j] = b[j+1];b[j+1] = temp;//编号交换排序顺序temp = a[j];a[j] = a[j+1];a[j+1] = temp;}else if(b[j]==b[j+1]){if(a[j]>a[j+1]){//当成绩相同时,编号大往后排//编号交换排序顺序temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}} //以上就是排序区域//输出区域:注意输出格式。按照排序规则输出N行,每行两个正整数,//分别表示编号和得分,正整数之间以一个空格隔开 for(int k=1;k<=N;k++){cout<<a[k]<<" "<<b[k]<<endl;} return 0;
} 

第四题:

充电站
题目描述:
一条笔直的公路沿途有N(2≤N≤100)个充电站,包含起点和终点各一个。
小明驾驶电动汽车要从公路的起点到达终点。
已知电动汽车充满电后可行驶的里程数D(10≤D≤10000),
及N个充电站每相邻的两个充电站之间的距离,
并且小明在起点第一次给电动汽车充满电。
请帮助小明计算出最少充电几次才能从起点到达终点
(需包含起点的第一次充电)。

注意:
1)到达终点后不需要再充电;
2)每次充电都要充满。

例如:D = 10,N = 7,N-1
7个充电站之间的距离依次为1,3,6,8,1,4,
最少需要充电3次。

第一次充电在起点(第1个充电站);  充电次数一开始就为1
第二次充电在第4个充电站(此时行驶里程为10,刚好电量耗尽);
第三次充电在第6个充电站(此时在第二次充满电后行驶里程为9,
剩余电量只能行驶1,距离下一充电站的距离为4,所以必须在此充电站充电)。

解析:需要注意充电次数从一开始就为1。可以使用一个临时变量作为汽车的当前剩余电量。

#include<iostream>
using namespace std;
int main(){int D ,N;cin>>D>>N;int c[N-1];//第二行输入N-1个正整数(1≤正整数≤100000),//依次表示相邻两个充电站之间的距离,正整数之间以一个空格隔开for(int i=0;i<N-1;i++){//输入N-1个正整数,表示各个充电站间的距离 cin>>c[i]; } //注意:汽车在起点时有一个充电站,并且充满了电//用一个变量ans来表示充电次数,初始值为1int ans = 1;int temp = D ;//D表示汽车的每次可充电上限,temp表示汽车的可用电量 for(int i=0;i<N-2;i++) {//如果下一站距离超过了满电行驶上限 if(c[i+1]>D){ans = -1;//直接给-1 break;} temp -= c[i];//每次到达一个充电站消耗后剩余的电量if(temp<c[i+1]) {temp = D;//充满电ans++;//充电次数+1 }}cout<<ans;return 0;
} 

第五题:

猴子拿桃

题目描述:

有N筐桃子从左到右排成一排,已知每筐桃子的数量。现猴子要按照以下规则拿取桃子:

1)猴子每次拿一筐桃子,一共要拿K次桃子;

2)猴子只能按照从左到右的顺序拿取桃子,不能回头,且每次拿取桃子的数量不能少于(大于等于)上一次。

当给定桃子筐数N(1≤N≤12)及每筐桃子的数量,和要拿取桃子的次数K(1≤K≤N),请编写程序,如果有符合规则的拿取方式,输出猴子最多可以拿到的桃子数量,否则输出0。

例如:

N = 4,4筐桃子的数量从左到右依次为16,12,16,17;

K=3,猴子一共要拿3次桃子,符合规则的拿取方式有:[16,16,17],[12,16,17];

其中可拿取到最多桃子的方式是:[16,16,17],合计为49。则猴子最多可以拿到49个桃子。

输入描述
第一行输入两个正整数N和K(1≤N≤12,1≤K≤N),分别表示桃子的筐数和一共要拿取桃子的次数,正整数之间以一个空格隔开

第二行输入N个正整数(10≤正整数≤200),从左到右依次表示每筐桃子的数量,正整数之间以一个空格隔开

输出描述
输出一个整数,如果有符合规则的拿取方式,输出猴子最多可以拿到的桃子数量,否则输出0

解析:使用一个临时变量当做滑动窗口,记录每次进行组合时下一个不小于当前数的位置。

#include <iostream>
using namespace std;
int main(){int N,K;cin>>N>>K;//输入N个数int a[N],b[K];for(int i=0;i<N;i++){cin>>a[i];} //从第一个元素开始进行组合K个数,最多执行到N-K/*2*/int count  = 0; int sum = 0;//计算组合的总和int max = 0;//对总和求最大值 for(int i=0;i<N-K;i++){int temp = i;//在每回组合中,temp作为下标滑动窗口存在b[0] = a[temp];//当前i的位置作为组合的第一个元素/*2*/count = 1;for(int j=1;j<K;j++){ //对b[K]中的剩余位置进行填充 //填充条件:下一个元素不小于(>=)现在元素for(int k=temp;k<N;k++){if(a[k+1]>=a[k]){b[j] = a[k+1];/*2*/count++;temp = k+1;//更新窗口的所在下标 break; } }  } if(count<K){cout<<"0";return 0;} else{sum = 0;for(int i=0;i<K;i++){sum+=b[i];} if(max<sum){max = sum;}}} cout<<max;return 0;
}

2022年12月蓝桥STEMA评测C++中级组编程题相关推荐

  1. 2023年2月蓝桥STEMA评测C++中级组编程题(个人代码学习)(持续更新)

    第一题 编程实现:求和 题目描述: 有一组1到100000的正整数数据,当给定一个正整数N(1<N<100000),求出其左右相邻的两个正整数的和. 例如:N = 6,6左边相邻的正整数为 ...

  2. 第十三届蓝桥杯省赛(2022年4月17日)C++中级组题解

    目录 前言 一.选择题 1.题目描述 2.参考答案 二.编程题 1.比较大小 题目描述 题目解析 AC代码 2.分成整数 题目描述 题目解析 AC代码1(模拟) AC代码2(dfs) 3.组合 题目描 ...

  3. 12届蓝桥杯青少年组国赛C++中级组编程题

    编程题,共6题 第一题:加密(30分) 给定一个只含英文字母(英文字母含大小写字母)的字符串作为原始密码,按照规则将其加密,并输出加密后的密码. 加密原则:原始密码每一位上的字母,使用其在字母表中其后 ...

  4. 第14届蓝桥杯STEMA测评真题剖析-2022年12月18日Scratch编程初中级组

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第109讲. 蓝桥杯选拔赛现已更名为STEMA,即ST ...

  5. 2022年12月国产数据库大事记-墨天轮

    本文为墨天轮技术社区整理的2022年12月国产数据库大事件和重要产品发布消息. 目录 12月国产数据库大事记(时间线) 产品/版本发布 兼容认证 排行榜新增数据库 厂商活动 相关资料 12月国产数据库 ...

  6. 【记录】ChatGPT|注册流程、使用技巧与应用推荐(更新至2022年12月14日)

      昨天,2022年12月13日,在下午和晚上,ChatGPT 就开始因为请求过多而写到一半就崩溃,出现network error,可见它的关注度确实是越来越可观了.   正好最近世界杯,有博客活动, ...

  7. 汇总2022年12月托福toefl考试/解析答案为你助力

    我喜欢车,2022年12月托福toefl考试/解析答案3069519625[汇总]就因为车的漂亮与先进.车的颜色多种多样,开得又快,所以我从小便喜欢车12月3日托福.12月4日托福.12月5日托福.1 ...

  8. HCIE-Routing Switching实验考试延期至2022年12月31日

    尊敬的考生: 由于受新冠疫情不可控因素影响,2022年上半年HCIE-Routing & Switching实验考试所在城市出现出行受控等情况,造成部分考生无法在2022年6月30日之前前往考 ...

  9. 药物临床试验登记信息数据库18557条(2022年12月更新)

    本药物临床试验登记信息数据库,共18557条,于2022年12月更新,字段包含登记号.试验状态.药物名称.适应症.试验通俗题目.目标入组人数等关键字段,可定制更新最数据.

最新文章

  1. iOS OpenCV 图像灰度处理
  2. “自拍神器”贴心实用功能大曝光
  3. mysql数据类型总结
  4. java 参数三点,java函数参数类型后添加三点的用法
  5. linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)
  6. Xml转换成html表格代码,如何用C++代码将XML文件转换为HTML表格?
  7. 关于C#打包部署文件夹问题
  8. ajax简单校验用户名是否存在
  9. 软件需求和结构_软件工程复习 3640组考题
  10. Android 的安全性岌岌可危!
  11. [原创]如何写好SqlHelper 之终章
  12. [Bzoj2049][Sdoi2008]Cave 洞穴勘测
  13. 2020 dns排名_2020年中国最快的dns_动漫台
  14. ospf(MGRE的星型结构和全连结构)
  15. 第二章 感受Mac 之美-惊艳从Mac 外设开始,一周后的使用感受
  16. php seekdir,perl 模式匹配总结和shell命令调用方法 (zz)
  17. 与其他带货直播平台相比,视频号更适合哪些人?
  18. java实现微信App支付
  19. mysql 数据库中将中文转化为拼音
  20. MySQL的存储过程(in、out、inout)

热门文章

  1. 什么是法?什么是僧?
  2. [M1]Daily Scum 10.9
  3. 数据采集上报之灯塔SDK详解
  4. 身份证识别-全方位突破,高精度,轻量级!
  5. Power BI 自定义门户----大成
  6. 配置OpenCV产生flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe问题
  7. 莫队算法 ( MO's algorithm )
  8. SQL 查询语句报错
  9. 手札 江湖的完美窗口化研究
  10. vue+腾讯地图标记弹框