问题介绍
例如: 输⼊:1234 输出:4
输⼊:12 输出:2
特别说明
之所以将这个问题单独拿出来讲,是因为解决思路的特殊之处,因为0的特殊存在,即使是0也要输出一位数。所以,解决这个问题使用我们平时不太常用的do while循环解决会更好一些
关于循环的知识点讲解,请看这篇http://t.csdnimg.cn/wHzqc
思路分析
1.创建一个变量a存储输入的值,并创建一个临时变量temp拷贝输入的值,对备份进行操作,防止破坏原来的值
2.创建一个变量count存储数字的个数
3.使用一个do while循环,进入循环之后先让count++,因为只要输入了值,就至少有一位数. 再让
temp的值整除10赋给它本身(这相当于将这个数去掉了一位)当操作之前该值语句的值已 经 只有一位数时,整除10之后就变为0,这时再进行while的条件判断,就不再成立。这时得到的count的值就是我们要求得的位数
代码实现——do while循环
int main() { int a = 0; int count = 0; scanf("%d", &a); int temp = a;//用临时拷贝的值进行操作,防止破坏原来的值 do { count++; temp = temp / 10; } while (temp); printf("%d是%d位数\n", a, count); return 0; }
代码实现——while循环
当然,这个代码并不是用其他循环就不能实现,使用while循环时,需要多加一个if判断语句,为了应付输入的值是0的这种情况
int main() { int a = 0; int count = 0; scanf("%d", &a); int temp = a; if (temp == 0) //与do while循环相比,这里多了一个if语句 temp++; //保证即使输入0的时候while循环也能执行一次 while (temp) { count++; temp = temp / 10; } printf("%d是%d位数\n", a, count); return 0; }