作业帮 > 综合 > 作业

十进制转化为十六进制数

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 21:17:14
十进制转化为十六进制数
输入一个十进制正整数,并把它转化为十六进制数输出
我的代码如下:
#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
首先 你的变量定义有问题:
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
#include
#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:printf("%d",num);break;
case 4:printf("%d",num);break;
case 5:printf("%d",num);break;
case 6:printf("%d",num);break;
case 7:printf("%d",num);break;
case 8:printf("%d",num);break;
case 9:printf("%d",num);break;
case 10:printf("%c",'A');break;
case 11:printf("%c",'B');break;
case 12:printf("%c",'C');break;
case 13:printf("%c",'D');break;
case 14:printf("%c",'E');break;
case 15:printf("%c",'F');break;
}
}
int main()
{
int x;
scanf("%d",&x);
if(x