0

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

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

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

}//end while

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

无需共享代码,如果您可以通过文本引导我完成,将不胜感激。

谢谢你。

4

5 回答 5

2

也许应该是:

while (number != 0)

rem除非您打算做的不仅仅是数位数,否则您似乎不需要其他东西(等)。无论如何,您可能希望rem = number % 10;在除法之前。

于 2012-09-01T17:00:43.357 回答
2

没有必要用剩余的数字来计算每个数字。只需继续除以 10 直到达到 0:

while(number != 0) {
  number /= 10;
  ++count;
}
于 2012-09-01T17:04:31.103 回答
1

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

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

while (number != 0)
于 2012-09-01T17:03:23.413 回答
1

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

于 2012-09-01T17:05:11.097 回答
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));
于 2012-09-02T02:05:34.567 回答