[问题] 整数阵列转字串 / 字串转整数

楼主: 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