正整数位数的判断方法~~~
我总结了三种判断正整数位数的方法,相信大家一定会发现比我
多的,比我更叫巧妙的算法。。。
第一种:使用数学函数log。。。
第二种:使用printf函数的特殊性质
第三种:利用模拟的思想,一步一步的求解~
/* 求一个正整数的位数的常用方法: 1.使用数学函数 log 2.利用printf函数的特殊性质 3.利用模拟的思想 */ # include<cstdio> # include<iostream> # include<cmath> using namespace std; int main(void) { int i; scanf("%d",&i); printf("的位数%d",printf("%d",i)); return 0; } int main(void) { int m; int i = 1; cin>>m; while( (m = m / 10) >= 1 ) { i++; } cout<<i; return 0; } /* 这个不用特殊的解释吧,,相信大家一定能看懂,每一步让这个数字减少一位,直到这个数字为0,结束。。 但一定要记住,要让i初始化为1,我一开始初始化为0,怎么做都是少一位。。 */ int main(void) { long int a, b; cin>>a>>b; //int j = log10(m)+1; long int j = log(a*b)/log(10) + 1; cout<<j; /* 对数运算是幂运算的逆运算。 z=x^y (z=x的y次方)那么就定义 y=logx(z),叫做以x为低z对数 所以你的求位数的运算就可以用10的对数来计算。 计算机的函数库一般都是提供了一e为低的对数, 而另一个公式就是 logx(y) = logm(y) / logm(x)这个转化底数的常用公式,再已知某一个底数对数的情况下,可以计算任意的底数对数。 */ return 0; }