语法基础(字符串)


作者:进击攻城狮
个人主页:欢迎访问我的主页
首发时间:2022年8月28日星期日
订阅专栏:刷题
个人信条:星光不问赶路人,岁月不负有心人。
如果文章有错误,欢迎在评论区指正。
🎉 支持我:点赞👍+收藏⭐️+留言📝


768. 忽略大小写比较字符串大小

一般我们用 strcmpstrcmp 可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按 ASCII 码值大小比较),直到出现不同的字符或遇到 \0 为止。

如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。

但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如 Hellohello 在忽略字母大小写时是相等的。

请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。

输入格式

输入为两行,每行一个字符串,共两个字符串。注意字符串中可能包含空格。

数据保证每个字符串的长度都不超过 8080。

输出格式

如果第一个字符串比第二个字符串小,输出一个字符 <

如果第一个字符串比第二个字符串大,输出一个字符 >

如果两个字符串相等,输出一个字符 =

输入样例:
Hello
hello
输出样例:
=
#include<iostream>
#include<string>
#include<bits/stdc++.h>
using  namespace std;
int main(){
    string s1,s2;
    getline(cin,s1);
    getline(cin,s2);
    int sum=0;
    int m=s1.size()>s2.size()?s1.size():s2.size();
    for(int i=0;i<m;i++){
        if(s1[i] >= 'a' && s1[i] <= 'z')s1[i] -= 32;
        if(s2[i] >= 'a' && s2[i] <= 'z') s2[i] -= 32;
        if(s1[i]==s2[i]){
            sum++;
        }
        else{
            if(s1[i]<s2[i]){
                cout<<"<";break;
            }else
            cout<<">";break;
        }
        
    }
    if(sum==m)
    cout<<"=";
  return 0;
 
}

766. 去掉多余的空格

输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。

输入格式

共一行,包含一个字符串。

输出格式

输出去掉多余空格后的字符串,占一行。

数据范围

输入字符串的长度不超过 200200。
保证输入字符串的开头和结尾没有空格。

输入样例:
Hello      world.This is    c language.
输出样例:
Hello world.This is c language.
#include<iostream>
#include<string>
using namespace std;
int main(){
    string s2;
    while(cin>>s2){
    cout<<s2<<" ";
    }
}

767. 信息加密

在传输信息的过程中,为了保证信息的安全,我们需要对原信息进行加密处理,形成加密信息,从而使得信息内容不会被监听者窃取。

现在给定一个字符串,对其进行加密处理。

加密的规则如下:

  1. 字符串中的小写字母,aa 加密为 bb,bb 加密为 cc,…,yy 加密为 zz,zz 加密为 aa。
  2. 字符串中的大写字母,AA 加密为 BB,BB 加密为 CC,…,YY 加密为 ZZ,ZZ 加密为 AA。
  3. 字符串中的其他字符,不作处理。

请你输出加密后的字符串。

输入格式

共一行,包含一个字符串。注意字符串中可能包含空格。

输出格式

输出加密后的字符串。

数据范围

输入字符串的长度不超过 100100。

输入样例:
Hello! How are you!
输出样例:
Ifmmp! Ipx bsf zpv!
#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char str[101];
    fgets(str,101,stdin);
    for(char &c:str)
    if(c>='a'&&c<='z')
    c=(c-'a'+1)%26+'a';
    else
    if(c>='A'&&c<='Z')
    c=(c-'A'+1)%26+'A';
    
    cout<<str;
    return 0;
}

764. 输出字符串

给定一个字符串 aa,请你按照下面的要求输出字符串 bb。

给定字符串 aa 的第一个字符的 ASCII 值加第二个字符的 ASCII 值,得到 bb 的第一个字符;

给定字符串 aa 的第二个字符的 ASCII 值加第三个字符的 ASCII 值,得到 bb 的第二个字符;

给定字符串 aa 的倒数第二个字符的 ASCII 值加最后一个字符的 ASCII 值,得到 bb 的倒数第二个字符;

给定字符串 aa 的最后一个字符的 ASCII 值加第一个字符的 ASCII 值,得到 bb 的最后一个字符。

输入格式

输入共一行,包含字符串 aa。注意字符串中可能包含空格。

数据保证字符串内的字符的 ASCII 值均不超过 6363。

输出格式

输出共一行,包含字符串 bb。

数据范围

2≤a的长度≤1002≤a的长度≤100

输入样例:
1 2 3
输出样例:
QRRSd
#include<iostream>
#include<cstring>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    char c=s[0];
  
    for(int i=0;i<s.length();i++){
        if(i==s.size()-1)
        s[i]+=c;
        else
        if(i<s.size()-1)
        s[i]+=s[i+1];
       
       
    }
    cout<<s<<endl;
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值