C语言编程题

2024-12-31 09:52:24
推荐回答(1个)
回答1:

# include
# include

#define N 20 //字符数组大小

char trans(int x)
{
if(x<10)
return '0'+x;
else
return 'a'+x-10; //这里要减去10,确保得到的字符是a-f
}

int DtoH(int n,char *str)
{
int i=0;
while(n!=0)
{
str[i]=trans(n%16);
n=(n-n%16)/16; //这个条件我也想了一大会儿,这样对了应该
i++;
}
return i-1;
}

void main()
{
int i,k,n;
char str[N]; //致使你溢出的原因,你要定义一个数组,你只定义一个指针怎么能对str[i]赋值呢
scanf("%d",&n);
k=DtoH(n,str);
for (i=0;i<=k;i++)
printf("%c",str[k-i]);
printf("\n");
}

这下该好了应该,想了一大会儿 呵呵~~