zoukankan      html  css  js  c++  java
  • Problem F: 重载字符的加减法

    Description

    定义一个字符类Character,只有一个char类型的数据成员。

    重载它的+、-、<<和>>运算符,其中+、-的第二个操作数是int类型的整数n。“+”用于返回以当前字符之后的第n个字符为属性值的对象,“-”用于返回当前字符之前的第n个字符为属性值的对象。如样例所示。

    Input

    第1行N>0表示测试用例个数。

    每个测试用包括1个字符(小写英文字母)和1个int类型的整数。

    Output

    输出有N行,每行输入对应一行输出,每行输出包括对应输入字符之后的第n个字符,以及该字符之前的第n个字符。如样例中第2个用例输入字符是“a”,整数是“1”,那么“a”之后的第1个字符是”b“,"a"之前的第1个字符是”z“;注意:输入的整数可能是负数。

    Sample Input

    3 a 0 a 1 a -1

    Sample Output

    a a b z z b

    HINT

    Append Code

    #include<iostream>
    using namespace std;
    class Character
    {
    private:
        char ch;
        int in;
    public:
        char operator+(int n)
        {
            //char是小一号的int
            int c=ch+n;//小变大,用int解决了asc不可负;注:ch不加单引号
            if(c>'z')//减一堆等价%
                c%=26;
            while(c<'a')//负数取余还是负数
                c+=26;
            return c;
        }
        char operator-(int n)
         {
            int c=ch-n;
            if(c>'z')
                c%=26;
            while(c<'a')
                c+=26;
            return c;
        }
        friend ostream& operator<<(ostream& os,const Character& a)
        {
            os<<a.ch;
            return os;
        }
        friend istream& operator>>(istream& is,Character &a)
        {
            is>>a.ch;
            return is;
        }
    };
    int main()
    {
        int cases, data;
        Character ch;
        cin>>cases;
        for (int i = 0; i < cases; i++)
        {
            cin>>ch;
            cin>>data;
            cout<<(ch + data)<<" "<<(ch - data)<<endl;
        }
    }

  • 相关阅读:
    模块化编程
    flex 弹性布局
    作用域与作用域链
    深入解读JavaScript面向对象编程实践
    javascript Null、Undefined 、NaN的联系与区别
    跨域常见解决方案
    Reverse Pairs
    315. Count of Smaller Numbers After Self
    2. Add Two Numbers
    657. Judge Route Circle
  • 原文地址:https://www.cnblogs.com/TogetherLaugh/p/6623492.html
Copyright © 2011-2022 走看看