最简单的,不涉及算法的作法就是用printf的输出格式 %x 输出16进制
%x 输出小写的a、b、c、d、e、f %X输出大写的A、B、C、D、E、F
#include"stdio.h"
int main()
{
int a;
printf("请输入一个10进制整数:" );
scanf( "%d", &a);
printf("该数转换为16进制数为: %X\n",a);
return 0;
}
详细的转化方法:
#include
int x[100];
int jzzh(int y,int ml)
{
int i,a;
i=ml;
x[0]=0;
for(a=1;;a++)
{
if(i!=0)
{
x[a]=i%y;
x[0]++;
}
else
break;
i=i/y;
}
return x[0];
}
int main()
{
long int y,ml;
long int a;
printf("请输入需要转换至进制数:");
scanf("%d",&y);
printf("请输入数字:");
scanf("%d",&ml);
jzzh(y,ml);
for(a=x[0];a>=1;a--)
{
if(x[a]>=10)
{
printf("%c",x[a]+55);
}
else
{
printf("%d",x[a]);
}
}
printf("\n");
return 0;
}
追问
就我这个题而言
void f( long int x, char *p ){
sprintf(p,"%X",x);p++;
}
我这个为啥不对