㈠ c语言十进制转化为十六进制
十进制转化为十六进制代码:
#include"stdio.h"intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[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-1;i>=0;i--)//倒序输出{m=a[i];
printf("%c",hex[m]);}printf(" ");
}
程序运行结果:
(1)c语言初始化16进制数扩展阅读:
进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。
举例:二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
0110 0100 换算成十进制
第0位 0 * 20= 0
第1位 0 * 21= 0
第2位 1 * 22= 4
第3位 0 * 23= 0
第4位 0 * 24= 0
第5位 1 * 25= 32
第6位 1 * 26= 64
第7位 0 * 27= 0
公式:第N位2(N)
---------------------------
100
用横式计算为:
0 * 20+ 0 * 21+ 1 * 22+ 0 * 23+ 0 * 24+ 1 * 25+ 1* 26+ 0 * 27= 100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 22+ 1 * 25+1*26= 100
㈡ C语言编程:怎么把一个十进制数转换成为一个十六进制数
第一种:用来糊弄老师的,输入一个数采用16进制格式输出
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
printf("%x", num);
return 0;
}
第二种:
#include <stdio.h>
#include <string.h>
char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);
int main()
{
int dNum;
char oNum[100] = {0};
//输入一个十进制数
scanf("%d", &dNum);
//调用转换函数,将十进制转换成以字符串表示的十六进制
dToO(dNum, oNum);
//输出以字符串表示的16进制数据
printf("%s\n", oNum);
return 0;
}
void dToO(int dNum, char* oNum)
{
char temp[100] = {0};
for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}
char* p = temp;
while (*(p+1)) p++;
for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}
㈢ 求c语言将十进制数转换为16进制的函数
c语言将十进制数转换为16进制的函数:
#include<stdio.h>
main()
{
int u10;
char u16[10];
int w=0,a,b,i;
printf("请输入一个数字-->");
scanf("%d",&u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b<10)
{
u16[w]='0'+b;
}
else
{
u16[w]='A'+b-10;
}
a=a/16;
w++;
}
}
printf("
");
printf("%d(10)转换为16进制数字为:",u10);
for(i=w-1;i>=0;i--)
{
printf("%c",u16[i]);
}
printf("
");
}
(3)c语言初始化16进制数扩展阅读:
十进制数转换为二进制数方法
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
㈣ C语言如何定义一个16进制数
例:
int main(){
int a;
scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",&a);也可以输入十六进制并且比较正规
printf("%d",a);//十进制输出%d是输出一个十进制的数
printf("0x%x",a);//16进制输出printf("%llX ",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母
}
参考:
最大数字是15位,没有超过__int64能表达的最大数。__int64最大能表示16位十六进制数。所以直接进行加减就行了,需要注意的是输入输出的格式以及十六进制表达负数的时候显示的是补码。
#include<stdio.h>
int main(void)
{
long long a,b,result;
while(scanf("%llx%llx",&a,&b)!=EOF){
result=a+b;
if(result>=0)
printf("%llX ",result);
else
printf("-%llX ",-result);
}
return 0;
}
long long 类型格式字符:
(4)c语言初始化16进制数扩展阅读:
return用法:
作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式。
函数的定义一般是这样的,例如:
int a(int i)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字
{
...//省略函数体内容
return b;//b必须与函数头的返回值一致(此处为int型)
}
简单函数举例:
int addOne(int b)
{
return b+1;
}
该函数的作用是取得一个数,将这个数加上1,再将结果返回
调用时这样:
int result=addOne(2);//此时result的值为3
函数括号里的参数也可以为变量或能算出值的表达式
以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char,a[](数组),*a(指针),结构或类(c++)
但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如
void print()//括号中为空表示无传递参数
{
printf("a");
printf("b");
return;//函数执行到此处结束
printf("c");
}//该函数只执行到return语句处,即屏幕上输出的为"ab"
㈤ C语言中十六进制数
整型数据的十六进制数表示,
unsigned
int
hex_val
=
0x123;
//定义了一个整型变量并赋以初始值为一个十六进制常量。
if
(scanf("%x",
&hex_val)
!=
EOF)
{
printf("它的八、十进制分别=%o、%d\n",
hex_val,
hex_val);
}
也可以输入一个由0-9-A-F中组成的连续的字符序列,然后检查它是否为合法的十六进制数格式,最后,如果需要,可用函数strtoul将这个字符串指针作为base参数转换成数值。
㈥ 在C语言中如何将10进制转换成16进制
根据10进制转换为16进制的规则,编写C语言程序将10进制数转换为16进制数。
具体实现方法可参考如下程序:
#include<stdio.h>
voidmain()
{
inti,x;//x表示欲转换的10进制数
intdata[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(" ");
}
㈦ 在c语言中用最简单的方法把十进制转化为十六进制
代码如下:
#include"stdio.h"
intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[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-1;i>=0;i--)//倒序输出{
m=a[i];
printf("%c",hex[m]);
}
printf("
");
}
程序运行结果:
(7)c语言初始化16进制数扩展阅读
C语言中,十进制转换十六进制,可以先输入十进制整数,然后去拼十六进制,十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,只需把二进制除以16得到余数去上面定义的hex[16]数组进行取值接可以得到转换的数字。
㈧ 10进制转16进制c语言
用一个字符数组,初始化为“1,2,3,4,5,6,7,8,9,A,B,C,D,E,F”,也就是0到15
用十进制的数不断模上16,得到的余数进入到一个栈中。计算完之后从栈中取值,在数组当中去找出数字,输出就可以了
㈨ 用C语言编一个将十进制整数转化为16进制数的程序
最简单的,不涉及算法的作法就是用printf的输出格式 %x 输出16进制
%x 输出小写的a、b、c、d、e、f %X输出大写的A、B、C、D、E、F
#include"stdio.h"
int main()
{
int a;
printf("请输入一个10进制整数:" );
scanf( "%d", &a);
printf("该数转换为16进制数为: %X\n",a);
return 0;
}
详细的转化方法:
#include <stdio.h>
int x[100];
int jzzh(int y,int ml)
{
int i,a;
i=ml;
x[0]=0;
for(a=1;;a++)
{
if(i!=0)
{
x[a]=i%y;
x[0]++;
}
else
break;
i=i/y;
}
return x[0];
}
int main()
{
long int y,ml;
long int a;
printf("请输入需要转换至进制数:");
scanf("%d",&y);
printf("请输入数字:");
scanf("%d",&ml);
jzzh(y,ml);
for(a=x[0];a>=1;a--)
{
if(x[a]>=10)
{
printf("%c",x[a]+55);
}
else
{
printf("%d",x[a]);
}
}
printf("\n");
return 0;
}