用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语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制?