代码如下:
#include "stdio.h"
int main()
{
int num=0
int a[100]
int i=0
int m=0
int yushu
char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}
printf("请输入一个十进制整数:")
scanf("%d",&num)
while(num>0)
{
yushu=num%16
a[i++]=yushu
num=num/16
}
printf("转化为十六进制的数为:0x")
for(i=i-1i>=0i--)//倒序输出 {
m=a[i]
printf("%c",hex[m])
}
printf("\n")
}
程序运行结果:
扩展资料
C语言中,十进制转换十六进制,可以先输入十进制整数,然后去拼十六进制,十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,只需把二进制除以16得到余数去上面定义的hex[16]数组进行取值接可以得到转换的数字。
参考资料:百度百科-十六进制
十进制数 由 0到9 组成, 逢10 进1, 各个位的权 是 10 的 i 次方,整数部分 i 从 0 起算。小数部分 i 从 -1 起算。十六进制 由 0到十五组成,逢16进1,各个位的权 是 16 的 i 次方,整数部分 i 从 0 起算。小数部分 i 从 -1 起算。
十六进制 的十到十五用 a,b,c,d,e,f 表示。
整数部分,十进制 转化为十六进制 可以用 不断地 除以16 “取余数” 的方法 得到。
小数部分,十进制 转化为十六进制 可以用 不断地 乘16“取整数”的 的方法 得到。
例如:十进制 17852.5 转化为十六进制,
17852/16 = 1115 余 12 -- c
1115/16 = 69 余 11 -- b
69/16 = 4 余 5
4/16 = 0 余 4
整数部分 得16进制: 45bc
.5 * 16 = 8.0 取 8 余 0
小数部分 得16进制: .8
合起来 0x45bc.8
c 语言程序 printf("%x", 17852) %x格式 输出 16进制: 45bc 可用于转换整数。
根据10进制转换为16进制的规则,编写C语言程序将10进制数转换为16进制数。
具体实现方法可参考如下程序:
#include<stdio.h>void main()
{
int i, x // x表示欲转换的10进制数
int data[10], index=0 // data数组存放转换后的16进制数,index表示下标
scanf("%d", &x) // 接受欲转换的10进制数
for(i=0 i<10 i++) // 对数组data进行初始赋值操作
data[i] = 0
printf("%d对应的16进制为:", x)
// 反复相除取余,并将余数存放在data数组中
while(x>0)
{
data[index] = x%16
x = x/16
index++
}
// 逆序输出data数组中的元素,即为10进制数对应的16进制数
for(i=index-1 i>=0 i--)
printf("%d", data[i])
printf("\n")
}