日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++其他进制转十进制

發布時間:2025/3/15 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++其他进制转十进制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++其他進制轉十進制

開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年04月15日 在學習C++基礎過程中,接觸到進制轉換,個人想要嘗試一下用C++來寫一個進制

轉換,這篇文章主要內容是其他進制轉十進制,現在的進制有十六進制、十進制、八進制、二進制。
我們先來看代碼:
#include
using namespace std;
void main() {
char NUM[50];
int JZ ;
int v10 = 0;
int y = 0;
cout << “請輸入要轉為十進制的數:”;
cin >> NUM;
cout << “請輸入該數的進制:”;
cin >> JZ;
for (int i = strlen(NUM) - 1; i >= 0; i–) {
if (JZ == 16) {
char x = NUM[i];
int e = 0;
if (x == ‘A’ || x == ‘a’) {
e = 10;
}
else
if (x == ‘B’ || x == ‘b’) {
e = 11;
}
else
if (x == ‘C’ || x == ‘c’) {
e = 12;
}
else
if (x == ‘D’ || x == ‘d’) {
e = 13;
}
else
if (x == ‘E’ || x == ‘e’) {
e = 14;
}
else
if (x == ‘F’ || x == ‘f’) {
e = 15;
}
else
{
e = NUM[i] - ‘0’;
}
v10 = v10 + e*pow(JZ, y);
}
else {
int x = NUM[i] - ‘0’;
v10 = v10 + x * pow(JZ, y);
}
y++;
}
cout << “轉換成功!值為:” << v10 << endl;
}

代碼詳解:
代碼首先聲明了4個變量,分別是char NUM[50];、int JZ ;、int v10 = 0;、int y = 0;,然后我們先后輸入了NUM和JZ,NUM是一個其他進制的數,JZ代表了該數是什么進制的,然后我們先了解一下其他進制轉十進制的公式,若一個數為101且為二進制時它的十進制等于(122+0*21+120)=5,其中2的某一個次方的這個2取決于它是什么進制,若上面那個數是八進制那么它等于(1*82+0*81+1*80)=65,次方隨著位數增長,那么下面for循環的初始表達式是int i = strlen(NUM) - 1;,strlen()這個函數是獲取長度的意思,獲取NUM的長度減一的原因是,是因為i要做為索引值來使用,邏輯表達式是i >= 0;,當i<0的時候,我們已經把NUM的每一位數遍歷完了,那么for循環的后置表達式為i–;,上面有其他進制轉成十進制的公式,那么把它寫成代碼就是v10 = v10 + x * pow(JZ, y);那么v10是我們要輸出的結果,x是NUM[i]-‘0’;i上面說過是索引,表示當前是NUM的第幾位數-‘0’呢是因為C++的char機制問題,x為NUM中某一位數,pow(JZ, y),JZ不用說,pow是次方函數,y是多少次方的意思,v10則上一位數算出了的和。十六進制的話只是多了一個判斷,判斷其為A、B、C、D、E、F中的那一位就行了。

下面呢是一些運行的結果:

總結

以上是生活随笔為你收集整理的C++其他进制转十进制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。