输入一个不超过109的正整数,输出它的位数。例如 12735 的位数是5。请不要使用任何数学函数,只用四则运算和循环语句实现。
想法:由于这是一个十进制数,假设数为abcd,会自然联想到abcd=a*103+b*102+c*101+d*100,所以只需判断:
1. 输入的数除以10的余数不为0。
若暂时只考虑这一个条件,我们发现当数是10的整数倍时(如10、100...)将无法满足条件,所以必须有第二个条件:
2. 输入的数除以10不为0。
当满足这两个条件之一时我们发现数必不为0,所以count+1。然后将输入的数减去一位(方法便是将该数/10),最后继续下一次循环并再次判断。
C语言代码如下:
#include<stdio.h> int main() { int n; scanf("%d",&n); int count=0; while(n>0) { if(n%10!=0 || n/10!=0) { count++; } n=n/10; } printf("%d",count); }
Java代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); int count=0; while(n>0) { if(n%10!=0 || n/10!=0) count++; n=n/10; } System.out.println(count); } }
若有错误之处,还请海涵并敬请留言指教。欢迎留言,谢谢!