写出代码利用顺序栈实现将10进制数转换为16进制数。
时间: 2023-12-21 19:05:12 浏览: 52
以下是利用顺序栈实现将10进制数转换为16进制数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct {
char* base;
char* top;
int stacksize;
} SqStack;
void InitStack(SqStack* S) {
S->base = (char*)malloc(STACK_INIT_SIZE * sizeof(char));
if (!S->base) exit(0);
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
}
void Push(SqStack* S, char e) {
if (S->top - S->base >= S->stacksize) {
S->base = (char*)realloc(S->base, (S->stacksize + STACKINCREMENT) * sizeof(char));
if (!S->base) exit(0);
S->top = S->base + S->stacksize;
S->stacksize += STACKINCREMENT;
}
*(S->top) = e;
S->top++;
}
int Pop(SqStack* S, char* e) {
if (S->top == S->base) return 0;
S->top--;
*e = *(S->top);
return 1;
}
void conversion(int num) {
SqStack S;
InitStack(&S);
while (num) {
int remainder = num % 16;
if (remainder < 10) {
Push(&S, remainder + '0');
}
else {
Push(&S, remainder - 10 + 'A');
}
num /= 16;
}
printf("转换为16进制数为:");
char e;
while (Pop(&S, &e)) {
printf("%c", e);
}
}
int main() {
int num = 123456;
conversion(num);
return 0;
}
```
其中,`InitStack`、`Push`、`Pop` 分别是栈的初始化、入栈、出栈操作,`conversion` 是将 10 进制数转换为 16 进制数的函数。
在函数 `conversion` 中,先初始化一个顺序栈 `S`,然后将 10 进制数每次除以 16 取余数,如果余数小于 10,就将其转换成字符 `'0'` 到 `'9'` 的 ASCII 码值,入栈;如果余数大于等于 10,就将其转换成字符 `'A'` 到 `'F'` 的 ASCII 码值,入栈。最后,依次出栈并打印出栈元素,就得到了该数的 16 进制表示。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)