[問題] 大數加法的問題

看板C_and_CPP作者 (Zap)時間14年前 (2010/06/18 10:27), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/5 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 程式沒有做計算 希望得到的正確結果: 第一個數跟第二個數能正確相加(100位) 程式跑出來的錯誤結果: 沒有做計算 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) devc++ 有問題的code: (請善用置底文標色功能) #include <stdio.h> #include <stdlib.h> void main(void) { char A1[100]="012345678901234567890123456789"; char A2[100]="012345678901234567890123456789"; int dada1[100]; int dada2[100]; char dada3[101]; int i; int j; int k; for(i=0;i<100;i++) { if(A1[i]!=0) dada1[i]=A1[i]-48; else dada1[i]=0; } for(j=0;j<100;j++) { if(A2[j]!=0) dada2[j]=A2[j]-48; else dada2[j]=0; } *[1;36m for(k=0;k<100;k++) *[m { *[1;36m dada3[k]=((dada1[k]+dada2[k]+(dada1[k+1]+dada2[k+1]))/10); *[m } //printf("A1:%d\n",A1[k]); //printf("dada2:%d\n",dada2[k]); //printf("dada3:%d\n",dada3[k]); printf("%d\n",dada3[10]); system("PAUSE"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.21.235.236 ※ 編輯: BlackZap 來自: 163.21.235.236 (06/18 10:39)

06/18 11:04, , 1F
k = 99,dada[k + 1]會爆炸吧
06/18 11:04, 1F

06/18 11:04, , 2F
喔喔..XD 我看錯了..請無視
06/18 11:04, 2F

06/18 11:07, , 3F
你是指dada3[10]是0嗎? 本來就會是0了
06/18 11:07, 3F

06/18 11:28, , 4F
算完沒有把每一位都印出來看
06/18 11:28, 4F

06/18 11:59, , 5F
dada3印出來幾乎都是0有幾個是1~3
06/18 11:59, 5F

06/18 12:09, , 6F
沒有算正確, 每兩位相加 % 10, 是新的位數, /10是進位
06/18 12:09, 6F

06/18 13:04, , 7F
這是遊戲世界的面試考題之一喔 大數相加
06/18 13:04, 7F

06/18 13:27, , 8F
你不覺得前兩個for做的事一樣嗎? 寫在一起就行了
06/18 13:27, 8F

06/18 13:28, , 9F
而且 計算data3 你用/10 這樣結果會變前面一位 %才是同位
06/18 13:28, 9F

06/18 13:29, , 10F
而且最後怎麼不把全部印出來看 才知道對錯阿...
06/18 13:29, 10F
文章代碼(AID): #1C6jb-pZ (C_and_CPP)
文章代碼(AID): #1C6jb-pZ (C_and_CPP)