[問題] 用陣列顯示2的十次方

看板C_and_CPP (C/C++)作者 (名字:大便王)時間15年前 (2010/07/20 16:45), 編輯推噓3(307)
留言10則, 6人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 今天用VC++2005練習想寫出如下的陣列 0000000002 0000000004 0000000008 0000000016 . . . 0000001024 =================================我是分隔線================================ 原本一開始一直卡在進位問題 但是後來卻發現有個關鍵地方有沒有加+差很多 if(ar[j]>9) { ar[j+1]+=ar[j]/10; //為什麼在這裡加個+程式碼就對了??!! ar[j]=ar[j]%10; } =================================沒加+====================================== 0000000002 0000000004 0000000008 0000000016 0000000012 0000000024 0000000048 0000000016 0000000012 0000000024 =================================沒加+====================================== 想破腦袋也不知道為什麼這邊會有這種差異 我把ar[0]的值除以10之後指派給ar[1]這樣子為什麼不行呢?? 請板上的大大指導一下 多謝!!!! 程式碼如下: #include <stdlib.h> #include <stdio.h> int main() { int ar[10]; for(int i=0; i<10; i++) { ar[i]=0; } ar[0]=1; for(int i=0; i<10; i++) { for(int j=9; j>=0; j--) { ar[j]*=2; if(ar[j]>9) { ar[j+1]=ar[j]/10; //here!!! ar[j]=ar[j]%10; } } for(int j=9; j>=0; j--) { printf("%d",ar[j]); } printf("\n"); } } 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.227.99 ※ 編輯: nelley 來自: 220.136.227.99 (07/20 16:48)

07/20 16:49, , 1F
知道 = 與 += 的差別嗎?
07/20 16:49, 1F
※ 編輯: nelley 來自: 220.136.227.99 (07/20 16:49)

07/20 16:52, , 2F
我只是不明白為什麼用=的話到16還可以,結果到32就錯誤了
07/20 16:52, 2F

07/20 16:57, , 3F
十進位是要累加,不是直接assign新的值。
07/20 16:57, 3F

07/20 17:05, , 4F
你的問題就是搞懂1F j大提示你的問題就該清楚了:)
07/20 17:05, 4F

07/20 17:06, , 5F
你要搞清楚程式計算裡何時該用直接賦值, 何時用累加:)
07/20 17:06, 5F

07/20 18:38, , 6F
為什麼要搞得這麼複雜.....囧.....
07/20 18:38, 6F

07/20 19:09, , 7F
搞清楚了!!多謝各位說明.........
07/20 19:09, 7F

07/20 19:14, , 8F
F大可以提示一下更精簡的方法嗎.............@@
07/20 19:14, 8F

07/20 19:41, , 9F
一行int n; for(n=0;n<31;++n)printf("%010d\n",1<<n);
07/20 19:41, 9F

07/20 19:46, , 10F
咦? 樓上那行不是用陣列做的XD 離題
07/20 19:46, 10F
文章代碼(AID): #1CHM8ufB (C_and_CPP)
文章代碼(AID): #1CHM8ufB (C_and_CPP)