队花的烦恼一
描述
ACM隊(duì)的隊(duì)花C小+經(jīng)常抱怨:“C語言中的格式輸出中有十六、十、八進(jìn)制輸出,然而卻沒有二進(jìn)制輸出,哎,真遺憾!誰能幫我寫一個(gè)程序?qū)崿F(xiàn)輸入一個(gè)十進(jìn)制數(shù)n,輸出它的二進(jìn)制數(shù)呀?”
難道你不想幫幫她嗎?^_^
輸入
輸入有多個(gè)數(shù)據(jù),數(shù)據(jù)以EOF結(jié)束;每個(gè)數(shù)據(jù)ni(0<=ni<=1000010000)用空格隔開;
(溫馨提示:EOF即是一個(gè)文件的結(jié)束標(biāo)志;while(scanf(“%d”,&n)!=EOF){})
輸出
輸出有多行,每行對(duì)應(yīng)一個(gè)十進(jìn)制數(shù)ni的二進(jìn)制數(shù);
注意:輸出的二進(jìn)制去掉任何一個(gè)多余的0;
樣例輸入
0 1 2 10
樣例輸出
0
1
10
1010
代碼如下
#include< stdio.h>
main()
{
int n,i,j;
int a[1000];//首先定義一個(gè)數(shù)組;
while(scanf(“%d”,&n)!=EOF)
{
if(n==0)//當(dāng)?shù)谝粋€(gè)數(shù)是0的時(shí)候,對(duì)應(yīng)的二進(jìn)制也是0;
printf(“%d”,n);
i=0;//這里的i負(fù)責(zé)數(shù)組的下標(biāo);
while(n!=0)//每次取余賦值與數(shù)組,然后在除以二得到下一個(gè)數(shù),當(dāng)該數(shù)為0時(shí),結(jié)束循環(huán);
{
a[i]=n%2;//數(shù)組負(fù)責(zé)存儲(chǔ)取余之后的數(shù);
n=n/2;//除以二得到下一個(gè)數(shù);
i++;//數(shù)組下標(biāo)加一;
}
for(j=i-1; j>=0; j–)//最后i為數(shù)組的總個(gè)數(shù),for循環(huán)輸出該數(shù)組即可;
printf(“%d”,a[j]);
printf(“\n”);
}
}
總結(jié)
- 上一篇: The Famous Clock(著名的
- 下一篇: 不可以!