十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
十进制转任意进制一般都是用除基取余法,比如说102转8进制,
创新互联建站长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为广元企业提供专业的成都做网站、网站设计,广元网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
102除以8,商12,余6
12除以8,商1,余4
1除以8,商0,余1
商为0的时候即转换完成,将余数逆序连接起来就是结果,即10进制的102转8进制为146
将上述过程转为代码就是
#include stdio.h
int main()
{
int number = 102, i=0, div, rem;
int system = 8;//8进制
char s[50];
while (number) //除基取余法
{
div = number / system; //商
rem = number % system; //余
s[i++] = rem = 9 ? rem + '0' : rem - 10 + 'A';
number = div; //上次的商赋给number
}
for (--i; i = 0; i--)
printf("%c", s[i]);
printf("\n");
getchar();
return 0;
}
如果输入是十进制字符串,输出是八进制字符串,则用如下dec2oct函数可实现转换
#includestdio.h
int dec2oct(char *dec,char *oct){
int num=0,i=0,t;
char c;
do{
c=*dec;
if(!c) return 0; // 出错了,没找到10进制数
if(c='0' c='9') break; // 找到十进制数了
else dec++;
}while(1);
do{
num = num*10 + (c-'0');
c=*++dec;
if(!c) break; // 没有其他字符了
if(c='0' c='9') continue; // 还有十进制字符,继续
else break; // 没有其他十进制字符了,退出
}while(1);
do{
t = num % 8;
oct[i] = t+'0';
num = num / 8;
if(num==0) break;
i++;
}while(1);
for(t = (i+1)/2;t=i;t++){
num = oct[t];
oct[t] = oct[i-t];
oct[i-t]=num;
}
oct[i+1]='\0';
return 1;
}
int main()
{
char dec[20],oct[20];
while(scanf("%s",dec)==1)
if(dec2oct(dec,oct)) printf("%s\n",oct);
else break;
return 1;
}
该函数dec2oct先将输入字符串中的 10进制字符串转换成二进制数存下来,然后再将二进制数转换成八进制字符串。
C语言程序十进制的数转换成八进制的数的办法:
#include stdio.h
#include math.h
void main()
{
int n,a,sum = 0,i =0;
printf("十进制输出一个数n\n");
scanf("%d",n);
while(n)
{
a = n%8;
n = n/8;
sum += a*pow(10,i);
i++;
}
printf("八进制输出sum:%d",sum);
}