C++ 十进制转其他进制
C++ 十進制轉其他進制
開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年04月10日在學習C++基礎過程中,接觸到進制轉換,個人想要嘗試一下用C++來寫一個進制轉換,
這篇文章主要內容是十進制轉其他進制,現在的進制有十六進制、十進制、八進制、二進制。
我們先來看代碼:
#include
#include
using namespace std;
void main() {
int NUM,JZ;
int x = 0;
int y = 1;
int va = 0;
string vx = “”;
string vr = “”;
cout << “請輸入一個十進制的數:”;
cin >> NUM;
cout << “請輸入要轉換的進制:”;
cin >> JZ;
if (JZ == 16) {
if (NUM >= 16) {
for (int i = NUM; i >= 16 * pow(10, x); ) {
if (i >= 16 * pow(10, x)) { va = va + 1 * pow(10, y); }
i = i - 16 * pow(10, x);
if (i<16 * pow(10, x)) {
if (i == 10 * pow(10, x)) { vx = “A” + vx; }
else if (i == 11 * pow(10, x)) { vx = “B” + vx; }
else if (i == 12 * pow(10, x)) { vx = “C” + vx; }
else if (i == 13 * pow(10, x)) { vx = “D” + vx; }
else if (i == 14 * pow(10, x)) { vx = “E” + vx; }
else if (i == 15 * pow(10, x)) { vx = “F” + vx; }
else { vx =to_string(i) + vx; }
}
if (i < 16 * pow(10, x)) {
if (va >= 16 * pow(10, y)) {
y++; x++; i = va; va = 0;
}
else {
x = vx.size();
va = va / pow(10, x);
if (va == 10) { vr = “A”; }
else if (va == 11) { vr = “B”; }
else if (va == 12) { vr = “C”; }
else if (va == 13) { vr = “D”; }
else if (va == 14) { vr = “E”; }
else if (va == 15) { vr = “F”; }
else { vr = to_string(va); }
vx = vr + vx;
}
}
}
}
else {
va = NUM;
if (va == 10) { vx = “A”; }
else if (va == 11) { vx = “B”; }
else if (va == 12) { vx = “C”; }
else if (va == 13) { vx = “D”; }
else if (va == 14) { vx = “E”; }
else if (va == 15) { vx = “F”; }
else { vx = va; }
}
}
else {
for (int i = NUM; i >= JZpow(10, x); ) {
if (i >= JZpow(10, x)) {
va = va + 1 * pow(10, y);
}
i = i - JZpow(10, x);
if (i<JZpow(10, x)) {
va = va + i;
vx = to_string(va);
}
if (i < JZpow(10, x)) {
if (va >= JZpow(10, y)) {
y++; x++; i = va; va = 0;
}
}
}
}
cout << “轉換之后的數為:” << vx << endl;
}
再看一些輸出結果:
例1:轉八進制和二進制的例子,把它們兩個放一起一起講是因為他們用的是同樣的代碼
這是八進制和二進制的示例,輸入的是10和156,輸出結果八進制的是12和234,二進制的是1010和10011100,它們的代碼主要部分是一個for循環,如上所示NUM代表一個十進制的數,JZ代表要轉換的進制,聲明兩個變量va、vx,當NUM輸入的是10,JZ輸入的是2 ,該for循環執行每當NUM>=210x時,減去2*10x,x的初始值為0,每當NUM<=210x時加一,va加十,直到NUM等于或小于2時,判斷va是否大于等于10的y次方,y的初始值為1,每當NUM<=2*10x時加一,若va大于等于時10的y次方時將va賦值給NUM,繼續循環,直到va小于10的y次方,將va賦值給vx然后輸出vx。
例2:十六進制和八進制、二進制不同,十六進制有A、B、C、D、E、F等字母,分別代表10、11、12、13、14、15,下面輸入和輸出結果
輸入同樣是10和156,輸出結果為A和9C,for循環的原理同上,不同的是因為每當十六進制結束一輪for循環時都要加上判斷,判斷NUM是否為10、11、12、13、14、15,如果是將vx賦值為A、B、C、D、E、F等字母,再進行下輪for循環或結束佛如循環。
以上就是十進制轉其他進制的內容,文章到此結束。
總結
以上是生活随笔為你收集整理的C++ 十进制转其他进制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网日报 | 6月7日 星期一 | 华
- 下一篇: 2021年B站创作者生态报告