队花的烦恼一
谁能帮我写一个程序实现输入一个十进制数n,输出它的二进制数呀?”
难道你不想帮帮她吗?^_^
-
输入
- 输入有多个数据,数据以EOF结束;每个数据ni(0<=ni<=1000010000)用空格隔开;
(温馨提示:EOF即是一个文件的结束标志;while(scanf("%d",&n)!=EOF){})
输出 - 输出有多行,每行对应一个十进制数ni的二进制数;
注意:输出的二进制去掉任何一个多余的0;
样例输入 -
0 1 2 10
样例输出 -
0 1 10 1010
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n,m,a[30];
while(scanf("%d",&n)!=EOF){
int b=0;
if(n==0)
cout<<b<<endl;
else{
while(n!=0){
m=n%2;
a[b++]=m;
n=n/2;
}
for(;b>=1;b--)
cout<<a[b-1];
cout<<endl;
}
}
return 0;
}
思路解析:十进制转换为二进制。只要n不为“0”,就一直除以“2”,同时定义数组a来存储余数,因为不能输出多余的“0”,输出时,余数时倒序输出的,所以,提前做准备,当n对2求余时,定义b来统计个数,然后由b循环倒序输出即可。。。