永发信息网

编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。

答案:1  悬赏:30  手机版
解决时间 2021-01-16 14:17
编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。
最佳答案
我的思路:用一个字符串保存转换的结果(str[80)假设十进制数为number,转换的进制为digits,则将numbers%digits(根据余数的情况做相应处理)结果保存在字符串str中,将numbers变为numbers/digits;直到numbers为零。得到的结果为逆序,需要将其倒转,倒转后即为所求。
//-----------c语言实现10进制转2~16进制
#include
#include
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16进制则直接退出
return ;
while(number)
{
switch(number%digits)
{//根据余数的情况做相应处理
case 15:
str[i++]='F';
break;
case 14:
str[i++]='E';
break;
case 13:
str[i++]='D';
break;
case 12:
str[i++]='C';
break;
case 11:
str[i++]='B';
break;
case 10:
str[i++]='A';
break;
default:
str[i++]=number%digits+'0';
break;
}
number=number/digits;
}
str[i]='\0';
strrev(str);//strrev函数定义在string.h中的,是对字符串做逆序处理的函数
//这里需要逆序的原因是因为得到的结果为该进制的逆序
}
int main()
{
int number,i;
char str[80];
printf("输入一个十进制数:");
scanf("%d",&number);
printf("\n---------2到16进制对应关系----------\n");
for(i=2;i<=16;i++)
{
TentoAny(number,str,i);
printf("%d转换为%d进制为:%s\n",number,i,str);
}
return 0;
}
上面的的switch语句也可替换为如下代码:
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
OLAY轻透倍护隔离防晒液 这款适合17岁少女用
在linux下怎样退出tee命令
只是牦牛肉的味道如何啊
算了人的时辰说花根好是什么意思?
横线里填几?9________846≈10万64________82
御茶园地址在什么地方,我要处理点事!
百财如意的隶书写法
怎样连接d-link无线路由器设置
弱问一句,有女吧友相当个备胎吗
女方尽然问:我和多少个女人上过床
在“观察凸透镜成像”的实验中,应调节蜡烛、
韩国辣炒年糕的手指年糕怎么准备? 韩式辣炒年
古代的在中国哪个地方! 古常国在中国哪里
魔域空的幻兽心得书在那买到
I3 6098P 可配技嘉什么主板
推荐资讯
刘令娴的诗作选摘
我是镇江公积金,现在在扬中买房,扬中属于镇
年底了,在公司干的憋屈不开心。还有必要干下
将铅笔插进装有水的塑料袋里,为什么水不会露
就洗个眉头一般多少钱
设实数x,y满足x^2+2xy-1=0,则x^2+y^2的最小值
六个图猜出六个成语
电脑怎么装麦克风
想知道大陆都有哪些有庙宇供俸王母娘娘,谢谢
最近适合表白的日子
干炸串有前途吗,我觉得比较稳定但没什么好发
tcl背投电视重影修理需要多少钱
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?