题目
读入正整数,统计它的位数
思路
if (n==0) return 1 位;否则 while (n) { n/=10; cnt++; }。负数可先取绝对值再数。
解题分析
反复 n/=10 直到为 0 计数;n==0 单独返回 1 位。负数可先取绝对值再数,按题目是否允许负数处理。
完整程序
#include <stdio.h>
int main(void)
{
int n;
if (scanf("%d", &n) != 1) {
return 1;
}
if (n == 0) {
printf("1\n");
return 0;
}
int cnt = 0;
int x = n < 0 ? -n : n;
while (x) {
cnt++;
x /= 10;
}
printf("%d\n", cnt);
return 0;
}
运行示例
输入:
12345输出:
5