7-1 简单计算机 (50 分)
作为一名计算机系的学生,我们都知道计算机在对数据的处理前会先把给定的数据转换成二进制类型再进行处理,处理完后再转换回原来的数据进制。现在我们也编写一个可以把任意十进制数转换成任意二进制数的简单计算机吧。So easy!
输入格式:
输入多组数,每组有一个十进制整数。
输出格式:
输出相对应的二进制数。
输入样例:
在这里给出一组输入。例如:
8
9
-10
输出样例:
在这里给出相应的输出。例如:
01000
01001
11010
#include<iostream>
using namespace std;
#define N 100
typedef struct
{
int *base;
int top;
int stacksize;
}SqStack;
void Init(SqStack &s)
{
s.base=new int[N];
s.top=0;
s.stacksize=N;
}
void Push(SqStack &s,int r)
{
if(s.top==s.stacksize)
cout<<"Error";
s.base[s.top++]=r;
}
void Shift(int n,SqStack &s)
{
if(n>0)
cout<<"0";
else
{
cout<<"1";
n=-n;
}
int m,r,count=0;
while(m)
{
m=n/2;
r=n%2;
count++;
Push(s,r);
n=m;
}
s.stacksize=count;
for(int i=s.top-1;i>=0;i--)
cout<<s.base[i];
cout<<endl;
}
int main()
{
int n,count=0;
SqStack s;
while(cin>>n)
{
if(n==0)
cout<<"00"<<endl;
else
{
Init(s);
Shift(n,s);
}
}
return 0;
}