仅供参考,共同进步。

Problem E: 新奇的加法运算

Problem E: 新奇的加法运算

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 2232  Solved: 1352
[Submit][Status][Web Board]

Description

定义类newInt,包括:

1. int类型的数据成员。

2. 重载运算符“+”。计算规则为:将A、B对应位置上的数字相加,只保留个位数作为结果的对应位置上的数字。比如:876 + 543 = 319。注意:该运算不改变两个操作数的值。

3. 重载输入和输出运算符,用于输入和输出对象的属性值。

4. 无参构造函数和带参构造函数。

 

Input

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

每个测试用例包括2个非负整数,用空格隔开。

Output

见样例。

 

 

Sample Input

4
876 543
999 9999
9 1999
199 88

  

Sample Output

876 + 543 = 319
999 + 9999 = 9888
9 + 1999 = 1998
199 + 88 = 177

  

HINT

 

 不能使用string、char等字符或字符串类型。

 

Append Code

int main()
{
    int cases;
    newInt a, b, c;
    cin>>cases;
    for (int i = 0; i < cases; i++)
    {
        cin>>a>>b;
        c = a + b;
        cout<<a<<" + "<<b<<" = "<<c<<endl;
    }
    return 0;
}

  

#include <iostream>
using namespace std;
class newInt
{
public :
    int num;
    newInt(int t=0):num(t){}
    friend istream &operator>>(istream &is, newInt &p)
    {
        int t; is>>t;
        p.num=t;
        return is;
    }
    friend ostream &operator<<(ostream &os, newInt &p)
    {
        os<<p.num;
        return os;
    }
    newInt &operator + (newInt &p)
    {
        int i=0;
        int max_ , min_;
        if(num>p.num)
        {
            max_=num; min_=p.num;
        }
        else
        {
            max_=p.num; min_=num;
        }
        int sum=0;
        while(max_!=0)
        {
            i++;
            int temp;
            temp=(max_%10+min_%10)%10;
            max_/=10;
            min_/=10;
            for(int j=1; j<i; j++)
                temp*=10;
            sum+=temp;
        }
        newInt t(sum);
        return t;
    }
};
int main()
{
    int cases;
    newInt a, b, c;
    cin>>cases;
    for (int i = 0; i < cases; i++)
    {
        cin>>a>>b;
        c = a + b;
        cout<<a<<" + "<<b<<" = "<<c<<endl;
    }
    return 0;
}

  

posted @ 2018-06-02 16:46  南山i  阅读(378)  评论(0编辑  收藏  举报