[問題]如何寫24位元 2進制轉10進制 (以解決 …

看板C_and_CPP作者 (企鵝)時間14年前 (2009/11/05 12:44), 編輯推噓2(2016)
留言18則, 3人參與, 最新討論串1/1
遇到的問題: 我們學過怎樣將二進制數字轉變成為十進制數字,試寫一個程式可以重複的輸入一個二進 制整數然後輸出他的十進制的相等數值。 輸入的時候只能夠接受 0 和 1 的輸入,其它的輸入必須被忽略掉,另外程式必須要最多 可以接受24位元的二進制數字。 note: 在傳統的做法上會使用陣列來幫忙,但是目前我們還沒有學到陣列,請用條件敘述 以及重複敘述來完成這個工作。 hint: 利用_getch()指令從鍵盤上讀取一個字元,然後判斷它是否為0或1,然後進行十進 制的轉換工作。 可是... 如果只是輸入數字,轉成2進制,用很基本的懲法是可以的,但是我不清楚 如何可以使用到24位元,而且只能輸入0和1。 希望得到的正確結果 :希望大大們能指點一些關鍵字。 程式跑出來的錯誤結果:我有使用while 跟 switch 去跑 但是不知道如何輸入2~9讓他不顯示,總是會跑出亂碼 開發平台: visual studio 2008 c++ 我不是來求作業完整的答案的,只是某些地方卡住,不知道怎麼說比較好, 目前我學過的就是scanf printf 迴圈 條件敘述式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.42.21 ※ 編輯: jhra790723 來自: 140.135.42.21 (11/05 12:46)

11/05 12:53, , 1F
學過shift (<< 與 >>)了沒?? 沒學過也學過乘法吧??
11/05 12:53, 1F

11/05 12:55, , 2F
想想看如果輸入6, 我會先給你 1, 再給你 1 (變成11), 再
11/05 12:55, 2F

11/05 12:55, , 3F
給你的0 (變成 110也就是6), 輸入的過程是否可以shift或
11/05 12:55, 3F

11/05 12:56, , 4F
者乘個二, 就能累加出答案了:)
11/05 12:56, 4F

11/05 12:57, , 5F
不用被24位元迷惑, 一般Win32環境int有32位元, 你去乘去
11/05 12:57, 5F

11/05 12:58, , 6F
加不用擔心會爆的.
11/05 12:58, 6F

11/05 12:59, , 7F
讀入的字元不是'0'或是'1', 就不要處理繼續吃下一個字就
11/05 12:59, 7F

11/05 12:59, , 8F
好了, 看請楚我是用'0'與'1'喔, 字元與數字別搞混了XD
11/05 12:59, 8F

11/05 14:07, , 9F
超懷疑你是不是中原電子的= =一模一樣欸
11/05 14:07, 9F

11/05 14:09, , 10F
while switch case'1' case'0'
11/05 14:09, 10F

11/05 15:23, , 11F
我卡在如何不處理... 是在case那設定嗎?
11/05 15:23, 11F

11/05 15:26, , 12F
你是跑迴圈吃字元對吧?? 吃到'0'和'1'會做什麼事對吧??
11/05 15:26, 12F

11/05 15:27, , 13F
那不是'0'也不是'1'就不要做那個"處理"啊?? 寫if()也可
11/05 15:27, 13F

11/05 15:28, , 14F
以不寫else; 寫switch也不用handle所有case啊, 或者用
11/05 15:28, 14F

11/05 15:29, , 15F
default: break; 明確的寫出來"不處理"也可以:)
11/05 15:29, 15F

11/05 15:56, , 16F
剛剛想到... 這是用字串寫嗎?
11/05 15:56, 16F

11/05 16:01, , 17F
不對... 我不會字串呀= =
11/05 16:01, 17F

11/05 16:13, , 18F
不處理是說continue嗎?
11/05 16:13, 18F
※ 編輯: jhra790723 來自: 140.135.42.21 (11/06 00:39)
文章代碼(AID): #1AybX70T (C_and_CPP)