十进制转化为十六进制数

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:15:22
输入一个十进制正整数,并把它转化为十六进制数输出
我的代码如下:
#define Maxsize 100
struct StackType
{
int elements[Maxsize];
int top;
};

int Push(StackType S,int x)
{
S.top++;
S.elements[S.top]=x;
return(0);
}

int Pop(StackType S,int *temp)
{
S.top--;
*temp=S.elements[S.top+1];
return(0);
}

void change(int num)

{
switch(num)
{
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
}
}

main()
{
struct StackType S;
S.top=-1;
int x;
scanf("%d",&x);
if(x<=0)
{printf("wrong num");}

while(x/16!=0)
{
Push(S,x%16);
x=x/16;
}
while(S.top!

首先 你的变量定义有问题:
1:StackType 被你定义为函数的函数,那么由此所生成的对象的生命周期是临时变量,要定义为全局变量
2:top也是如此
3:while(x/16!=0)
{
Push(S,x%16);
x=x/16;
}
这个函数有问题。假设我输入44,那么应该输出2C,但是当你执行完第一个while后,就不再进入第二次,因为44%16=12,而12/16==0,那么就不能储存到你所定义的数组了
4:还有你的switch函数不对,当输入44后,12->C,而2-->却不能输出。

////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
struct StackType
{
int elements[Maxsize];//数组储存数据
};

int top=-1;
int temp=0;
struct StackType S;

int Push(int x)
{
top++;
S.elements[top]=x;
return(0);
}

int Pop()
{
top--;
temp=S.elements[top+1];
return 0;
}

void change(int num)

{
switch(num)
{
case 1: printf("%d", num);break;
case 2: printf("%d", num);break;
case 3: pri