目录
P5733 【深基6.例1】自动修正

https://www.luogu.com.cn/problem/P5733
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string str; cin>>str;
for(int i=0;i<str.size();i++)
{
str[i]=toupper(str[i]);
}
cout<<str<<endl;
}
P1914 小书童——凯撒密码

https://www.luogu.com.cn/problem/P1914
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int a[105];
int main(void)
{
int n; cin>>n;
string str; cin>>str;
for(int i=0;i<str.size();i++)
{
a[i]=(str[i]-'a'+n)%26;
}
for(int i=0;i<str.size();i++)
printf("%c",a[i]+'a');
}
P1125 [NOIP2008 提高组] 笨小猴

https://www.luogu.com.cn/problem/P1125
#include<cstdio>
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int hush[30];
bool judge(int x)
{
if(x==0) return false;
if(x==1) return false;
if(x==2) return true;
int temp=sqrt(x);
for(int i=2;i<=temp;i++)
if(x%i==0) return false;
return true;
}
int m1=1e5,m2;
int main(void)
{
string s; cin>>s;
for(int i=0;i<s.size();i++) hush[s[i]-'a']++;
for(int i=0;i<26;i++)
{
if(hush[i]) m1=min(m1,hush[i]),m2=max(m2,hush[i]);
}
if(judge(m2-m1)) cout<<"Lucky Word"<<endl<<m2-m1<<endl;
else cout<<"No Answer"<<endl<<0<<endl;
return 0;
}
P1957 口算练习题

https://www.luogu.com.cn/problem/P1957
#include<cstdio>
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
int n;
string s[60];
vector<string> ve;
int main(void)
{
cin>>n;
getline(cin,s[0]);
for(int i=0;i<n;i++) getline(cin,s[i]);
for(int i=0;i<n;i++)
{
char op;
string ss;
int number1,number2,sum;
stringstream l(s[i]);
if(s[i][0]>='a'&&s[i][0]<='z')
{
op=s[i][0];
l>>op>>number1>>number2;
}
else
l>>number1>>number2;
ss+=to_string(number1);
if(op=='a') ss+='+',sum=number1+number2,ss+=to_string(number2),ss+='=',ss+=to_string(sum);
if(op=='b') ss+='-',sum=number1-number2,ss+=to_string(number2),ss+='=',ss+=to_string(sum);
if(op=='c') ss+='*',sum=number1*number2,ss+=to_string(number2),ss+='=',ss+=to_string(sum);
ve.push_back(ss);
}
for(int i=0;i<ve.size();i++) cout<<ve[i]<<endl<<ve[i].size()<<endl;
return 0;
}
P5015 [NOIP2018 普及组] 标题统计

https://www.luogu.com.cn/problem/P5015
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
int ans=0;
string s;
while(cin>>s)
{
ans+=s.size();
}
cout<<ans;
}
P5734 【深基6.例6】文字处理软件

https://www.luogu.com.cn/problem/P5734
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
int n;
string s;
cin>>n>>s;
while(n--)
{
int op; cin>>op;
if(op==1)
{
string a; cin>>a;
s+=a; cout<<s<<endl;
}
if(op==2)
{
int a,b; cin>>a>>b;
string temp;
temp=s.substr(a,b);
s=temp;
cout<<temp<<endl;
}
if(op==3)
{
int a; string temp;
cin>>a>>temp;
string s1,s2;
s1=s.substr(0,a);
s2=s.substr(a,s.size()-a);
s.clear();
s=s+s1,s=s+temp,s=s+s2;
cout<<s<<endl;
}
if(op==4)
{
string a; cin>>a;
if(s.find(a)!=-1) cout<<s.find(a)<<endl;
else cout<<-1<<endl;
}
}
return 0;
}
P1308 [NOIP2011 普及组] 统计单词数

https://www.luogu.com.cn/problem/P1308
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int index;
int cnt;
bool flag=true;//有没有答案
int main(void)
{
string a,b;
cin>>a;
for(int i=0;i<a.size();i++) a[i]=toupper(a[i]);
getline(cin,b),getline(cin,b);
for(int i=0;i<b.size();i++) b[i]=toupper(b[i]);
for(int i=0;i<b.size();i++)
{
if(b[i]==a[0]&&b[i-1]==' ')
{
int k=i;
bool flag1=true;//首次
for(int j=0;j<a.size();j++)
{
if(a[j]!=b[k++])
{
flag1=false;
break;
}
}
if(!flag1) continue;
if(b[k]==' ') cnt++;
else continue;
if(flag) index=i,flag=false;
}
}
if(!flag)cout<<cnt<<" "<<index<<endl;
else cout<<-1<<endl;
}
P1765 手机

