输入一个非负整数,输出它的位数。
1.解题思路:将输入的整数反复除以10,直到运算结果等于0为止,除法的运行次数即为整数的位数。
2.参考答案:
/* Calculates the number of digits in an integer */
/* 计算一个整数的位数 */
#include<stdio.h>
int main()
{
int digits = 0, n;
printf("Please enter a nonnegative integer: ");/* 请输入一个非负整数 */
scanf("%d", &n);//输入整数n的值
do {
n /= 10;
digits++;
} while(n > 0);
/* 当n每成功整除一次10,计数器digits(同时也是位数)自增一次,数位加一位;
当控制表达式为假,即n=0时,循环停止 */
// 下面根据计数器digits的值输出整数的位数n
printf("The number has %d digit(s)\n", digits);
return 0;
}
3.提示:无论是否需要,最好都在do-while语句中添加花括号{}以避免错看成while语句的情况。