[問題] binary to decimal
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
程式能跑...但是結果一直都一樣。
希望得到的正確結果:
就如同標題,user輸入的binary number 能變成 decimal number。
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
dec-c++
有問題的code: (請善用置底文標色功能)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
(有些用double是因為我下面計算有用到指數的函數)
double b_number; /* the binary number which user typed in */
double digits; /* to know how many dights the binary number is */
double d_number; /* the transformation result */
double divisor; (幫助我寫的轉換過程程式碼運算的變數)
int loop_v; /* loop variable */
d_number = 0;/* initialize d_number */
divisor = 1; /* initialize divisor */
loop_v = 1; /* initialize loop variable */
/* processing phase */
printf( "Please Enter a binary number:\n" );
scanf( "%f", &b_number );
printf( "How many digits does the number have?\n" );
scanf( "%f", &digits );
while ( loop_v < digits ) { (這一個迴圈是用來計算要先用多少來除)
divisor = divisor * 10;
printf( "%f", divisor);
loop_v = loop_v + 1;
}
(比如說我如果輸入111,3 digits,那loop完divisor應該是100)
digits = digits - 1;
(扣掉1位讓等等轉換不會發生錯誤,因為二進位第一個數是2的零次方)
(計算二進位到十進位轉換過程的主要loop)
while ( digits >= 0) {
d_number = d_number + (b_number / divisor) * pow(2,digits);
b_number = b_number - divisor;
divisor = divisor / 10;
digits = digits - 1;
}
printf( "The equivalence in decimal number would be:\n%.0f\n", d_number );
system ("pause");
return 0;
}
補充說明:
括號"( )"內是我程式碼貼到板上後,
除了原本"/* */"外,多打的補充,
想說怕我寫的程式碼會讓人很難知道想表達什麼...Orz
執行過程是沒有錯誤,
但不曉得為什麼,跑出來結果一直是0,
感覺好像while loop都沒跑到...
d_number直接印出剛一開始時initialize的值,
希望大家能給我一點意見,
但...太高深的寫法可能會看不懂...ㄒ.ㄒ
因為才剛開始學C而已,
像程式碼中指數那個函式怎麼用也是google才曉得的...
感激不盡!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.10.36
推
09/22 21:53, , 1F
09/22 21:53, 1F
推
09/22 21:54, , 2F
09/22 21:54, 2F
→
09/22 21:55, , 3F
09/22 21:55, 3F
→
09/22 21:57, , 4F
09/22 21:57, 4F
→
09/22 22:13, , 5F
09/22 22:13, 5F
→
09/22 22:14, , 6F
09/22 22:14, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章