【发布时间】:2011-12-27 17:01:30
【问题描述】:
我正在尝试创建一个函数,该函数将采用 int 并分别返回最左边的数字和数字的其余部分。
int idigitizer(int *number) {
int i = 1;
int head = 0;
int tmp = 0;
tmp = *number;
while (tmp > 9) {
if ((tmp/i) < 10) {
head = tmp/i;
*number = *number - (head*i);
return head;
} else {
i = i*10;
}
}
number = 0;
return tmp;
}
idigitizer 返回数字的最左边部分,*number 将携带其余部分。 我将在我的 main 中有一个循环,它将继续调用 idigitizer,直到号码的所有数字都分开。 问题是我不知道如何处理零以及如何在完成最后一位数字时使该过程正确终止。欢迎任何帮助。提前致谢。
编辑:使其更清晰。我不希望数字中间可能出现的零丢失。如果我得到数字 100047 作为输入,我希望 idigitizer 返回:
return - *number
100047
1 00047
0 0047
0 047
0 47
4 7
7
【问题讨论】:
-
你需要从
idigitizer(1000056)返回什么? -
您没有告诉我们您在帖子中粘贴的这段代码是什么以及它与您的问题有什么关系。
-
我希望:1 0 0 0 0 5 6 作为最终产品。当我得到第一个 1 时,我找不到将其余数字保持为 000056 的方法。
-
@MikeNakis 我粘贴的代码返回最左边的数字并将其余数字放入 *number。