Problem E: 新奇的加法运算
Problem E: 新奇的加法运算
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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;
}
作者:7oDo
仅供参考,请勿抄袭。
Hang Hang Hang !!!

浙公网安备 33010602011771号