用C语言如何把十进制转换为十六进制,要求程序中运用函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言如何把十进制转换为十六进制,要求程序中运用函数相关的知识,希望对你有一定的参考价值。

参考技术A main()

void change(int s);
int num;
printf("请输入这个数:");
scanf("%d",&num);
printf("该数的十六进制形式为:0x%x\n",num);
//直接以十六进制的形式将整数输出
change(num);

void change(int s)
char num1[10];
sprintf(num1,"%x",s);
//sprintf()函数是将变量按指定的格式保存至字符串中。
printf("该数的十六进制形式为:0x%s\n",num1);

说明:
%d 以十进制形式输出整数
%o 以八进制形式输出整数
%x 以16进制形式输出整数本回答被提问者采纳
参考技术B 说明:
1.首先变量的值和进制无关 int a=10; 和 int a=0X0A;都是一回事。
2.如果要将一个值用十六进制输出
int a = 10;
printf("%X",a); 输出 A
当然了,建议用 printf("0X%X",a); 输出 0XA

附:
%d 以十进制形式输出整数
%o 以八进制形式输出整数
%x 以16进制形式输出整数(0-9 a-f)即:字母小写
%X 以16进制形式输出整数(0-9 A-F)即:字母大写

还是给个可以运行的代码,说明一下问题:

#include<stdio.h>
#include<string.h>

char* DecToHex(int iDecVal,char* szHex)

//将十进制整数格式化为16进制,结果保存在字符串中
sprintf(szHex,"%X",iDecVal);
return szHex;


void main()

int iDecVal;
char szHex[100];

iDecVal = 100;
DecToHex(iDecVal,szHex);
printf("Decimal:%d,Hex:%s\n",iDecVal,szHex);

求用c#语言写一个将十进制转换为二进制的程序

用堆栈
请确定可用

呵呵,没有意义的事情,因为在内存里他都是二进制,所谓十进制二进制十六进制,只是显示的问题,也就是字符串的问题,要显示问题很好转换
如果要用堆栈,那就比较麻烦,也没有必要
///
///
堆栈
///
private
stack
intstack
=
new
stack
(
5
);
public
void
dtob(
int
inum
)

intstack.push(
inum
%
2
);
//
余数入栈
int
d
=
inum
/
2;
if
(
d
!=
0
)
dtob(
d
);
//
求下一个二进制位
return;

//下面是调用程序
public
static
void
main()

intstack.clear();
dtob(
11
);
stringbuilder
s
=
new
stringbuilder();
while
(
intstack.count
!=
0
)
s.insert(
0,
intstack.pop()
);
//
从堆栈中取出所有的二进制位
messagebox.show(
"二进制数:"
+
s.tostring()
);

//要转换下面的方法更简单,而且效率更高
public
string
dtob1(
int
inum
)

int
len
=
sizeof(
int
)
*
8;
stringbuilder
s
=
new
stringbuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
inum;
for
(
int
i
=
0;
i
<
len;
i++
)

if
(
(
tmp
&
exmple
)
==
0
)
s.append(
"0"
);
else
s.append(
"1"
);
tmp
<<=
1;

return
s.tostring();
参考技术A ///
///
堆栈
///
private
Stack
Intstack
=
new
Stack
(
5
);
public
void
DtoB(
int
iNum
)

Intstack.Push(
iNum
%
2
);
//
余数入栈
int
d
=
iNum
/
2;
if
(
d
!=
0
)
DtoB(
d
);
//
求下一个二进制位
return;

//下面是调用程序
public
static
void
Main()

Intstack.Clear();
DtoB(
11
);
StringBuilder
s
=
new
StringBuilder();
while
(
Intstack.Count
!=
0
)
s.Insert(
0,
Intstack.Pop()
);
//
从堆栈中取出所有的二进制位
MessageBox.Show(
"二进制数:"
+
s.ToString()
);

//要转换下面的方法更简单,而且效率更高
public
string
DtoB1(
int
iNum
)

int
len
=
sizeof(
int
)
*
8;
StringBuilder
s
=
new
StringBuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
iNum;
for
(
int
i
=
0;
i
<
len;
i++
)

if
(
(
tmp
&
exmple
)
==
0
)
s.Append(
"0"
);
else
s.Append(
"1"
);
tmp
<<=
1;

return
s.ToString();
参考技术B /*@file TenToX.cs*/
/*功能:用堆栈实现10进制到2,8,16进制的数字转换*/
using System;
using System.Collections;

class TenToX

static void Main(string[] args)

int num, baseNum;
Console.Write("输入十进制数字: ");
num = Convert.ToInt32(Console.ReadLine());
Console.Write("选择进制类型[2/8/16]: ");
baseNum = Convert.ToInt32(Console.ReadLine());
Console.Write(num + "=>转换 ");
MulBase(num, baseNum);
Console.WriteLine(" 进制基数" + baseNum);
Console.Read();

//用堆栈转换实现N进制间转换
static void MulBase(int n, int b)
Stack Digits = new Stack();
do
Digits.Push(n % b);
n /= b;
while (n != 0);

while (Digits.Count > 0)
Console.Write(Digits.Pop());



//end class

功能多了一些,稍微删减就行本回答被提问者采纳
参考技术C /// <summary>
/// 堆栈
/// </summary>
private Stack<int> Intstack = new Stack<int>( 5 );

public void DtoB( int iNum )

Intstack.Push( iNum % 2 ); // 余数入栈
int d = iNum / 2;
if ( d != 0 )
DtoB( d ); // 求下一个二进制位

return;


//下面是调用程序
public static void Main()

Intstack.Clear();
DtoB( 11 );
StringBuilder s = new StringBuilder();
while ( Intstack.Count != 0 )
s.Insert( 0, Intstack.Pop() ); // 从堆栈中取出所有的二进制位

MessageBox.Show( "二进制数:" + s.ToString() );


//要转换下面的方法更简单,而且效率更高
public string DtoB1( int iNum )

int len = sizeof( int ) * 8;
StringBuilder s = new StringBuilder();
int exmple = 1 << len - 1;
int tmp = iNum;
for ( int i = 0; i < len; i++ )

if ( ( tmp & exmple ) == 0 )
s.Append( "0" );
else
s.Append( "1" );

tmp <<= 1;


return s.ToString();
参考技术D C行吗?

以上是关于用C语言如何把十进制转换为十六进制,要求程序中运用函数的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制?

C语言程序,怎么把16进制转成字符:

C语言中,怎么把十进制转换成十六进制数

求C语言将十六进制字符串转换为整型int的函数源代码,要求不能用库函数?

c语言 十六进制转换为二进制 用函数做

ZZNUOJ_用C语言编写程序实现1144:多种进制(附完整源码)