一:题目描述:
给出一个十进制数字 n(0<n<1000),把它转换为二进制数。
二:解决思路:
辗转相除法解决:将已知的数字每次除以2,保存余数,最后反向输出余数;
三:举例说明
123=1111011;
123 / 2 = 61 余 1
61 / 2 = 30 余 1
30 / 2 = 15 余 0
15 / 2 = 7 余 1
7 / 2 = 3 余 1
3 / 2 = 1 余 1
1 / 2 = 0 余 1
最终的答案是逆向输出余数:1111011
四:代码演示:
#include <stdio.h>
int main()
{
int n,len; int num[15];//num数组用来保存余数
while(scanf("%d",&n)!=EOF)
{ // 辗转相除法的实现
/*begin*/
len=0;确定num数组的长度
while(n){
num[len++]=n%2;//辗转相除法实现过程
n/=2;
}
for(int i = len - 1;i>=0;i --){
printf("%d",num[i]);//反向输出数组
}
printf("\n");
/*end*/
}
return 0;
}