作者bleed1979 (十三)
看板C_and_CPP
標題Re: [問題]二進位數字排序
時間Sat Oct 15 22:22:55 2011
※ 引述《wupeiing (永和汪小龍)》之銘言:
: 其實是要使用者輸入二進位數字 例如 1100101
: output出來是要排過序的 例如1111000 這樣
: 然後不能使用陣列 指標 我是想說 用function算出1的個數(在main以k為變數)
二進位版
#include <stdio.h>
int main() {
int i = 0, j = 0;
char c;
while((c = getchar()) != '\n') {
if(c == '1') {
++i;
}
++j;
}
while(i--) {
putchar('1');
--j;
}
while(j--) {
putchar('0');
}
puts("");
return 0;
}
十進位版(最多32位)
#include <stdio.h>
#include <math.h>
int main() {
int n, m, b;
while(~scanf("%d", &n)) {
m = log2(n) + 1;
while(n) {
b = n & -n;
n &= ~b;
--m;
putchar('1');
}
while(m--) {
putchar('0');
}
puts("");
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.246.54
推 tropical72:log2 好像是看 compiler 有沒有提供吧 ? 10/15 22:26
→ bleed1979:sorry, 寫得太順了,最原po可以自行修改。 10/15 22:27
推 tropical72:還是想提醒一下事,方法二在吃 00001010 時候會出包. 10/15 22:29
→ bleed1979:方法二是十進位版,00001010輸入為12。 10/15 22:30
推 wupeiing:推一個!!真的很感謝大家的幫助!!! 10/15 22:31
推 tropical72:沒注意到, 謝謝說明。 10/15 22:31