算法:
第一步:输入num,m,i;
第二步,num%2,得到商m和余数i;
第三步,若num%2不等于0,则num=m,m%2,输出i,否则,
输出二进制的值。
源代码:
# include<iostream>
using namespace std;
const int StackSize=100;
template <class DataType>
class SeqStack
{
public:
SeqStack(){top=-1;}
~SeqStack(){}
void Push(DataType x);
DataType Pop();
DataType GetTop();
int Empty();
private:
DataType data[StackSize];
int top;
};
template <class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if(top==StackSize-1) throw"上溢";
top++;
data[top]=x;
}
template <class DataType>
DataType SeqStack<DataType>::Pop()
{
DataType x;
if(top==-1) throw"下溢";
x=data[top--];
return x;
}
template <class DataType>
DataType SeqStack<DataType>::GetTop()
{
if(top!=-1) return data[top];
}
template <class DataType>
int SeqStack<DataType>::Empty()
{
if(top==-1) return 1;
else return 0;
}
void transform(int n,int b)
{
SeqStack<int> S;
int i;
while(n)
{
S.Push(n%b);
n=n/b;
}
while(!S.Empty())
{
i=S.GetTop();
S.Pop();
cout<<i;
}
}
int main()
{
int num,d=2;
cout<<"Input the num:";
cin>>num;
transform(num,d);
system("pause");
return 0;
}
程序结果: