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); // 输出转换后的结果
}
展开全部
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); // 输出转换后的结果
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0xa513
16^3*10 + 16^2*5 + 16^1*1 + 16^0*3
所有进制转化为10进制都是一样的,每一位乘以对应位的权值再相加。
权值就是进制的N次方,最低位为0次,依次递增
16^3*10 + 16^2*5 + 16^1*1 + 16^0*3
所有进制转化为10进制都是一样的,每一位乘以对应位的权值再相加。
权值就是进制的N次方,最低位为0次,依次递增
追问
看不懂啊、用函数怎么实现啊、
追答
846361911的程序就可以实现这个功能,在C语言的输入输出中可以通过格式控制来自动实现转换,我说的是其中转化的原理
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream.h>
#include<math.h>
int func( int x)
{
int sum = 0;
for(int i = 0 ; x!= 0; i++)
{
sum = (x %16) * pow(16,i)+ sum;
x = x/ 16;
}
return sum;
}
void main()
{
int x = 0x10;
int y = func(x);
cout<<y<<endl; // 用十进制输出y;
cout<<hex<<x<<" "<<endl;//用十六进制输出x
}
#include<math.h>
int func( int x)
{
int sum = 0;
for(int i = 0 ; x!= 0; i++)
{
sum = (x %16) * pow(16,i)+ sum;
x = x/ 16;
}
return sum;
}
void main()
{
int x = 0x10;
int y = func(x);
cout<<y<<endl; // 用十进制输出y;
cout<<hex<<x<<" "<<endl;//用十六进制输出x
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询