c語言中如何實現輸入一個整數實現倒序輸出?
倒序輸出一個整數是很多朋友編程入門都會遇到的練習題,那么我們該如何去實現它呢?其實單純說代碼怎么實現是很簡單的,但是開發者不應該只注重代碼實現而不去管解題思路和算法設計思想,這里,我就我所學知識分享一下該問題的幾個實現方法
利用基本運算符取余假設輸入一個整數a=123456,如果倒序輸出就是654321;這里我們首先很容易想到用循環來實現,從最后面一位起,往左每次輸出一位,那么問題是怎么去讓他往左每次輸出一位呢?對,對整數用10取余,因為我們用的整數都是十進制的,所以用10取余后,就會剩下個位,123456第一次取余結果是6,那么下一次循環怎么辦呢?怎么讓123456變成12345就好了。對,就是這個思路,我們直接對將123456除以10得到12345.6,得到的是浮點數,怎么辦呢?
還記得int的隱式轉換么?12345.6轉換為int后,小數點后面的會丟失,只保留整數。OK,剛好利用這個特性就可以實現了。
轉換為字符處理上面講的方法是最基本的方法,很多初學者應該都有接觸過,下面這個方法就是將整型轉換為字符串來處理,利用一些字符串處理函數,這個可能比上一個方法用到的知識更多一些。
第一個用到的是逆序迭代器
第二個用到的是字符串截取,從最后一位開啟往前截取
把整數轉換為字符數組再利用循環從后往前
通過字符數組和棧實現一想到逆序我們很自然會想到棧這個先進后出的數據結構,那么這個問題雖然用不到棧這么復雜的技術,但是這也未嘗不是一個思路,一個問題多種實現方式,從中尋求最簡潔最快速的方法不正是算法開發的魅力么?
該方法的思路是:將整數轉換為字符數組然后將數組逐一入棧,最后再逐一出棧,這樣就實現了逆序的輸出。
總結一個簡單的算法問題,我給出了上面幾個解決方案,但是就實用性、簡便性和效率肯定是第一個,為什么又忍不住寫后面幾種方法呢?其實我們在日常的開發工作中,一個業務需求的實現我們要做的不僅僅只想辦法去實現它,而是盡可能想更多的方法,然后以最優的方法去解決它。
希望我的回答對您有幫助,謝謝~~