https://www.luogu.com.cn/problem/P1765
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int ans;
int main(void)
{
string s;
getline(cin,s);
for(int i=0;i<s.size();i++)
{
if(s[i]==' ')
{
ans++;
continue;
}
if(s[i]>='a'&&s[i]<='c')
{
ans+=s[i]-'a'+1;
continue;
}
if(s[i]>='d'&&s[i]<='f')
{
ans+=s[i]-'d'+1;
continue;
}
if(s[i]>='g'&&s[i]<='i')
{
ans+=s[i]-'g'+1;
continue;
}
if(s[i]>='j'&&s[i]<='l')
{
ans+=s[i]-'j'+1;
continue;
}
if(s[i]>='m'&&s[i]<='o')
{
ans+=s[i]-'m'+1;
continue;
}
if(s[i]>='p'&&s[i]<='s')
{
ans+=s[i]-'p'+1;
continue;
}
if(s[i]>='t'&&s[i]<='v')
{
ans+=s[i]-'t'+1;
continue;
}
if(s[i]>='w'&&s[i]<='z')
{
ans+=s[i]-'w'+1;
continue;
}
}
cout<<ans<<endl;
return 0;
}
P3741 honoka的键盘

https://www.luogu.com.cn/problem/P3741
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
bool flag=false;
int main(void)
{
int n; cin>>n;
string s; cin>>s;
int ans=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='V'&&s[i+1]=='K') ans++,s[i]='x',s[i+1]='x';//找到VK将其替换
}
for(int i=0;i<s.size();i++)//VV 或 KK 可以使结果加1
{
if(s[i]=='V'&&s[i+1]=='V')
{
flag=true;break;
}
if(s[i]=='K'&&s[i+1]=='K')
{
flag=true;
break;
}
}
if(flag) cout<<ans+1<<endl;
else cout<<ans<<endl;
}
P1321 单词覆盖还原

https://www.luogu.com.cn/problem/P1321
#include<cstdio>
#include<iostream>
using namespace std;
int ans1,ans2;
int main(void)
{
string a; cin>>a;
for(int i=0;i<a.size();i++)
{
if(a[i]=='b') ans1++;
if(a[i]=='o'&&a[i-1]!='b') ans1++;
if(a[i]=='y'&&a[i-1]!='o') ans1++;
if(a[i]=='g') ans2++;
if(a[i]=='i'&&a[i-1]!='g') ans2++;
if(a[i]=='r'&&a[i-1]!='i') ans2++;
if(a[i]=='l'&&a[i-1]!='r') ans2++;
}
cout<<ans1<<endl<<ans2<<endl;
return 0;
}
P1553 数字反转(升级版)

https://www.luogu.com.cn/problem/P1553
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool flag1,flag2,flag3,flag4;
int index;
int main(void)
{
string s; cin>>s;
string s1;
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') s1+=s[i];
if(s[i]=='.')
{
flag2=true;
index=i;
break;
}
if(s[i]=='/')
{
flag3=true;
index=i;
break;
}
if(s[i]=='%')
{
flag4=true;
index=i;
break;
}
}
bool flag=false;
reverse(s1.begin(),s1.end());
for(int i=0;i<s1.size();i++)
{
if(s1[i]!='0') flag=true;
if(flag) cout<<s1[i];
}
if(index==0)
{
if(!flag) cout<<0<<endl;
return 0;
}
if(flag2||flag3)
{
if(!flag) cout<<0;
string s2;
for(int i=index+1;i<s.size();i++) s2+=s[i];
reverse(s2.begin(),s2.end());
flag=false;
if(flag2) cout<<".";
if(flag3) cout<<"/";
flag=false;
if(flag2)
{
if(s2.size()==1&&s2=="0")
{
cout<<"0"<<endl;
return 0;
}
int temp=s2.size()-1;
while(s2[temp]=='0') temp--;
for(int i=0;i<=temp;i++) cout<<s2[i];
}
if(flag3)
for(int i=0;i<s2.size();i++)
{
if(s2[i]!='0') flag=true;
if(flag) cout<<s2[i];
}
}
if(flag4)
{
if(!flag) cout<<0;//如果都是零,输出一个零
cout<<"%"<<endl;
}
return 0;
}
P1603 斯诺登的密码

