c语言自带进制转换函数 c语言如何实现进制转换

C语言编程 。利用函数实现进制转换 。随便写了个
#includestdio.h
int atod(char a, char b, char c, char d){
return (a % 0x30) * 1000(b % 0x30) * 100(c % 0x30) * 10(d % 0x30);
}
int atox(char a, char b, char c){
unsigned int n;
a = a | 0x20;
b = b | 0x20;
c = c | 0x20;
n = (a0x3a ? a % 0x57 : a % 0x30) * 0x100;
n = n(b0x3a ? b % 0x57 : b % 0x30) * 0x10;
n = n(c0x3a ? c % 0x57 : c % 0x30);
return n;
}
int main(){
int n;
char a, b, c, d, t;
for(n = 0; n10; n){
printf(" 1 - for conversion from 4-Decimal-Characters to a decimal integer\n\
2 - for conversion from 3-Hexadecimal-Characters to a decimal integer\n\
0 - Exit\n");
t = getch();
if(t == '1'){
printf("conversion from 4-Decimal-Characters\n");
scanf("%c %c %c %c", a, b, c, d);
printf("%d\n", atod(a, b, c, d));
} else if(t == '2') {
printf("conversion from 3-Hexadecimal-Characters\n");
scanf("%c %c %c", a, b, c);
printf("%d\n", atox(a, b, c));
} else {
break;
}
}
return 0;
}
c语言16进制转换为10进制数的函数是什么?1、可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能 。
2、具体实现方法可以参考如下程序:
#include stdio.h
void main()
{
int he;
int re=0;// 保存转换为10进制的结果
int k=16;// 16进制
int n=1;// 位权
scanf("%d", he);// 接收用户输入的16进制数 , 不含0x前缀
while(he != 0)
{
re= (he)*n;// 取出各位位码值,并乘以对应的位权值
he /= 10;// 去掉16进制数的最低位,次低位变为最低位
n *= k;// 位权乘以16
}
printf("%d",re); // 输出转换后的结果
}
怎样用C语言将二进制数转换成十进制将二进制转成十进制c语言自带进制转换函数,按权值展开求和即可 。
可以通过以下代码解决:
#include stdio.h
#include stdlib.h
int main()
{
char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len=16)
{
for(i=0;ilen;i)
{
m=1;
if(a[i]=='1')
{
for(j=1;j=len-i-1;j)
m*=2;
sum =m;
}
}
printf("%d",sum);
}
return 0;
}
扩展资料:
我们常用c语言自带进制转换函数的进制包括:二进制、八进制、十进制与十六进制c语言自带进制转换函数 , 它们之间区别在于数运算时是逢几进一位 。比如二进制是逢2进一位c语言自带进制转换函数 , 十进制也就是我们常用c语言自带进制转换函数的0-9是逢10进一位 。
十进制转二进制:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2 , 依此步骤继续向下运算直到商为0为止 。
八进制转二进制:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零 。
十六进制转二进制:十六进制数通过除2取余法 , 得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零 。
负数的进制转换稍微有些不同 。
先把负数写为其补码形式(在此不议) , 然后再根据二进制转换其它进制的方法进行 。
例:要求把-9转换为八进制形式 。则有:
-9的补码为1111 1111 1111 0111 。从后往前三位一划,不足三位的加0
111----7
110----6
111----7
111----7
111----7
001----1
然后我们将结果按从下往上的顺序书写就是:177767,那么177767就是十进制数-9的八进制形式 。
其实转化成任意进制都是一样的 。
参考资料:
二进制——百度百科
十进制——百度百科
求c语言将十进制数转换为16进制的函数c语言将十进制数转换为16进制的函数:
#includestdio.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;
if(b10)
{
u16[w]='0' b;
}
else
{
u16[w]='A' b-10;
}
a=a/16;
w;
}
}
printf("\n");
printf("%d(10)转换为16进制数字为:",u10);
for(i=w-1;i=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}
扩展资料:
十进制数转换为二进制数方法
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并 。
1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法 。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商 , 又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来 。
2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法 。具体做法是:用2乘十进制小数,可以得到积 , 将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行 , 直到积中的小数部分为零,或者达到所要求的精度为止 。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位 。
参考资料:
百度百科-十进制
C语言中怎样调用函数将十进制转换成二进制?1、打开visualC6.0-文件-新建-文件-CSourceFile 。
2、输入预处理命令和主函数:
#includestdio.h/*输入输出头文件*/
voidmain()/*空类型:主函数*/
3、定义变量和数组的数据类型并输入一个十进制:
intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/
printf("输入一个十进制:");/*输出文字提示*/
scanf("%d",x);/*输入一个十进制数字*/
k=-1;/*将-1赋给k*/
4、用除R取余倒计法将十进制的数转化成二进制的数:
do/*用循环将十进制的数转化成二进制的数*/
{
r=x%2;/*用除R取余倒计法计算二进制*/
b[k]=r;/*将值赋给数组*/
x/=2;/*将原数除2*/
}while(x=1);
5、输出结果:
for(i=k;i=0;i--)/*将上面倒计的数正回来*/
printf("%d",b[i]);/*输出结果*/
printf("\n");
6、完整的源代码:
#includestdio.h/*输入输出头文件*/
voidmain()/*空类型:主函数*/
{
intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/
printf("输入一个十进制:");/*输出文字提示*/
scanf("%d",x);/*输入一个十进制数字*/
k=-1;/*将-1赋给k*/
do/*用循环将十进制的数转化成二进制的数*/
{
r=x%2;/*用除R取余倒计法计算二进制*/
b[k]=r;/*将值赋给数组*/
x/=2;/*将原数除2*/
}while(x=1);
for(i=k;i=0;i--)/*将上面倒计的数正回来*/
printf("%d",b[i]);/*输出结果*/
printf("\n");
}
C语言中的进制怎么转换啊任意进制之间c语言自带进制转换函数的进制转换 。需要考虑高精度整形c语言自带进制转换函数的设计c语言自带进制转换函数,用数组模拟一个整形变量 。一位一位的进行进制转换,算法思想和十进制转换到二进制相同,除以目标进制,余数为低位 。这种进制转换实用性不强,一般出现在计算机程序竞赛当中 。
8,10,16进制的转换 。在C语言中有不少函数都能实现上面几种进制之间的进制转换 。
推荐其中的sprintf/sscanf函数 。
sprintf格式的规格如下所示 。[]中的部分是可选的 。
%[指定参数][标识符][宽度][.精度]指示符
若想输出'%'本身时, 请使用'%%'处理 。
1. 处理字符方向 。负号时表示从后向前处理 。
2. 填空字元 。0 的话表示空格填 0c语言自带进制转换函数;空格是内定值,表示空格就放着 。
3. 字符总宽度 。为最小宽度 。
4. 精确度 。指在小数点后的浮点数位数 。
转换字符
%% 印出百分比符号,不转换 。
%c 整数转成对应的 ASCII 字元 。
%d 整数转成十进位 。
%f 倍精确度数字转成浮点数 。
%o 整数转成八进位 。
%s 整数转成字符串 。
%x 整数转成小写十六进位 。
%X 整数转成大写十六进位 。
例程(16进制和10进制之间的转换)c语言自带进制转换函数:
#include stdio.h
#include limits.h
int main()
{
char s[100] = {0};
sprintf(s, "%x", INT_MAX);
printf("%s\n", s); // 7fffffff
char str[100] = "7fffffff";
int i = 0;
sscanf(str, "%x", i);
printf("%d\n", i); // 2147483647
return 0;
}
【c语言自带进制转换函数 c语言如何实现进制转换】关于c语言自带进制转换函数和c语言如何实现进制转换的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读