下面的代码片段从用户获取一个整数(即数字)并打印该数字中所有数字的计数,但是,如果我在某处输入一个包含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);
如果您可以通过文字引导我浏览,那么就不需要共享代码了。
谢谢。
答案 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));