<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/reverse-digits-of-num-with-c/</link>
<title><![CDATA[C程序实现数字反转]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[编程杂谈]]></category>
<pubDate>Mon, 27 Jun 2011 15:26:54 +0000</pubDate> 
<guid>https://www.heckjj.com/reverse-digits-of-num-with-c/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 微软雅黑;">有个朋友问我用C怎么实现两个数字反转，也就是逆序，想了下我也有很久没用过C了，其实也简单，和10相乘再加上该数与10取余的和，给出以下实现：<br/><strong>Iterative Way</strong><br/>Algorithm: <br/>Input:&nbsp;&nbsp;num<br/>(1) Initialize rev_num = 0<br/>(2) Loop while num &gt; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; (a) Multiply rev_num by 10 and add remainder of num<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divide by 10 to rev_num<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rev_num = rev_num*10 + num%10;<br/>&nbsp;&nbsp;&nbsp;&nbsp; (b) Divide num by 10<br/>(3) Return rev_num<br/><br/>Example:<br/>num = 4562<br/>rev_num = 0<br/>rev_num = rev_num *10 + num%10 = 2<br/>num = num/10 = 456<br/>rev_num = rev_num *10 + num%10 = 20 + 6 = 26<br/>num = num/10 = 45<br/>rev_num = rev_num *10 + num%10 = 260 + 5 = 265<br/>num = num/10 = 4<br/>rev_num = rev_num *10 + num%10 = 265 + 4 = 2654<br/>num = num/10 = 0<br/><br/></span> <span style="font-family: 微软雅黑;"><br/><strong>Program:</strong><br/><span style="color: #808080;">#include&nbsp;&nbsp;</span><br/><span style="color: #008200;">/* Iterative function to reverse digits of num*/</span><br/><strong><span style="color: #808080;">int</span></strong> reversDigits(<strong><span style="color: #808080;">int</span></strong> num) <br/>&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #808080;">int</span></strong> rev_num = 0; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #006699;">while</span></strong>(num &gt; 0) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rev_num = rev_num*10 + num%10; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num = num/10; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #006699;">return</span></strong> rev_num; <br/>&#125; <br/><br/><span style="color: #008200;">/*Driver program to test reversDigits*/</span><br/><strong><span style="color: #808080;">int</span></strong> main() <br/>&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #808080;">int</span></strong> num = 4562; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #ff1493;">printf</span></strong>(<span style="color: #0000ff;">&quot;Reverse of no. is %d&quot;</span>, reversDigits(num)); <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #ff1493;">getchar</span></strong>(); <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #006699;">return</span></strong> 0; <br/>&#125;<br/><strong>Time Complexity:</strong> O(Log(n)) where n is the input number.<br/><strong>RECURSIVE WAY</strong><br/><span style="color: #808080;">#include&nbsp;&nbsp;</span><br/><span style="color: #008200;">/* Recursive function to reverse digits of num*/</span><br/><strong><span style="color: #808080;">int</span></strong> reversDigits(<strong><span style="color: #808080;">int</span></strong> num) <br/>&#123; <br/>&nbsp;&nbsp;<strong><span style="color: #006699;">static</span></strong> <strong><span style="color: #808080;">int</span></strong> rev_num = 0; <br/>&nbsp;&nbsp;<strong><span style="color: #006699;">static</span></strong> <strong><span style="color: #808080;">int</span></strong> base_pos = 1; <br/>&nbsp;&nbsp;<strong><span style="color: #006699;">if</span></strong>(num &gt; 0) <br/>&nbsp;&nbsp;&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;reversDigits(num/10); <br/>&nbsp;&nbsp;&nbsp;&nbsp;rev_num&nbsp;&nbsp;+= (num%10)*base_pos; <br/>&nbsp;&nbsp;&nbsp;&nbsp;base_pos *= 10; <br/>&nbsp;&nbsp;&#125; <br/>&nbsp;&nbsp;<strong><span style="color: #006699;">return</span></strong> rev_num; <br/>&#125; <br/>&nbsp;&nbsp;<br/><span style="color: #008200;">/*Driver program to test reversDigits*/</span><br/><strong><span style="color: #808080;">int</span></strong> main() <br/>&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #808080;">int</span></strong> num = 4562; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #ff1493;">printf</span></strong>(<span style="color: #0000ff;">&quot;Reverse of no. is %d&quot;</span>, reversDigits(num)); <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #ff1493;">getchar</span></strong>(); <br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #006699;">return</span></strong> 0; <br/>&#125;<br/><strong>Time Complexity:</strong> O(Log(n)) where n is the input number<br/>Note that above above program doesn’t consider leading zeroes. For example, for 100 program will print 1. Try extensions of above functions that should also work for floating point numbers.</span><br/>Tags - <a href="https://www.heckjj.com/tags/%25E6%2595%25B0%25E5%25AD%2597%25E5%258F%258D%25E8%25BD%25AC/" rel="tag">数字反转</a> , <a href="https://www.heckjj.com/tags/%25E6%2595%25B0%25E5%25AD%2597%25E9%2580%2586%25E5%25BA%258F/" rel="tag">数字逆序</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/reverse-digits-of-num-with-c/#blogcomment</link>
<title><![CDATA[[评论] C程序实现数字反转]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/reverse-digits-of-num-with-c/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>