实现一个加减乘除运算的小型系统,进行整数的加、减、乘、除运算?

1)在每一种运算下,由系统随机产生两个数(建议数值大小在1~100之间,但不限于此)参加运算,当用户根据系统提供的公式进行计算,并输入计算结果后,系统判断结果的对错。如果结果正确,则显示“Very Good”,否则,显示“Wrong!!!”。
2)每次选择一种运算后,系统随机产生5道题目,当用户运算完毕后,系统给出正确率。如用户5题答对了3题,则显示正确率为60%。运算完毕后,系统将返回主菜单,供用户再次选择。


#include <iostream>
using namespace std;
/**用位运算实现整数的加运算*/
int add(int a,int b)
{
    int result=a;
    while(b)
    {
        result=a^b;
        b=(a&b)<<1;
        a=result;
    }
    return result;
}
/**用位运算实现整数的减运算*/
int sub(int a,int b)
{
    return add(a,add(~b,1));
}
/**用位运算实现整数的乘运算*/
int mul(int a,int b)
{
    int result=0,flag=0;
    if(b&0x8000)
    {
        b=add(~b,1);
        flag=1;
    }
    while(b)
    {
        if(b&1)
            result=add(result,a);
        a<<=1;
        b>>=1;
    }
    if(flag)
        return add(~result,1);
    return result;
}
/**用位运算实现整数的除运算*/
int div(int a,int b)
{
    if(b)
    {
        int result=0,flag=0;
        if((a^b)&0x8000)
            flag=1;
        if(a&0x8000)
            a=add(~a,1);
        if(b&0x8000)
            b=add(~b,1);
        for(int i=31; i>=0; i=sub(i,1))
            if((a>>i)>=b)
            {
                result=add(result,1<<i);
                a=sub(a,b<<i);
            }
        if(flag)
            return add(~result,1);
        return result;
    }
    cout<<"除数为0!b=";
    return false;
}
int main()
{
    int a1=17,b1=5,a2=-17,b2=-5;
    /**位运算加法测试*/
    cout<<"***位运算加法测试***"<<endl;
    cout<<"a = "<<a1<<"   b = "<<b1<<"   a + b = "<<add(a1,b1)<<endl;
    cout<<"a = "<<a1<<"   b = "<<b2<<"   a + b = "<<add(a1,b2)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b1<<"   a + b = "<<add(a2,b1)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b2<<"   a + b = "<<add(a2,b2)<<endl;
    /**位运算减法测试*/
    cout<<"***位运算减法测试***"<<endl;
    cout<<"a = "<<a1<<"   b = "<<b1<<"   a - b = "<<sub(a1,b1)<<endl;
    cout<<"a = "<<a1<<"   b = "<<b2<<"   a - b = "<<sub(a1,b2)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b1<<"   a - b = "<<sub(a2,b1)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b2<<"   a - b = "<<sub(a2,b2)<<endl;
    /**位运算乘法测试*/
    cout<<"***位运算乘法测试***"<<endl;
    cout<<"a = "<<a1<<"   b = "<<b1<<"   a * b = "<<mul(a1,b1)<<endl;
    cout<<"a = "<<a1<<"   b = "<<b2<<"   a * b = "<<mul(a1,b2)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b1<<"   a * b = "<<mul(a2,b1)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b2<<"   a * b = "<<mul(a2,b2)<<endl;
    /**位运算除法测试*/
    cout<<"***位运算除法测试***"<<endl;
    cout<<"a = "<<a1<<"   b = "<<b1<<"   a / b = "<<div(a1,b1)<<endl;
    cout<<"a = "<<a1<<"   b = "<<b2<<"   a / b = "<<div(a1,b2)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b1<<"   a / b = "<<div(a2,b1)<<endl;
    cout<<"a = "<<a2<<"   b = "<<b2<<"   a / b = "<<div(a2,b2)<<endl;
    return 0;

 

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632