Re: [問題] 面試考題

看板C_and_CPP作者 (宅?)時間15年前 (2010/08/10 08:15), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《jack58 (願主陪著你)》之銘言: : 之前做到一題面試考題 : 題目大概是將輸入一段數字 : ex: 567 : 將數字個別相加後直到剩下一位後輸出 : 567-> (5+6+7) 18 -> (1+8) 9 : 輸出9 今天我試著寫這一題.. 用我破破的 C語言寫看看 int main() { char a[10]; int temp=0; int j; scanf("%s",a); do{ j = strlen(a); for(int i=0;i<j;i++) { temp+= (int)a[i]; } sprintf(a,"%d",temp); }while(temp < 9); printf("%d",temp); } 我覺得好奇怪 我這樣寫哪裡錯了.. 輸入 567 卻輸出 162 我試著 把 printf("%d",(int)a[0]); 卻輸出 53.. 我想應該是 因為 a[0] => 53 a[1] => 54 a[2] =>55 所以才會照成 162 我看到推文大大是說 用除了.. 但我想用我這個方法.. 請問我是哪裡觀念錯了... 初學C語言 有錯的地方 還希望大大能夠多多指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.16.36

08/10 16:23, , 1F
你要有一個字元整數互轉的作法 : '1' → 1, 1 → '1'
08/10 16:23, 1F

08/10 16:25, , 2F
或是直接把整數弄成字串(有內建函式)
08/10 16:25, 2F

08/10 16:26, , 3F
= =沒看到sprintf 拍謝
08/10 16:26, 3F

08/10 16:36, , 4F
temp在相加的過程中,是以該字元的ASCII碼去相加
08/10 16:36, 4F
感謝樓上們的講解 我寫出來了.. ※ 編輯: joans 來自: 111.250.15.188 (08/10 18:10)
文章代碼(AID): #1COGgnAa (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
2
21
完整討論串 (本文為第 2 之 3 篇):
問題
1
4
問題
0
4
問題
2
21
文章代碼(AID): #1COGgnAa (C_and_CPP)