我的编程学习日志(1)--进制转换
生活随笔
收集整理的這篇文章主要介紹了
我的编程学习日志(1)--进制转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天拿到一個題,把任意一個int型的十進制數n轉換為m(0<m<=32)進制。
?
既然沒有小數思路就很簡單了,只需要把n除以m取余數,記錄每個余數,最后把余數反序輸出(如圖)。
下面就來分步實現它。
?(注:這并不算最簡單的實現過程)
首先n/m取余,并用一個數組來存儲余數:
<pre class="cpp" name="code">int yu[100]; int n,m,i; i=0; cin>>n; cin>>m; while(n) { yu[i]=n%m;n=n/m;i++; }?然后是反序輸出:
for(i=i-1;i>=0;i--) {cout<<yu[i]; } cout<<endl;?
(這里存儲加反序輸出,我首先想到的是用鏈表,但題目已經說明n是int型,所以用來存儲余數的數組[100]已經夠用了,不會造成太大的空間浪費,用鏈表就得不償失了。)
?
因為超過11的數要用字母來表示,所以輸出時還要加這個判斷:
if(yu[i]>10) { yu[i]=yu[i]+55; cout<<(char)yu[i]; } else cout<<yu[i];
這樣就完成了一個十進制轉其他進制的程序。
?
完整的代碼如下:
#include<iostream> using namespace std;int main() {int n,m,i;int yu[100];i=0;cin>>n;cin>>m;while(n){yu[i]=n%m;n=n/m;i++;}for(i=i-1;i>=0;i--){if(yu[i]>10){yu[i]=yu[i]+55;cout<<(char)yu[i];}elsecout<<yu[i];}cout<<endl;return 0; }
?
?
轉載于:https://www.cnblogs.com/ikaze/p/5140103.html
總結
以上是生活随笔為你收集整理的我的编程学习日志(1)--进制转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: size_t和ssie_t的区别
- 下一篇: 新的地方门户社区论坛前期运营思路及指南