(最近比较讨厌计算二进制,写了这个计算器)
头文件
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
颜色函数
void color(int n)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), n);
return;
}
进制转换函数
int f1(string n){
long long m=n.size(),he=0;
for(int i=0;i<m;i++){
int shu=n[i]-'0';
he+=shu*pow(2,m-1-i);
}
return he;
}//二进制转十进制
void f2(long long n){
long long sum=0;
long long y,x=1;
while(n!=0){
y=n%2;
sum+=x*y;
x*=10;
n/=2;
}
cout<<sum;
}//十进制转二进制
主函数
while循环
while(1){
变量定义
string a,b;
char n;
long long he;
颜色、输入输出
color(395);
cout<<" ";
cin>>a;
cin>>n;
cout<<" ";
cin>>b;
_sleep(100);
color(0);
system("cls");
color(395);
cout<<a<<n<<b<<"=";
判断计算符
if(n=='|'){
break;
}
switch(n){
case '+':
he=f1(a)+f1(b);
break;
case '-':
he=f1(a)-f1(b);
break;
case '*':
he=f1(a)*f1(b);
break;
case '/':
he=f1(a)/f1(b);
break;
}
结果输出
f2(he);
cout<<"\n";
system("pause");
color(0);
system("cls");
结束函数
}
return 0;
}
总代码
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
void color(int n)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), n);
return;
}
int f1(string n){
long long m=n.size(),he=0;
for(int i=0;i<m;i++){
int shu=n[i]-'0';
he+=shu*pow(2,m-1-i);
}
return he;
}
void f2(long long n){
long long sum=0;
long long y,x=1;
while(n!=0){
y=n%2;
sum+=x*y;
x*=10;
n/=2;
}
cout<<sum;
}
int main(){
while(1){
string a,b;
char n;
long long he;
color(395);
cout<<" ";
cin>>a;
cin>>n;
cout<<" ";
cin>>b;
_sleep(100);
color(0);
system("cls");
color(395);
cout<<a<<n<<b<<"=";
if(n=='|'){
break;
}
switch(n){
case '+':
he=f1(a)+f1(b);
break;
case '-':
he=f1(a)-f1(b);
break;
case '*':
he=f1(a)*f1(b);
break;
case '/':
he=f1(a)/f1(b);
break;
}
f2(he);
cout<<"\n";
system("pause");
color(0);
system("cls");
}
return 0;
}
运行结果
10001
+
1111110001+11111=110000
请按任意键继续. . .