English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

如題
各位大大幫我檢查哪裡錯八
我找好久找不到
我是新手= =
#include
#include
#include

int binary(int z,int i)
{
int s,sum;
s=pow(10,i);
sum=sum+s*z;
return sum;
}


int main(int argc, char *argv[])
{
int n,x,y=2,z,i=0,sum,t;
printf("input a number===>");
scanf("%d",&n);
x=n;
while(x/y!=1)
{
z=x%y;
t=binary(z,i);
i++;
x=x/y;
}
z=x%y;
t=binary(z,i);
i++;
z=x/y;
t=binary(z,i);
printf("%d",t);
system("PAUSE");
return 0;
}

2007-11-23 16:35:23 · 4 個解答 · 發問者 ? 1 in 電腦與網際網路 程式設計

我還是不會改
可以指名哪裡錯ㄇ== ?

2007-11-23 18:05:18 · update #1

因為我才剛學1個多月..
當然只會用學了一個月的東西阿= =

2007-11-23 18:32:04 · update #2

就是愛玩數獨

你的程式我run一次
我發現和我的執行結果一樣欸
我的編譯軟體是dev-c++

輸入4 跑出99
輸入5跑出100
這只是其中2個情況
還有好多數字都不對= =
這是怎麼回事呢
我同學好像說過要改成FLOAT
可是程式就顯示z=x%y;錯誤
大ˇ大就就我八

2007-11-24 07:59:25 · update #3

4 個解答

這位同學你好
在不變化你原始程式的構想之下
我做了些微的修正
請你再 try try 看
有問題再提出來一同討論

#include
#include
#include

int binary(int z, int i)
{
int s=0, sum=0;
s = pow(10,i);
sum = sum+s*z;
return sum;
}

int main(int argc, char *argv[])
{
int n=0, x=0 ,y=2, z=0, i=0, t=0, sum_all=0;
// 新增 sum_all 變數來做回傳值的相加
printf("input a number===> ");
scanf("%d",&n);
x=n;
while( x/y != 1 && x > 1 )
// 加上 && x > 1 的判斷來避掉無窮回圈
{
z = x%y;
t = binary(z,i);
sum_all=sum_all+t; // 回傳值相加
i++;
x = x/y;
}

z = x%y;
t = binary(z,i);
sum_all=sum_all+t; // 回傳值相加
i++;
z = x/y;
t = binary(z,i);
sum_all=sum_all+t; // 回傳值相加
printf("Dec (%d) ===> Bin (%d)\n", n, sum_all);
// 加上一些列印訊息, 可以知道 10 進制 與 2 進制 的對應
system("PAUSE");
return 0;
}

2007-11-24 14:00:34 補充:
同學你好
我所使用的編譯軟體是 VC++ 6.0
在組譯與執行程式的過程中沒有發生錯誤
以下是他的執行結果
我想不出為什麼你組譯完成後執行會有問題
我會找 dev-c++ 來試看看的...

input a number===> 4
Dec (4) ===> Bin (100)
請按任意鍵繼續 . . .

2007-11-24 14:01:00 補充:
input a number===> 5
Dec (5) ===> Bin (101)
請按任意鍵繼續 . . .

2007-11-24 17:58:52 補充:
嗨同學

我查完書和實際 run DEV-C++ 之後
發現你所使用函數 pow 所輸出的變數
必須宣告為 double
我也執行過了
結果都 OK...
以下為修改片段...

double s=0, sum=0;

希望對你有幫助

2007-11-23 20:04:57 · answer #1 · answered by 就是愛玩數獨 3 · 0 0

的確...使用itoa這個函數就可以達到效果了

2007-11-24 03:47:14 · answer #2 · answered by (>﹏<) 1 · 0 0

#include
#include
#include
int main(int argc, char* argv[]){
//=====START=====//
int n;
char buffer[32767];
printf("Input a Decimal: "),scanf("%d",&n);
printf("Binary= %s\n",itoa(n,buffer,2));
//=====END=====//
system("PAUSE");
return 0;
}

2007-11-23 18:14:52 · answer #3 · answered by Big_John-tw 7 · 0 0

副程式binary()的sum沒給初值,在不改其他程式下
最簡單的方法就是拿掉binary跟main的sum
把sum拿到最前面,宣告成全域變數就可以了
...
int sum=0; //宣告成全域變數
...
int binary(){...}
main(){...}

你的問題在:
副程式binary()跟main()所指的變數sum並非同一個

2007-11-23 17:56:09 · answer #4 · answered by Peter 3 · 0 0

fedest.com, questions and answers