C语言问题,数字转化

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:23:33
怎样把十进制数转化成八进制和十六进制
各位高手,请指点指点~~~详细点。。。

#include<iostream>
using namespace std;
main ()
{int a,c=0,r;int b[1000];char q;
cout<<"请输入要转成的进制:";cin>>r;
cout<<"请输入数字:";cin>>a;
while (a!=0)
{b[c]=a%r;a/=r;c++;}
for (--c;c>=0;c--)
{if (b[c]>9)
{q=b[c]-10+'A';cout<<q;}
else cout<<b[c];
}
}
//十进制转n进制,我这是数学方法,不过1楼的方法很实用

scanf("%d",&a);
printf("%o %x",a,a);
最偷懒的方法了,哈哈

1楼的太偷懒了,汗,实际用没啥事,但是要是楼主要交作业就麻烦了 。

十进制数除以8,记下第一个余数和第一个商数,商除以8,记下第二个余数和第二个商数,第二个商除以8,记下第三个余数和第三个商数。。。。直到商数小于8.
把第一个余数写在最后,第二个余数排它前面。。。。
这就是这个十进制数的八进制表示。

16进制同理,除以16.

先用 sprintf()把10进制数转换成字符串
再用 atoi() 或 atof() 转换成相应的8进制或16进制数