统计一个整数的位数。

#include
int main(){
int a,i;
scanf("%d",&a);
if(a<0){
a=-a;
}
do{
i++;
a=a/10;
}while(a!=0);
printf("%d",i);
return 0;
}
为啥这样写能行,不是说当a!=0是输出结果。当输入a=0时怎么又会输出1,这是咋回事?

do while 循环,上来就先执行大括号里的代码一次呀,也就是{ i++;a=a/10;}这两句
while(a!=0);是判断是否继续循环执行,跟输出结果没啥关系,执行完之后就会输出结果

#include <stdio.h>

int main() {
int total=1, n;
scanf("%d", &n);
if(n<0){
n *= -1;
}
n /= 10;
while (n>0){
total++;
n /= 10;
}
printf("%d", total);
return 0;
}