| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3675 人关注过本帖
标题:输入一个任意数,求它的个位数
只看楼主 加入收藏
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 

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;
就可以了...


2007-08-09 22:19
DMC_YA
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-9
收藏
得分:0 
狂人老大的算法通俗易懂,aipb2007的算法比较精简而不是一个特例!

%是求余运算符号,求余运算就是指一个数除以另一个数直到不能整除时所剩下的值,也就是指余数。举个例子:

128%10 验证结果为8 运算过程如下

第一次:128%10=28

第二次:28%10=8

第三次:8%10=8

那么很容易看出来,%运算其实是一个循环过程,也就是说一定会取到个位上的数字才退出求余运算。

那么为什么要选取余10这个数而不是其他数字呢,因为我们需要求的是个位上的数,个位数绝对不会大于10,而0-9内的任意数%10都等于他本身,所以选定%10而不是其他数字.

我们可以得出一个结论,个位%10 两位%100 三位%1000。。。。

再回首往事都已随枫叶一片片落,夕日伊人耳边话也随潮声向东流,万事都已成空!
2007-08-09 23:49
小糊涂仙
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-8-5
收藏
得分:0 
我觉得应该对这个"任意数"进行一下强制类型转换,(int)任意数,考虑到任意数有可能为小数!

谁能改变,人生的长度 我们都在不断赶路,忘记了出路 去不到终点,回到原点 享受,那走不完的路
2007-08-10 00:16
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

本来这个简单至极的问题,我不想再回答了,但是看到这么多人在误解大家,还是说两句:

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)。


Fight  to win  or  die...
2007-08-10 02:16
小糊涂仙
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-8-5
收藏
得分:0 
回复:(blueness21)输入一个任意数,求它的个位数
这个是我写的一个求模程序,结果是小数哦

图片附件: 游客没有浏览图片的权限,请 登录注册

[此贴子已经被作者于2007-8-10 2:47:35编辑过]


谁能改变,人生的长度 我们都在不断赶路,忘记了出路 去不到终点,回到原点 享受,那走不完的路
2007-08-10 02:45
DMC_YA
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-9
收藏
得分:0 

TO aipb2007: 其实我说的那个

第一次:128%10=28

第二次:28%10=8

第三次:8%10=8

是指程序在求128%10的过程,也就是这整个过程在我们人脑中的运算过程,我只是想说明白一下128%10=8中的这个8是怎么来的。求余过程就是这样,如果不是还请多多指教。

而为什么对一个数求模,a%b得到值是[0,b),就是因为我们需要求的余数,余数绝对不会大于b,我们用10的话就不会大于10,也就刚好适合我们求个位数字。

这是我上面回答的,是些原理性的东西,你可以用短除方式看看求一个数的余数是不是上面的那些过程。


再回首往事都已随枫叶一片片落,夕日伊人耳边话也随潮声向东流,万事都已成空!
2007-08-10 11:48
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
大家数学学到哪里去了?
a mod b 是什么意思? 就是用a去除b算余数,做除法最后得到余数不会吗?
2007-08-10 12:14
DMC_YA
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-9
收藏
得分:0 
顶楼上

再回首往事都已随枫叶一片片落,夕日伊人耳边话也随潮声向东流,万事都已成空!
2007-08-10 12:27
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
以下是引用DMC_YA在2007-8-10 11:48:45的发言:

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

结贴了!


Fight  to win  or  die...
2007-08-10 12:46
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

睡个午觉

[此贴子已经被作者于2007-8-10 13:15:40编辑过]

2007-08-10 13:12
快速回复:输入一个任意数,求它的个位数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033106 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved