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