【发布时间】:2018-11-29 12:32:05
【问题描述】:
#include <stdio.h>
void numDigits(int count, int number) {
while (number > 0)
{
number = number / 10;
count = count + 1;
}
printf("\nThe number of positive intergers is %d.\n", count);
}
int main()
{
int number;
int count = 0;
printf("Please enter a number: ");
scanf_s("%d", &number);
numDigits(count, number);
return 0;
}
对于超过 9 位的数字,此代码会打印出“9”。如果用户输入 0123456789,它应该等于 10,但此代码改为显示“9”。
【问题讨论】:
-
你从零开始!改用 1234567890
-
当您将
01(在第 9 次迭代中)除以10时,它将返回0。因此,在下一次迭代中,number变为0并终止循环。 -
要考虑前导零,您需要将数字读取为
string。