怎样用C语言编写一个程序将输入的十进制数转化成16进制?

2024年11月01日 14:47
有3个网友回答
网友(1):

你可以设置一个字符串数组
char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}

以后你得出的数字,比如余数y是10,那么HEX[y]打印出来就是A了

例子(现写的)

int now;
int res[100];//答案
int c = 0;//位数

输入到now;
while (now > 0)
{
res[c] = now % 16;
now = now / 16;
c++;
}

输出是:
for (i = 0; i < c; i++)
{
输出 HEX[res[i]];
}

算法的精髓都给你啦,好好理解吧
/**********************************************

**************** 补充 *****************

**********************************************/

改你的代码

#include "stdio.h"
void main()
{
char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; //<----------------这里加了
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);

int a[10]; //<----------------这里改了
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
a[i]=yushu;
num=num/16;
i++;/*关键的就在这里,这后面书上写的要用SWITCH,但是我用不好,请各位大虾指教*/

}

printf("转化为十六进制的数为:");
for(;i>=0;i--)//倒序输出
{
printf("%c",HEX[a[i]]); //<----------------这里改了

}
printf("\n");
}

网友(2):

#include
#include

void f1(int m, int n) {
if(m) { f1(m/n,n);
if(n<10) cout< else m%n>=10? cout< }
}

void f2(double m, int n) {
while(m) { if(n<10) cout< else m*n>=10? cout< m = m*n - int(m*n);
}
}

void f(double m, int n) {
f1(m, n);
if(int(m) == m) return;
cout<<'.';
m -= int(m);
f2(m, n);
}

void f10(char c[], double m) {
cout<<' '< char c[100];
int n;
cout<<"\n 输入一数与它的进制: ";
cin>>c>>n;
cout< f10(c, fn_10(c,n));
}

网友(3):

long n;
scanf("%ld",&n);
printf("%x",n);

是不是这样呵呵。