數制轉換 北大

2021-10-04 22:01:18 字數 2263 閱讀 2805

二刷**

數制轉換

讀題可以發現題中可能有的幾個坑:

資料可能存在包含前導零的情況;

輸出時字母符號全部用大寫表示。

其他:對於這種既有字元又有數字的轉換,常見的解決辦法就是初始化一張查詢表,之後進行對映查表,這樣會快很多。

//輸入和輸出都是字元陣列

#include

"bits/stdc++.h"

using

namespace std;

const

int maxn =

1000

;//輸入陣列

char input[maxn]

;//輸出陣列

char output[maxn]

;int leno;

//原始進製

int a;

//轉換進製

int b;

//十進位制的數值

long

long num;

//使用兩個map來儲存對映關係

map<

char

,int

> mptoten;

map<

int,

char

> mptob;

void

toten

(char input)

}void

tob(

char output)

while

(num !=0)

;}intmain()

base =

'a';

for(

int i=

0;i<

6;i++

) base =

'a';

for(

int i=

0;i<

6;i++)

base =

'0';

for(

int i=

0;i<

10;i++)

base =

'a';

for(

int i=

0;i<

6;i++

)while(~

scanf

("%d"

,&a)

)printf

("\n");

}return0;

}

題中所指的long型其實就是c++中的int型,不要搞錯成c++中的long long型了;

對字串陣列的操作保險起見還是要設定乙個變數來記錄長度?

學會了stl,所以**變得簡單一些了:

使用toupper,tolower實在是太香了!

注意最後的輸出為char型別;

#include

#include

#include

#include

#include

using

namespace std;

unordered_map<

char

,int

> c2n;

unordered_map<

int,

char

> n2c;

intmain()

for(

int i=

0;i<=

5;i++

)int a;

string n;

int b;

while

(scanf

("%d"

,&a)

!=eof

)//printf("dec:%d\n",dec);

//進製轉換

dowhile

(dec!=0)

;for

(int i=

0;isize()

;i++

)printf

("\n");

}return0;

}

shell 數制轉換

shell 指令碼預設數值是由10 進製數處理,除非這個數字某種特殊的標記法或字首開頭.才可以表示其它進製型別數值。如 以 0 開頭就是 8 進製.以0x 開頭就是16 進製數.使用 base number 這種形式可以表示其它進製.base值 2 64.使用方法 八進位制轉十進位制 charles...

數制的轉換

鏈棧實現數制的轉換 include using namespace std define ok 1 define error 0 define overflow 2 typedef int status define e 8 typedef struct snodesnode,linkstack s...

數制轉換問題

description 在實際問題中經常遇到需要對不同的進製數進行轉換,實現將p進製數轉換成r進製數 2 p,r 16 input 資料報含多行,每行包含三個資料,分別為p,r和待轉換的p進製數d 該數的十進位制表示小於100000000 字母用大寫表示,abcdef,當p為0時,結束輸入。outp...