数据结构c语言版问题描述: 实现将一个十进制的正整数转化为十六进制的算法。找不出哪里错,求帮助~

2024-11-16 01:50:34
推荐回答(1个)
回答(1):

#include
#define MAXSIZE 256
int Stack[MAXSIZE];
int top = -1;
bool isempty(){
return top == -1;
}
void push(int d){
Stack[++top] = d;
}
int pop(){
return Stack[top--];
}
char dec2hex(int x){
return (x>9?'a':'0') + (x%10);
}
int main(){
int x;
scanf("%d", &x);
//除16取余
while(x){
push(x%16);
x /= 16;
}
while(!isempty())
putchar(dec2hex(pop()));
}

存储结构就是int 数组 Stack
算法就是每次输入一个数字x,进行下面的循环:
1. x 不为零继续,为零则跳出
2. 每次将x 余16 的结果入栈(实际上是将x 的16 进制的第i 位入栈,i 表示循环次数)
3. x = x/16.(将x 自除以16)转至1
这是16 进制的存储过程,输出就是先读出(dec2hex() 函数完成)在打印出来:

顺序从栈顶到栈底分别是这个数字(16 进制下的)高位到低位。