输入一个十进制数,输出十六进制数

我想看一下一个十进制数是怎么转换成十六进制的,我只是想体会一下转换的过程,然后我能自己编写程序转换成任意进制的,我这样说你懂我意思吗?
比如说
#include <stdio.h>
int main(int argc, char *argv[])
{
int n;
scanf("%d", &n);
printf("%X\n", n);
return 0;
}
这个是不行的,我不是只要一个结果,我想看它是怎么转化的?
拜托了,网上没人会解答,只好求助你了

数字n系统会把它转换成2进制保存在内存,数学上怎么转换,系统也怎么转,同理2进制转换成十六进制,数学上怎么转换,系统也怎么转。求高手指点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-25
以100这个十进制数转为16进制为例子来说明10进制到16进制的转换。
1. 计算100%16,得到的值4为对应16进制的最低位;
2. 计算100/16得6。
3. 然后对6%16=6。得到的值6为对应16进制的次低位
4. 计算6/16=0,为6时结束循环。
所以100对应的十六进制就是64。
下面给出一个例子程序:
#include<stdio.h>
#define N 8
void tran(int num) // 转换函数
{
int arr[N],i; // N的大小要保证余数都能存进去
for (i=0;i < N;i++)
{
arr[i]=num%16; // 循环上述给出的例子过程,把余数存进数组中
num=num/16;
if(num==0) break; // 为0就退出了
}
printf("转换为16进制数为: ");
for (;i>=0;i--) // arr[0]存的是对应16进制的最低位
switch (arr[i])
{
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
default: printf("%d",arr[i]);
}
printf("\n");
}
int main()
{
int num;
printf("请输入要转换的十进制数:\n");
scanf("%d",&num);
tran(num);
return 0;
}
上述程序适当修改一番,就能变成10进制向任意进制的转换程序了。看明白后,自己改一改吧。追问

太好,终于等到你回答了,你真厉害,是老师吗?
基本能看懂,就是void tran(int num),这个不太懂,
void 有什么用,在书上看过但没搞明白

追答

void在这里没有什么实际的意义,表示该函数无需返回值。
无需返回值的函数可以定义为void。
有些函数需要返回值来表示确定的含义,如
int max(int i, int j) { return (i < j) ? j : i ;}这样的,用返回值来表示参数中较大的值。

来自:求助得到的回答本回答被提问者和网友采纳
第1个回答  2012-11-25
x转换成n进制的
while(x)
{
x=x%n;
printf("d",x);
}
大致这样
相似回答