C语言编程:怎么把一个十进制数转换成为一个十六进制数
第一种:用来糊弄老师的,输入一个数采用16进制格式输出
#include
int main()
{
int num = 0;
scanf("%d", &num);
printf("%x", num);
return 0;
}
第二种:
#include
#include
char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);
int main()
{
int dNum;
char oNum[100] = {0};
//输入一个十进制数
scanf("%d", &dNum);
//调用转换函数,将十进制转换成以字符串表示的十六进制
dToO(dNum, oNum);
//输出以字符串表示的16进制数据
printf("%s\n", oNum);
return 0;
}
void dToO(int dNum, char* oNum)
{
char temp[100] = {0};
for (int i = 0; (dNum) && (i
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}
char* p = temp;
while (*(p+1)) p++;
for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}
//下面是10进制转换成任意进制数
#include"stdio.h"
main()
{
inti=0,m,n,r,a[40];
charstr[16]="0123456789ABCDEF";
printf("\n请输入一个整数和要转换成的进制数\n");
scanf("%d%d",&m,&r);/*r代表进制数*/
if(m<0)
{printf("%c",'-');
m=-m;}/*判断是否输入的是负数*/
do{
a[i++]=m%r;
m=m/r;}while(m>0);/*m对r取余数,再除以r*/
printf("转换结果是:\n");
for(n=i-1;n>=0;n--)
printf("%c",str[a[n]]);
}
//够简单吧!
十进制转十六进制算法
10进制转16进制的计算方法是对于整数部分,用被除数反复除以16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。具体的过程如下:
比如要转换120为十六进制数:
1、把要转换的数,除以16,得到商和余数,
2、那么要转换的数是120, 120 ÷ 16,得到商是7,余数是8。
3、“将商继续除以16,直到商为0……”,现在商是7,还不是0,所以继续除以16。那就 7 ÷ 16, 得到商是0,余数是7。现在商已经是0。
4、我们两次计算依次得到余数分别是:8、7,将所有余数倒序排列,那就是:78。
注意事项:
1、对于小数部分,采用连续乘以基数16,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。
2、进制转换是人们利用符号来计数的方法,进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。