十进制转为K进制代码的实现
利用栈来实现,进制的转换就用从高位到低位读出,正和栈的先进后出的顺序一样。
#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef int datatype;
typedef struct Stack STACK , *s;
struct Stack{
datatype data[maxsize];
int top;
};
s stack;
void init(){
stack = (s)malloc(sizeof(STACK));
stack->top = -1;
}
bool isEmpty(){
if(stack->top == -1){
return true;
}else{
return false;
}
}
bool isFull(){
if(stack->top == maxsize-1){
return true;
}
return false;
}
void push(datatype data){
if(isFull()){
return ;
}
stack->data[++(stack->top)] = data;
}
int pop(){
if(isEmpty()){
return -1;
}
return stack->data[(stack->top)--];
}
//十进制转换为二进制
void BaseTrans(int N){
int i;
while(N != 0){
i = N%2;
N = N/2;
push(i);
}
printf("整数%d转换为二进制的结果为:",N);
while(!isEmpty()){
printf("%d",pop());
}
printf("\n");
}
//十进制转化为k进制
void AllBaseTrans(int N, int k){
int i;
while(N != 0){
i = N%k;//取余入栈
N = N/k;
push(i);
}
printf("整数%d转换为%d进制的结果为:",N,k);
while(!isEmpty()){
printf("%d",pop());
}
printf("\n");
}
int main(){
init();
AllBaseTrans(222,2);
BaseTrans(222);
return 0;
}