判断位数
题目要求
程序要读入一个非负整数,然后输出这个整数的位数。如352,输出3。
解题思路
给定的数/10,即去掉最右边的数,一直到结果为0。
代码实现
while循环
#include<stdio.h>
int main(){
int x;
int n=0;
scanf("%d",&x);
n++;
x /=10;
**// a/=b等价于a=a/b
//while循环前加n++ x/10的目的是解决0的情况**
while(x>0){
n++;
x /=10;
}
printf("%d\n",n);
return 0;
}
do while循环
#include<stdio.h>
int main(){
int x;
int n=0;
scanf("%d",&x);
do{
n++;
x /=10;
}while(x>0);
printf("%d\n",n);
return 0;
}
代码总结
do-while进入循环时不做检查,而是在执行过一轮循环后在检查循环是否满足条件,满足继续循环,不满足跳出。
while是先判断是否满足条件,再进入循环体,循环后,条件成立继续循环,直至不满足条件跳出循环。
区别:判断条件,while在前,do-while在后
while可能一遍都不做,do while无论如何都会做一次
do while 与 while 流程图
注意:循环体内要有改变条件的机会,要不然循环可能会卡死。