Re: [問題] 二進位數字排序

看板C_and_CPP (C/C++)作者 (十三)時間14年前 (2011/10/15 22:23), 編輯推噓4(402)
留言6則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《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

10/15 22:26, , 1F
log2 好像是看 compiler 有沒有提供吧 ?
10/15 22:26, 1F

10/15 22:27, , 2F
sorry, 寫得太順了,最原po可以自行修改。
10/15 22:27, 2F

10/15 22:29, , 3F
還是想提醒一下事,方法二在吃 00001010 時候會出包.
10/15 22:29, 3F

10/15 22:30, , 4F
方法二是十進位版,00001010輸入為12。
10/15 22:30, 4F

10/15 22:31, , 5F
推一個!!真的很感謝大家的幫助!!!
10/15 22:31, 5F

10/15 22:31, , 6F
沒注意到, 謝謝說明。
10/15 22:31, 6F
文章代碼(AID): #1EcPT46L (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EcPT46L (C_and_CPP)