二刷**數制轉換
讀題可以發現題中可能有的幾個坑:
資料可能存在包含前導零的情況;
輸出時字母符號全部用大寫表示。
其他:對於這種既有字元又有數字的轉換,常見的解決辦法就是初始化一張查詢表,之後進行對映查表,這樣會快很多。
題中所指的//輸入和輸出都是字元陣列
#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...