關於C++讀入數字按位取出與進位制轉換問題(典型問題)
阿新 • • 發佈:2020-02-09
這一片部落格我就不寫具體的一個題了,只是總結一種典型問題——讀入數字按位取出。
就拿數字12345舉例吧。
是首先,我們要取出個位。這樣取出:
12345/1=12345
12345%10=5. //為了好發現規律
這樣我們就有了它的個位。十位是這樣:
12345/10=1234
1234%10=4.
同理,百位:
12345/100=123
123%10=3.
於是可以發現,取出哪一位,就是要先將原數除以這一位的位名,再模10.
程式:
#include<iostream> #include<cmath> using namespace std; int main() { int a[100]; int wei = 0; int num; cin >> num; while ((num / (int)pow(10,wei)) != 0) //迴圈終止條件是這個數的位數小於這一次要除以的數的位數 { a[wei] =(num/(int)pow(10,wei))%10; //根據剛才得出的結論,取出各位,存到陣列中。 wei++; } }
然後是進位制轉換問題。其實和取位問題差不多,只不過取出之後要乘上這一位對應的進位制的次方數。
程式:
long long to10(int jz,int num)//功能:將輸入的數轉換成十進位制 { long long result=0; int wei=0; while(num/(int)pow(10,wei)!=0)//將輸入的數按位取出 { result+=pow(jz,wei)*((int)(num/pow(10,wei))%10);//按數所在的位置乘上對應的進位制的次方 wei++; // (num/1)%10 // (num/10)%10 // (num/100)%10 } return result; }
總結
以上所述是小編給大家介紹的關於C++讀入數字按位取出與進位制轉換問題,希望對大家有所幫助!