沂水尚趣网咖:求利用栈把一个10进制数转换城16进制数(c语言)的程序

来源:百度文库 编辑:高考问答 时间:2024/05/10 19:13:43
用c语言写一个十进制转十六进制的程序
用栈来实现这个算法

运行示例:
输入:100000
输出:186a0

程序源码如下:
#include <stdio.h>
#include <stdlib.h>

#define MAX 100

int stack[MAX];
int top = 0;

int push(int *stack, int *top, int x)
{
if (*top == MAX)
return 0;
stack[(*top)++] = x;
return 1;
}

int pop(int *stack, int *top, int *x)
{
if (*top == 0)
return 0;
*x = stack[--(*top)];
return 1;
}

int empty(int *stack, int top)
{
return top == 0;
}

int main()
{
unsigned num = 0;
scanf("%u", &num);
while (num)
{
push(stack, &top, num % 16);
num /= 16;
}
if (empty(stack, top))
push(stack, &top, 0);
while (!empty(stack, top))
{
int digit = 0;
pop(stack, &top, &digit);
if (digit < 10)
printf("%c", '0' + digit);
else
printf("%c", 'a' + (digit - 10));
}
printf("\n");
return 0;
}

#include<math.h>
main()
{
int m;
printf("\nplease input a number:");
scanf("%d",&m); /*输入十进制数字*/
printf("\nthe answer is %x",m);
/*输出十六进制数字*/
}