aipb2007的那个是特例...
例如:
124%10 = 4...
因为123,1234,12345最后一位数刚好是它们的位数...aipb2007愚弄了大家一下...
用
int a, m = 1;
std::cin >> a;
while( a>=10 ) a/=10, m++;
std::cout << m << std::endl;
就可以了...
本来这个简单至极的问题,我不想再回答了,但是看到这么多人在误解大家,还是说两句:
to terisevend:
楼主要求的是个位,不是多少位。ex:321 个位1,位数3。
to DMC_YA:
你就更离谱了,一堆错道理还可以说这么多???
128%10 验证结果为8 运算过程如下
第一次:128%10=28 //?????????????????????????
第二次:28%10=8
第三次:8%10=8
上面的答案我很想知道你是用什么验证的?你去用个编译器运行下OK?
有层楼里野比也说了
对一个数求模,a%b得到值是[0,b)。
TO aipb2007: 其实我说的那个
第一次:128%10=28
第二次:28%10=8
第三次:8%10=8
是指程序在求128%10的过程,也就是这整个过程在我们人脑中的运算过程,我只是想说明白一下128%10=8中的这个8是怎么来的。求余过程就是这样,如果不是还请多多指教。
而为什么对一个数求模,a%b得到值是[0,b),就是因为我们需要求的余数,余数绝对不会大于b,我们用10的话就不会大于10,也就刚好适合我们求个位数字。
这是我上面回答的,是些原理性的东西,你可以用短除方式看看求一个数的余数是不是上面的那些过程。
TO aipb2007: 其实我说的那个
第一次:128%10=28
第二次:28%10=8
第三次:8%10=8
是指程序在求128%10的过程,也就是这整个过程在我们人脑中的运算过程,我只是想说明白一下128%10=8中的这个8是怎么来的。求余过程就是这样,如果不是还请多多指教。
而为什么对一个数求模,a%b得到值是[0,b),就是因为我们需要求的余数,余数绝对不会大于b,我们用10的话就不会大于10,也就刚好适合我们求个位数字。
这是我上面回答的,是些原理性的东西,你可以用短除方式看看求一个数的余数是不是上面的那些过程。
彻底无语!
128 % 10, 的原理就是商12余8
结贴了!