[問題] 整數陣列轉字串 / 字串轉整數

看板C_and_CPP (C/C++)作者 (梅總)時間9年前 (2016/10/08 17:26), 9年前編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) codeblocks 問題: 我現在在看清大陳煥宗老師的計算機程式設計開放式課程自學C 寫作業時因為不是本科系所以沒人問 題目如下列網址:(清大OJ) http://acm.cs.nthu.edu.tw/problem/10097/ 題目敘述: 這題要求把輸入的十進位數轉成三進位 然後將得到的三進位數 依照輸入的範圍1-8的另一個整數 輸出1-8的長度三進位數 e.g. 整數106 另一個整數:6 轉成的三進位數:10221 實際輸出結果要是長度6(不足補0): 010221 程式碼(Code):(請善用置底文網頁, 記得排版) 想法: 我是用陣列去做(只用老師目前有教的東西來解題目) 想法是十進位用長除法算出的三進位結果存入陣列 然後把結果倒過來 再把陣列轉乘整數或字串(這樣比較好動態配合另一個整數要求的長度) 第一個問題: 我把輾轉相除法的結果存入字元陣列中 然後在測試那邊加一個\0, 想說這樣可以變字串? 但似乎不行, 輸出是亂碼 為何不能加\0讓他變字串呢 第二個問題: (因為a陣列存的是反過來的三進位結果 所以弄了一個b把他導正) 為了要配合輸入的第二個整數的長度 所以我想把字元陣列變成整數, 或者字串 這樣才能在printf的時候動態變化它的長度 但用atoi失敗了, 輸出變0 字元/整數陣列 轉 整數/字串 這裡有點混亂麻煩各位高手解惑了 #include <stdlib.h> #include <stdio.h> int main(){ int X, Y, i, j; char a[64], b[64]; while(scanf("%d %d", &X, &Y)!= EOF){ /*長除法*/ i = 0; while(X > 0){ a[i] = X % 3; X = X / 3; i++; } /*長除法*/ /*測試*/ a[i] = '\0'; printf("%s", a); /*測試*/ /*倒過來*/ j = 0; while(i > 0){ b[j] = a[i-1]; i--; j++; } /*倒過來*/ int c = atoi(b); printf("%d", c); } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.88.4 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1475918818.A.AF7.html

10/08 17:33, , 1F
你要把數字轉換成 ASCII code 才能以字元/字串型式印出
10/08 17:33, 1F

10/08 17:35, , 2F
也就是所有的值都要加上 '0' 字元
10/08 17:35, 2F

10/08 17:36, , 3F
或者說全部加上 48
10/08 17:36, 3F
好的我試試看 感謝, 這樣就解出來了~

10/08 17:38, , 4F
長除法的結果不需呼叫函式直接輸出檢查。
10/08 17:38, 4F
不太懂您意思 ※ 編輯: CubaMesa (223.137.88.4), 10/08/2016 17:44:35 ※ 編輯: CubaMesa (223.137.88.4), 10/08/2016 18:00:11

10/08 18:57, , 5F
解過就好。
10/08 18:57, 5F

10/09 04:41, , 6F
我是系上學生 有需要可以聯絡
10/09 04:41, 6F
文章代碼(AID): #1N-BlYht (C_and_CPP)
文章代碼(AID): #1N-BlYht (C_and_CPP)