实现加法计算(不用加减乘除运算符)

题目: 不用加减乘除实现两个数相加。
解题:第一步:不考虑进位,两个数相加sum(例如:5+7=2)
第二步:求进位carry(例如:5+7有进位10)
第三步:sum加carry,若有进位返回第一步,若无进位,跳出。
代码实现中用异或(^)实现第一步,用与(&)实现第二步.

int Add(int num1, int num2)
{

int sum, carry;
do
{
    sum = num1^num2;
    carry = (num1&num2) << 1;
    num1 = sum;
    num2 = carry;

} while (num2 != 0);

return num1;

}

可以使用友元函数重载加减乘除运算符实现分数类的运算。首先,我们需要定义一个表示分数的类,其中包含分子和分母两个成员变量。 ```cpp #include <iostream> class Fraction { public: Fraction(int numerator = 0, int denominator = 1) : num(numerator), den(denominator) {} // 声明友元函数 friend Fraction operator+(const Fraction& f1, const Fraction& f2); friend Fraction operator-(const Fraction& f1, const Fraction& f2); friend Fraction operator*(const Fraction& f1, const Fraction& f2); friend Fraction operator/(const Fraction& f1, const Fraction& f2); void print() const { std::cout << num << "/" << den << std::endl; } private: int num; // 分子 int den; // 分母 }; // 友元函数重载加法运算符 Fraction operator+(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.den + f2.num * f1.den; int denominator = f1.den * f2.den; return Fraction(numerator, denominator); } // 友元函数重载减法运算符 Fraction operator-(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.den - f2.num * f1.den; int denominator = f1.den * f2.den; return Fraction(numerator, denominator); } // 友元函数重载乘法运算符 Fraction operator*(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.num; int denominator = f1.den * f2.den; return Fraction(numerator, denominator); } // 友元函数重载除法运算符 Fraction operator/(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.den; int denominator = f1.den * f2.num; return Fraction(numerator, denominator); } ``` 在上述代码中,我们使用了友元函数实现加减乘除运算符的重载。友元函数可以直接访问类的私有成员变量,因此可以进行相应的运算。通过重载加减乘除运算符,我们可以直接对两个分数对象进行运算。 下面是一个示例的使用: ```cpp int main() { Fraction f1(1, 2); Fraction f2(3, 4); Fraction sum = f1 + f2; std::cout << "Sum: "; sum.print(); Fraction diff = f1 - f2; std::cout << "Difference: "; diff.print(); Fraction product = f1 * f2; std::cout << "Product: "; product.print(); Fraction quotient = f1 / f2; std::cout << "Quotient: "; quotient.print(); return 0; } ``` 输出结果为: ``` Sum: 10/8 Difference: -2/8 Product: 3/8 Quotient: 4/6 ``` 注意,在实际应用中,还需要进行一些额外的处理,例如约分等。上述代码只是一个简单示例,仅用于说明如何使用友元函数重载加减乘除运算符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值