看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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