C语言十进制怎么转换八进制,求详细描述,不要编译器运行的结果?

如题所述

十进制转任意进制一般都是用除基取余法,比如说102转8进制,
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-01
用文字简单的表述就是,将原数不断对8取余,直至为0,然后逆向依次输出余数即可。
如十进制数123,对8取余依次是3,7,1。逆向输出即对应的数173追问

请问123对8取余,371怎么来的,是除8?还是减8?

追答

除8,取余数

本回答被网友采纳
第2个回答  2021-03-01
#include<stdio.h>

int main(){
int a;
scanf("%d",&a); // 16
//以八进制数输出
printf("%o",a); //20
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网