[問題] 輸入一整數,並將其轉換為二進位的數字

看板C_and_CPP作者 (totoron)時間14年前 (2011/07/25 18:36), 編輯推噓5(5024)
留言29則, 9人參與, 最新討論串1/1
一個程式實作的問題: task:輸入一整數,並將它轉換為二進位的數字後印出. 以下是程式碼: #include <stdio.h> #include <stdlib.h> int main() { int(i=0,number,arr[100]; printf("please input a number"); scanf("%d,&number); while(number>=1){ arr[i++] = number%2; number/=2; } printf("\n 二進位表示為:",number); for(i--;i>=0;i--) print("%d,arr[i]); printf("\n"); system("PAUSE"); return 0; } 以下是我的問題 1.arr[i++] 本身是甚麼意思? 2.number/=2 更新運算式本身的用意? 3.for(i--;i>=0;i--),為何初始值可設定為i--? 4.最後將arr[i] print 出來與二進位的數字有甚麼關係? 煩請路過的善心人士不吝指教!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.123.200

07/25 18:39, , 1F
你有筆算過二進位嗎...
07/25 18:39, 1F

07/25 18:41, , 2F
你可以一步步去trace
07/25 18:41, 2F

07/25 18:41, , 3F
讓電腦跟你講答案.
07/25 18:41, 3F

07/25 18:55, , 4F
這可能連compiler都過不了 更不用說讓電腦講答案了...
07/25 18:55, 4F

07/25 19:18, , 5F
是噢, 沒注意看程式碼 XD
07/25 19:18, 5F

07/25 20:51, , 6F
第一行的 int(i=0, 改成 int i=0, 就通過了
07/25 20:51, 6F

07/25 20:54, , 7F
還有print...
07/25 20:54, 7F

07/25 20:55, , 8F
弄錯了!還有 scanf("%d, 改成 scanf("%d",
07/25 20:55, 8F

07/25 20:55, , 9F
for迴圈內的 print("%d,a 改成 print("%d",a
07/25 20:55, 9F

07/25 20:55, , 10F
就可以了!
07/25 20:55, 10F

07/25 20:56, , 11F
還有printf("..",number);...
07/25 20:56, 11F

07/25 21:07, , 12F
樓上細心,應改為printf("%d\n二進位表示為:",number);
07/25 21:07, 12F

07/25 21:08, , 13F
但是好像把number拿掉比較順一點!^^"
07/25 21:08, 13F

07/25 21:29, , 14F
這種進位轉換 是連小學生都會的短除法...
07/25 21:29, 14F

07/25 21:51, , 15F
10進位轉2進位你應該學過 這跟那個算法一樣
07/25 21:51, 15F

07/25 22:14, , 16F
我記得pringf不是有個%x 直接輸出就是16進制
07/25 22:14, 16F

07/25 22:14, , 17F
哈 看錯~ 原來是要二進制~
07/25 22:14, 17F

07/25 22:30, , 18F
我以前到現在都很遺憾沒有 %b 這種東西 XD
07/25 22:30, 18F

07/25 22:33, , 19F
XDD 不過其實寫那個很簡單XD
07/25 22:33, 19F

07/25 22:34, , 20F
可能是因為太簡單所以不想放進去XD
07/25 22:34, 20F

07/25 22:52, , 21F
推%b
07/25 22:52, 21F

07/25 22:54, , 22F
%b,%8b,%08b,%-8b,這都不難實作,說白了是貪懶 XD
07/25 22:54, 22F

07/25 22:56, , 23F
不過內建的話,就少了一個作業題目了...XD
07/25 22:56, 23F

07/25 22:58, , 24F
這題偷懶的話用 itoa 就過了.有些要走偏門還是可以.
07/25 22:58, 24F

07/25 22:59, , 25F
(當然 itoa 為非標準倒是真的.)
07/25 22:59, 25F

07/26 09:49, , 26F
我比較覺得失望的是沒有辦法寫二進位的 literal...
07/26 09:49, 26F

07/26 09:53, , 27F
?
07/26 09:53, 27F

07/26 09:53, , 28F
應該還好吧...
07/26 09:53, 28F

07/26 10:48, , 29F
寫二進位的 literal 你自己過一陣子來看就眼花了吧 XD
07/26 10:48, 29F
文章代碼(AID): #1EBKSSMk (C_and_CPP)