#include<cctype>中isalpha和-based for 循环语法

                                                                  密码翻译

内存限制:512Mb

时间限制:1s

题目描述

在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密。我们给出一种最简单的加密方法,对给定的一个字符串,把其中从 a∼ya∼y,A∼YA∼Y 的字母用其后继字母替代,把 zz 和 ZZ 用 aa 和 AA 替代,其他非字母字符不变。请根据该加密规则将输入的密码进行解密。

提示:这里需要进行解密操作,而不是加密

输入

一行,加密后的字符串,长度不多于 1000010000 个字符。

输出

一行,将密码解密后的字符串。

样例输入1

Ifmmp ! Ipx bsf zpv!

样例输出1

Hello ! How are you!

下面是代码:

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main(){
    
    string s;
    getline(cin,s);
    for(char &c:s)
    {
        if(isalpha(c))
        {
            if(c=='z')
                   c=='a';
             else if(c=='Z')
                c=='Z';
            else c--;
        }
        
    }
    cout<<s<<endl;
    return 0;
}

     头文件#include<cctype>中isalpha(c),c是一个字符,它的作用是判断字符是否为字母,返回值通常为1或0;isalnum(c)的作用与之相似,但多了一个判断是否为数字的条件,返回值同样。  

      for(char &c:s)是一个-based-for循环语句,代码中char &c 是用临时引用s容器中的每一个值,也就是临时存取,同时也意味着对c进行的改变会影响原字符串s中字符,而与之相似的一种用法for(char c:s)没有使用&,而是通过重新赋值,相当于c是s的一个副本,这表示c的变化不会影响原字符串s。两者均属于该语法。

      -based-for循环语句是c++11以及11版本后的特性,相比于传统的for循环,它可以忽略数组下标,不需要手动限制初始化和终止条件,而是自动遍历所有元素,也可以使用auto关键字来定义数据类型。

欢迎大家补充与批评!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值