
正文
c语言任意进制转换函数 任意进制数的转换c语言
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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%10)*n; // 取出各位位码值,并乘以对应的位权值
he /= 10; // 去掉16进制数的最低位,次低位变为最低位
n *= k; // 位权乘以16
}
printf("%d",re); // 输出转换后的结果
}
相关问答
Q1: 用c语言将任意进制数转成十进制
任意进制间的转换
#include stdio.h
#include string.h
#include math.h
/*该函数可以实现小于整型数据的任意进制之间转换*/
/*以下函数将a进制数s转换成b进制并输出*/
void f(int a,int b,char s[])
{ char r[17];
int i,n,t,k;
for(n=strlen(s)-1,i=t=0;*(s+i)!='\0';i++,n--) /*这里先转换成十进制数*/
{ if(*(s+i)='9')
t+=(*(s+i)-'0')*int(pow(a,n));
else
t+=(*(s+i)-'A'+10)*int(pow(a,n));
}
for(i=0;t!=0;i++) /*再转换成b进制*/
{ k=t%b;
if(k9)r[i]='A'+k-10;
else r[i]='0'+k;
t/=b;
}
r[i]='\0';
s=strrev(r);
printf("%s",s);
}
Q2: C语言中的各进制的转换方法
C++的,如果要TC的将中文改为English就行了
#includestdio.h
#includemath.h
void ten_two()
{
int num, i;
int arr[20];
printf("请输入一个十进制数:");
scanf("%d",num);
for( i = 0 ; 1 ; i++)
{ //转换为二进制并存入数组
arr[i] = num % 2;
num = num / 2;
if(num == 0)
{
break;
}
}
printf("转换为二进制:"); //打印
for(; i = 0 ; i-- ){
printf("%d",arr[i]);
}
printf("\n");
}
void ten_eight()
{
int num, i;
int arr[20];
printf("请输入一个十进制数:");
scanf("%d",num);
for( i = 0 ; 1 ; i++){//转换为八进制并存入数组
arr[i] = num % 8;
num = num / 8;
if(num == 0){
break;
}
}
printf("转换为八进制:"); //打印
for(; i = 0 ; i-- ){
printf("%d",arr[i]);
}
printf("\n");
}
void ten_sixteen()
{
int num, i;
int arr[20];
printf("请输入一个十进制数:");
scanf("%d",num);
for( i = 0 ; 1 ; i++){ //转换为二进制并存入数组
arr[i] = num % 16;
num = num / 16;
if(num == 0){
break;
}
}
printf("转换为十六进制:"); //打印
for(; i = 0 ; i-- ){
switch(arr[i]){
case 10 : printf("A");break;
case 11 :printf("B");break;
case 12 :printf("C");break;
case 13 :printf("D");break;
case 14 :printf("E");break;
case 15 :printf("F");break;
default :printf("%d",arr[i]);
}
}
printf("\n");
}
void two_ten()
{
long num;
int b,TheTen=0,Total=0;
printf("请输入一个二进制数(只包含0或1):");
scanf("%ld",num);
while(num)
{
b=num-(int)(num/10)*10;
TheTen+=b*pow(2,Total);;
Total++;
num=(int)(num/10);
}
printf("转换为十进制:"); //打印
printf("%d",TheTen);
printf("\n");
}
void eight_ten()
{
int num, i;
int arr[20];
printf("请输入一个八进制数(只由0~7之前的数组成):");
scanf("%o",num);
printf("转换为十进制:"); //打印
printf("%d",num);
printf("\n");
}
void sixteen_ten()
{
int num, i;
int arr[20];
printf("请输入一个十六进制数(只由0~9和A~F之前的数组成):");
scanf("%X",num);
printf("转换为十进制:"); //打印
printf("%d",num);
printf("\n");
}
void main()
{
int select;
do{
printf("0 - 退出,1 - 十进制转二进制,2 - 十进制转八进制,3 - 十进制转十六进制,4 - 二进制转十进制,5 - 八进制转十进制,6 - 十六进制转十进制\n");
scanf("%d",select);
switch(select){
case 1 : ten_two(); break; //十进制转二进制
case 2 : ten_eight(); break; //十进制转八进制
case 3 : ten_sixteen(); break; //十进制转十六进制
case 4 : two_ten(); break; //二进制转十进制
case 5 : eight_ten(); break; //八进制转十进制
case 6 : sixteen_ten(); break; //六十进制转十进制
default : printf("您的输入有误,请重新输入!"); break;
}
if(select == 0)
{break;}
}while(1);
}
Q3: 求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%16;
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");
}
扩展资料:
十进制数转换为二进制数方法
十进制数转换为二进制数时c语言任意进制转换函数,由于整数和小数的转换方法不同c语言任意进制转换函数,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数c语言任意进制转换函数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
参考资料:
百度百科-十进制
Q4: C语言:编写一个函数,其功能是将一个十进制正整数转换成任意进制整数,并输出转换结果?
#include "stdio.h" #include "stdlib.h" main() { int n,x=0,a[100]; printf("请输入转换c语言任意进制转换函数的数和进制:\n"); scanf("%d",n); while(n){ a[x++]=n%2; n/=2; } --x; while(x=0) printf("%d",a[x--]); printf("\n"); system("pause"); } 再送c语言任意进制转换函数你一个进制转换c语言任意进制转换函数的 问题:把十进制数转换为其它进制 #include "stdio.h" #include "stdlib.h" main() { int n,k; char *str="0123456789ABCDEF"; printf("请输入转换的数和进制:\n"); scanf("%d%d",n,k); int px=0,a[128]; while(n){ a[px++]=n%k; n/=k; } --px; while(px=0) printf("%c",str[a[px--]]); printf("\n"); system("pause"); }
Q5: 用c语言编写函数把任意十进制数转换成二进制数
#includestdio.h
main()
{
int i,n,k,x[10];
scanf("%d",n);
for(i=0;n!=0;i++)//n不等于0时.....
{
x[i]=n%2;
n=n/2;
}
for(k=i-1;k!=(-1);k--)//k初始值为i-1,k的条件为不等于-1
printf("%d",x[k]);//输出x[k],而不是x[i]
}
c语言任意进制转换函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于任意进制数的转换c语言、c语言任意进制转换函数的信息别忘了在本站进行查找喔。








