以二进制的方式输入两个正整数(即0和1组成的字符串),然后输入到一个4则运算(+,-,*,/),按short型计算这两个数的运算结果,并将结果按二进制输出(高位零可不输出)
思路:若直接算二进制之间的运算,很难,所以可先将输入的二进制转换为十进制,经过十进制的加减乘除后,得到十进制结果,最后将此结果转换为二进制输出。所以需构造两个函数:dou_ten()二进制转十进制函数,ten_dou()十进制转二进制函数;
代码:
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
using namespace std;
int dou_ten(char ch[],int len){
short x=0;
for(int i=len-1;i>=0;i--){
x=x+(ch[i]-'0')*pow(2,len-1-i);
}
return x;
}
void ten_dou(short x){
short a[101];
int i=0;
while(x>0){
a[i]=x%2;
x=x/2;
i++;
}
for(int j=i-1;j>=0;j--){
cout<<a[j];
}
cout<<endl;
}
int main()
{
char ch1[20],ch2[20];
char fu;
short x;
while(cin>>ch1>>ch2){
int len1=strlen(ch1),len2=strlen(ch2);
cin>>fu;
short x1=dou_ten(ch1,len1),x2=dou_ten(ch2,len2);
if(fu=='+'){
x=x1+x2;
}
if(fu=='-'){
x=x1-x2;
}
if(fu=='*'){
x=x1*x2;
}
if(fu=='/'){
x=x1/x2;
}
//cout<<x<<endl;
ten_dou(x);
}
return 0;
}
结果: