用c分割数字

时间:2012-09-01 16:59:29

标签: c

下面的代码片段从用户获取一个整数(即数字)并打印该数字中所有数字的计数,但是,如果我在某处输入一个包含0的数字,它会立即退出while循环(因为while循环条件)。我尝试修复这个bug,但我做不到。你能帮我解决一下吗?谢谢。

int count = 0;
int rem = number % 10;

while(rem != 0) {
   number /= 10;
   ++count;
   rem = number % 10;

}//end while

printf("The count is %d", count);

如果您可以通过文字引导我浏览,那么就不需要共享代码了。

谢谢。

5 个答案:

答案 0 :(得分:2)

也许应该是:

while (number != 0)

你似乎不需要其他东西(rem等),除非你计划做的不仅仅是计算数字。无论如何,你可能在分裂之前需要rem = number % 10;

答案 1 :(得分:2)

没有必要将剩余的数字用于计算每个数字。只要保持除以10直到达到0:

while(number != 0) {
  number /= 10;
  ++count;
}

答案 2 :(得分:1)

(来吧,这是一个小学数学!)

如果某处有零,那么0模10将导致0(你还能期待什么?),所以它自然会退出循环。你想要的是检查数字本身是否已全部向右移动,最终达到0:

while (number != 0)

答案 3 :(得分:1)

输入带0的数字时while循环结束的原因是循环条件为rem != 0。如果您看一看,rem将成为number的最后一位数字。因此,您需要while (number != 0),确保循环遍历每个数字。

答案 4 :(得分:1)

如前4个答案所述,循环是

while(number > 0) {
   ++count;
   number /= 10;
}//end while

另一种选择是将用户输入保留为字符串(假设该数字作为参数提供给程序)并且只打印字符串长度,

char number[30];
strcpy(number,argv[1]);
printf("The count is %d\n", strlen(number));