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

作者: CubaMesa (梅總)   2016-10-08 17:26:55
開發平台(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
作者: Schottky (順風相送)   2016-10-08 17:33:00
你要把數字轉換成 ASCII code 才能以字元/字串型式印出也就是所有的值都要加上 '0' 字元或者說全部加上 48
作者: pttworld (批踢踢世界)   2016-10-08 17:38:00
長除法的結果不需呼叫函式直接輸出檢查。解過就好。
作者: Sylveon (仙子精靈)   2016-10-09 04:41:00
我是系上學生 有需要可以聯絡

Links booklink

Contact Us: admin [ a t ] ucptt.com