编写一个函数,用于将十进制整数转换成十六进制,并输出,为什么不可使用系统自带函数?

在main函数中测试相应功能,希望有注释,简单易懂
2024-11-28 23:57:58
推荐回答(1个)
回答(1):

#define MAXSIZE 30
typedef int ElemType;
/*定义顺序栈结构*#include /
typedef struct
{ ElemType elem[MAXSIZE];
int top;
}SqStack;
/*初始化栈操作#include*/
void Init(SqStack *s)
{ s->top=-1; }
/*入栈 */
int Push(SqStack *s, ElemType x)
{ if (s->top==MAXSIZE-1) return 0 ; /* 栈满不能入栈 */
else
{ s->top++; s->elem[s->top]=x ; return 1; }
}
/*出栈 */
int Pop(SqStack *s, ElemType *y)
{ if (Empty(s)) return 0; /* 栈空不能出栈 */
else
{ *y=s->elem[s->top]; s->top--; return 1; }/* 栈顶元素存入*y,返回 */
}
/*进制转换*/
void conversion(int N,int R)
{SqStack S;
int x, int i;
Init(&S);
while(N)
{ Push(&S,N%R); /*进栈操作*/
if(i==-1)
{ printf("\n栈已满不能进行入栈操作!");
Return 0;
}
N=N/R;
}
printf("结果是:\n");
while(!Empty(&S)) /*当栈不为空时,出栈操作*/
{ Pop(&S,&x) ;
if(i==-1)
{ printf("\n栈为空不能进行出栈操作!");
return 0;}
else
printf("%x",x);
}/*if*/
}

void main()
{ int Num=1,r;
while(Num>0)
{ clrscr();
printf("\n\n\t\t输入要进行转换的数据(逗号分隔,负数退出)\n");
scanf("%d",&Num);
if ((Num>=0)&&(r>0))
conversion(Num,16);
else printf("输入错误!");
getchar(); getchar();
}
}