十进制转换为十六进制
问题如题,请给一点指点,谢谢
----------------解决方案--------------------------------------------------------
可以先把十进制转为二进制,再从二进制转为十六进制
----------------解决方案--------------------------------------------------------
比如把十进制56转为二进制,用56连续除2每次取余一直除到最后,结果为111000.
再把这个二进制转为十六进制,方法是把这个数由右到左每4位组成一组,对照进制数对应关系表,就OK了.
----------------解决方案--------------------------------------------------------
求余辗转法
----------------解决方案--------------------------------------------------------
谢谢
----------------解决方案--------------------------------------------------------
%d--%x
----------------解决方案--------------------------------------------------------
scanf("%d",&a);
printf("%x",a);
用栈也可以.....
----------------解决方案--------------------------------------------------------
#include<iostream>
using namespace std;
void trans(int,int);
int main()
{
int n,sel;
cout<<"输入一个整数:";
cin>>n; //输入一个整数
do
{
cout<<"请选择你需要的进制:2,8,16,32(输入0时退出):"; //选择进制数
cin>>sel;
switch(sel)
{
case 2 : trans(n,2);
break;
case 8 : trans(n,8);
break;
case 16 : trans(n,16);
break;
case 32 : trans(n,32);
break;
case 0 : break;
default : cout<<"进制输入错误!"<<endl;
}
}while(sel!=0);
return 0;
}
void trans(int n,int base) //定义实现转换的函数
{
int num[20],i=0,j,m=n;
do
{
i++;
num[i]=m%base;
m=m/base;
}
while(m!=0);
cout<<n<<"转换成"<<base<<"进制的结果为:";
for(j=i;j>=1;j--)
if(num[j]<=9)
cout<<num[j];
else
cout<<num[j]-9+'a';
cout<<endl;
}
----------------解决方案--------------------------------------------------------
用%x输出,哈哈,开玩笑
----------------解决方案--------------------------------------------------------
#include"stdio.h"
main()
{ char a[20];
int x,y,t,i=0;
scanf("%d",&x);
scanf("%d",&y);
while(x)
{
t=x%y;
if(t>=0&&t<=9)//0到9
{
a[i++]=t+'0';
}
else//10开始用字母表示
{
a[i++]=t-10+'A';
}
x/=y;
}
a[i]='\0';
while(i)
printf("%c",a[--i]);
}
----------------解决方案--------------------------------------------------------