int n,s=0; scanf("%d",&n); while(n) { s*=10;

intn,s=0;scanf("%d",&n);while(n){s*=10;s+=n%10;n/=10;}printf("%d",s);请问下各位C语言大神,这个是求任... int n,s=0;
scanf("%d",&n);
while(n)
{
s*=10;
s+=n%10;
n/=10;
}
printf("%d",s);
请问下各位C语言大神,这个是求任意整数的逆序数的算法,但我看了很久都没看懂,能替我分析一下吗?
展开
 我来答
水上漂汤
推荐于2016-04-08 · TA获得超过1万个赞
知道大有可为答主
回答量:1830
采纳率:71%
帮助的人:1432万
展开全部
这里涉及到2个算法,一个是分离整数的各个数位,另一个是累加
首先来说分离数位,比如 n = 12345
一个整数对10求余的结果是0到9,因此它是个位数
则n%10得到个位数5
如何求十位数呢?如果把5去掉,让n=1234,再求余不就可以了吗?
因此有n = n/10;
如此循环,依次得到5,4,3,2,1
如何把它们组合成一个整数呢?
第一次分离出了5,给5添一个0,得到50
第二次分离出了4,50+4=54,再添一个0,得到540
第三次分离出了3,540+3 = 543,再添一个0,得到5430

……如此继续
物理公司的
2015-11-12 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1348万
展开全部
s *= 10 s=4,进行第二轮s*10 = 40,就是把数字往左移
s+ = n%10 这是最后一位很容易理解吧,1234的话就是4,s初始化时0。第二轮40+3=43, 然后是43*10=430+2=432
n/10 把1234的最后一位去掉 123,返回第一行

第一轮
s = s*10 s=0
s = 1234%10 = 4
n = n/10 = 123

第二轮
s = s*10 = 4*10
s = 123%10 = 3+40=43
n=n/10=12

第三轮
s = s*10 = 430
s = 12%10 = 2+430=432
n=n/10=1

第四轮
s = s*10 = 432*10=4320
s = 1%10 = 1+4320 = 4321
s = 1/10=0
结束
s=4321
追问
能不能再详细点。。
追答
abcde = e*10000+d*1000+c*100+b*10+a*1

.
.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式