https://www.luogu.com.cn/problem/P1603
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
map<string,int>q;
vector<int> ve;
int main(void)
{
q["one"]=1;q["two"]=2;q["three"]=3;q["four"]=4;q["five"]=5;q["six"]=6;q["seven"]=7;q["eight"]=8;q["nine"]=9;q["ten"]=10;
q["eleven"]=11;q["twelve"]=12;q["thirteen"]=13;q["fourteen"]=14;q["fifteen"]=15;q["sixteen"]=16;q["seventeen"]=17;q["eighteen"]=18;q["nineteen"]=19;q["twenty"]=20;
q["a"]=1;q["both"]=2;q["another"]=1;q["first"]=1;q["second"]=2;q["third"]=3;
string a;
while(cin>>a,a!=".")
{
if(q[a])
{
int temp=pow(q[a],2);
temp=temp%100;
ve.push_back(temp);
}
}
sort(ve.begin(),ve.end());
for(int i=0;i<ve.size();i++)
{
if(i==0) cout<<ve[i];
else printf("%02d",ve[i]);
}
if(!ve.size()) cout<<0<<endl;
return 0;
}
P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here

https://www.luogu.com.cn/problem/P1200
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
long long int sum1,sum2;
int main(void)
{
sum1=sum2=1;
string a,b; cin>>a>>b;
for(int i=0;i<a.size();i++) sum1=sum1*(a[i]-'A'+1);
for(int i=0;i<b.size();i++) sum2=sum2*(b[i]-'A'+1);
if(sum1%47==sum2%47) cout<<"GO";
else cout<<"STAY"<<endl;
return 0;
}
P1597 语句解析

https://www.luogu.com.cn/problem/P1597
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int z[3]={0};//存三个变量的值(初始值为0)
char q,h,wl;//q为被赋值变量,h为赋值量,wl为赋值表达式中不直接关系到运算的无关字符(直接读掉)
while(scanf("%c %c %c %c %c",&q,&wl,&wl,&h,&wl)!=EOF)//利用scanf返回值,判断是否已读完
{
if('0'<=h&&h<='9')z[q-'a']=h-'0';//若为数字,则给变量赋值为此数字
else z[q-'a']=z[h-'a'];//若为变量,则将这个变量的值赋值给它
}
printf("%d %d %d",z[0],z[1],z[2]);//直接输出三变量值
return 0;
}
P1598 垂直柱状图

https://www.luogu.com.cn/problem/P1598
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int cnt[26];
int s=0;
bool mp[620][26];
int main(void)
{
for(int i=0;i<4;i++)
{
string a;getline(cin,a);
for(int i=0;i<a.size();i++)
if(a[i]>='A'&&a[i]<='Z')cnt[a[i]-'A']++;
}
for(int i=0;i<26;i++) s=max(s,cnt[i]);
for(int i=0;i<26;i++)
{
for(int j=s-cnt[i]+1;j<=s;j++)
{
mp[j][i]=true;
}
}
for(int i=1;i<=s;i++)
{
for(int j=0;j<26;j++)
{
if(mp[i][j]) cout<<"*";
else cout<<" ";
if(j!=25) cout<<" ";
}
cout<<endl;
}
for(int i=0;i<26;i++) printf("%c ",'A'+i);
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ff[26];//定义计数数组
int main()
{
int i,j,n,maxn=0;char a[81];
for(i=0;i<4;i++)
{
gets(a);//gets读入
n=strlen(a);
for(j=0;j<n;j++)if(a[j]>='A'&&a[j]<='Z')ff[a[j]-'A']++;//统计字符出现次数
}
for(i=0;i<26;i++)maxn=max(maxn,ff[i]);//最多次数(最高柱状图)
for(i=maxn;i>0;i--){
for(j=0;j<26;j++)
if(ff[j]>=i)printf("* ");else printf(" ");//模拟,是可以输出的就输出*,否则跳过
printf("\n");}//换行
for(i=0;i<26;i++)printf("%c ",i+'A');//输出a~z
}
本文集精选了多个在线编程平台上的经典题目,涵盖字符串处理、算法实现及数据统计等,通过实际代码示例展示了多种编程技巧与思路。
3458





