将十进制数转化成八进制数
2016-12-07 14:18
246 查看
遇到一道将十进制转化成八进制数的C语言题,并且不能用%o,这就需要明白如何将十进制转化成八进制。
一般的算法是将这个数对8取余,再保存下来,然后让这数除以8(也就是左移,从个位移动到十位)之后再取余,每次取余得到的结果都保留下来放到一个数组中。但是由于一开始保留下的值是作为低位,而放在数组中是从a[0]开始,所以要逆序输出,最后就可以得到八进制数了!
而对于十进制转化成R进制的程序,只需要将8换成R即可。
本题的源程序如下:#include <stdio.h>
int main()
{
int a[100];
int temp;
int i;
int n;
int j;
printf ("请输入一个十进制数:\n");
scanf ("%d",&n);
for (temp = 0; temp <100; temp++)
{
if (n != 0)
{
i = n % 8;
a[temp] = i;
n = n / 8;
}
else
{
break;
}
}
printf ("转换的八进制数为:\n");
for (j = temp; j >= 0; j--)
{
printf ("%d",a[j]);
}
printf ("\n");
return 0;
}
一般的算法是将这个数对8取余,再保存下来,然后让这数除以8(也就是左移,从个位移动到十位)之后再取余,每次取余得到的结果都保留下来放到一个数组中。但是由于一开始保留下的值是作为低位,而放在数组中是从a[0]开始,所以要逆序输出,最后就可以得到八进制数了!
而对于十进制转化成R进制的程序,只需要将8换成R即可。
本题的源程序如下:#include <stdio.h>
int main()
{
int a[100];
int temp;
int i;
int n;
int j;
printf ("请输入一个十进制数:\n");
scanf ("%d",&n);
for (temp = 0; temp <100; temp++)
{
if (n != 0)
{
i = n % 8;
a[temp] = i;
n = n / 8;
}
else
{
break;
}
}
printf ("转换的八进制数为:\n");
for (j = temp; j >= 0; j--)
{
printf ("%d",a[j]);
}
printf ("\n");
return 0;
}
相关文章推荐
- anchorPoint与position有什么关系
- fsck命令使用详解及特别注意事项
- 一个play方法实现全屏炫酷倒计时的小demo
- 详解Asp.net Core 使用Redis存储Session
- Block 的使用
- Ubuntu 音效均衡器,网易云音乐均衡器插件
- Linux内核中的GPIO系统之(3):pin controller driver代码分析
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- LinuxShell脚本攻略--第二章 命令之乐
- IntelliJ IDEA + Maven环境编写第一个hadoop程序
- 在jsp中获取服务器端的时间
- ELK之nginx日志分析图表创建
- w3c标准
- 3、MyEclipse中hadoop环境配置
- yolov1在ubuntu环境下的安装配置
- 修改PHP 上传文件大小限制
- oracle 判断今天是星期几
- 二维码 条形码