语言年龄问题蓝桥杯s夫人_机房日子新华书店蓝桥杯赛前集训班部分题参考程序...

本文列举了多个蓝桥杯编程竞赛的题目,包括语言年龄问题、统计字母、查找支撑数、判断回文数等,并提供了相应的C++解决方案。通过对字符串的处理,实现了删除特定字符、统计字母频率、查找特殊数和判断回文等功能。
摘要由CSDN通过智能技术生成

2224: 删除字符串中间的*

输入一个字符串,将串前和串后的*保留,而将中间的*删除。

输入

一个含*的字符串。

输出

删除了串中的*的字符串。

#include

using namespace std;

int main()

{

string s,s2;

int head=0,tail=0;//串首和串尾*位置

getline(cin,s);

for(int i=0;i

{

if(s[0]=='*')

if(s[i]=='*'&&s[i+1]!='*')

if(!head)//判断是不是串首*

{

head=i+1;

break;

}

else

break;

}

for(int i=s.size()-1;i>=0;i--)//查找串尾*

{

if(s[s.size()-1]=='*')

if(s[i]=='*')

{

tail=s.size()-i;

}

else

break;

}

if(head==tail&&head==s.size())//整个字符串全部是*,直接输出

cout<

else

{

for(int i=1;i<=head;i++) //原字符串首空格先复制到s2中

s2=s2+"*";

for(int i=0;i

if(s[i]!='*')

s2=s2+s[i];

for(int i=1;i<=tail;i++) // //原字符串尾空格复制到s2中

s2=s2+"*";

}

cout<

return 0;

}

19d72174f232ec8d9b1aef94a84cd7d9.png

1871: [一维数组]统计字母

题目描述

统计一个英文句子中每个字母出现的个数。句子以'*'作为结束标志。

输入

一行英文

输出

按英文字母顺序分别输出每个字母的个数(若是0个就不用输出)

#include

using namespace std;

int main()

{

string s;

int a[27]={0};

getline(cin,s);

for(int i=0;s[i]!='*';i++)

{

if(s[i]=='*')

break;

for(int j=0;j<=25;j++)

{

if(s[i]=='A'+j)

{

a[j]++;

break;

}

}

}

for(int i=0;i<=25;i++)

{

if(a[i]!=0)

{

cout<cout<

}

}

return 0;

}

1461: [一维数组基础]查找支撑数

题目描述

在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?
数据有问题,25%错误是正常

输入

第一行为整数m,表示输入的整数个数。( 3<= m <=100 )
第二行为m个整数。

输出

输出一行,包含若干个支撑数,以空格隔开。

#include

using namespace std;

int main()

{

int i,j=0,m,a[100],b[100];

cin>>m;

for(i=0;i

{

cin>>a[i];

}

for(i=1;i

{

if(a[i-1]a[i+1])

{

b[j]=a[i];

j++;

}

}

for(i=0;i

cout<

return 0;

}

1746: 判断回文数

输入

输入文件仅有一行包含一个正整数n,n为longint类型的数,不超过2000000000。

输出

输入文件仅有一行,如果从输入文件读入的数是回文数则输出“Yes”,否则输出将这个数的数字按相反的顺序重新排列后的数。

#include

using namespace std;

int main()

{

long long a,i,ne=0;

cin>>a;

i=a;

while(a)

{

ne=ne*10+a%10;

a=a/10;

}

if(i==ne)

cout<

else

cout<

return 0;

}

1918: 回文串二

题目描述

读入一行字符,以#结束。这些字符只包含大写字母、小写字母和数字,总长度不超过10000,判断该字符串是否是“回文字符串”。如果是,则输出一个yes,否则输出一个no。

注意:本题中的#只是一个结束符,不包括在字符串内。同时,本题要严格区分大写字母和小写字母。

#include

using namespace std;

//方法1:首尾逐字符比较

int main()

{

string olds;

int i,l;

getline(cin,olds);

l=olds.size()-1;

for(i=0;i

{

if(olds[i]!=olds[l-i-1])

{

cout<

return 0;

}

}

cout<

return 0;

}

//方法2 系统函数翻转

int main()

{

string s1,s2;

int i,l;

getline(cin,s1);

l=s1.size();

s1.erase(s1.end()-1,s1.end());

s2=s1;

reverse(s2.begin(),s2.end());

if(s2==s1)

cout<

else

cout<

return 0;

}

6ff8270cc1683927eec7bcd94bc01316.png

蓝桥杯真题

水下探测器
水下探测器可以潜入湖中在任意水深进行科学探索。
湖水的最大深度为 h 米,即它在湖底时到水面的距离,0<=h<=100;
探测器最初的水下深度为 s 米,0<=s<=100;
当探测器不在水面(当前深度大于 0)时,每个 u 指令可使它上浮 1 米,而当探测器在水面时,u 指令是无效的;
当探测器不在湖底(当前深度小于 h)时,每个 d 指令可使它下沉 1 米,而当探测器在湖底时,d 指令是无效的;
在执行到无效指令时,探测器不做任何操作而继续执行下一指令。
编程实现:
根据给定的 h、s 和一个指令序列(由字符 u、d 组成的字符串,长度不超过 100),求出执行完整的指令序列后,探测器的水下深度。
输入:
第一行:h 和 s,以空格分开。0<=s<=h<=100
第二行:长度不超过 100 的指令字符串,串中仅包含字母 u 或 d
输出:
代表探测器在执行指令后的水下深度的数字。
样例输入:
9 1
uduudd
样例输出:
2

样例数据分析:
水深9米,探测器在水下1米处,

字符u代表向上1米,探测器上浮到0米处

字符d代表向下1米,探测器下沉到1米处

字符u代表向上1米,探测器上浮到0米处

字符u代表向上1米,探测器已经在水面,不能上浮,依然在0米处

字符d代表向下1米,探测器下沉到1米处

字符d代表向下1米,探测器下沉到2米处

最终结果为2

考察知识:
基础语法,字符串,循环,条件判断

参考代码: #include

using namespace std;

int main(){

int h,s;

string str;

cin>>h>>s>>str;

for(int i=0;i

if(str[i]=='u'){

if(s>0){

s--;

}

}else{

if(s

s++;

}

}

}

cout<

}

4e4544f0126fa76a87363e60af05e861.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值