.C++整數的N進位制字串表示
. 整數的N進位制字串表示
【問題描述】編寫函式itob(n,s,b),用於把整數n轉換成以b為基的字串並儲存到s中. 編寫程式,使用函式itob(n,s,b)將輸入的整數n,轉換成字串s,將s輸出.轉換後的字串從最高的非零位開始輸出。如果n為負數,則輸出的字串的第一個字元為’-’。b為大於1小於37的任意自然數值。當b=2時,輸出字元只可能是’0’和’1’;當b=16時,輸出字串中可能含有字元為’0’-’9’,’a’-’f’(字母以小寫輸出)。b還可以是其它數值。比如輸入n=33,b=17,則輸出33的17進位制值為"1g"。
【輸入形式】控制檯輸入整數n和b,其中n可以為負數。n和b以空格分隔.
【輸出形式】控制檯輸出轉化後的字串s.
【樣例輸入】5 2
【樣例輸出】101
【樣例說明】5的二進位制就是101
【評分標準】結果完全正確得20分,每個測試點4分。
#include<bits/stdc++.h>
using namespace std;
int itob(int n,int s[],int b);
int main(){
int flag,n,len,b,s[50];//flag==0為負,flag==1為正
cin>>n>>b;
if(n>=0)flag=1;
else flag=0;
len=itob(n,s,b);
if(flag==0){
cout<<"-";
for(int i=len-1;i>=0;i--)//將陣列變為正數
s[i]=-s[i];
}
for(int i=len-1;i>=0;i--){//直接反向輸出 無需倒序
if(s[i]>=0&&s[i]<=9)cout<<s[i];
else cout<<char(s[i]-'0'+'a');//與零的距離等於字母與a的距離
}
}
int itob(int n,int s[],int b){
int i=0;
while(1){
if(n==0)break;
s[i++]=n%b;//負數%任何非0數等於負數
n/=b;
}
return i;
}
相關文章
- n進位制轉十進位制
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 二進位制漏洞挖掘之整數溢位
- N進位制漫談
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 教你如何進行數倉字串、二進位制、十六進位制互轉字串
- Java中8進位制和16進位制的表示方法Java
- 任意進位制下的可逆素數 C++C++
- 求一個整數的二進位制中1的個數
- [譯]ES6新特性:八進位制和二進位制整數字面量
- 二進位制字串相加字串
- N位二進位制數加減法運算圖靈機圖靈
- 十六進位制數轉十進位制
- lua之m進位制轉換為n進位制-任意進位制轉換演算法演算法
- 驗證二進位制數字正規表示式
- c++的進位制轉換C++
- 字串和16進位制字串的相互轉化字串
- C# 解析16進位制字串。將16進位制字串轉換成明文字串C#字串
- Java 16進位制字串 取反Java字串
- JavaScript八進位制與二進位制表示法JavaScript
- JavaScript 八進位制與二進位制表示法JavaScript
- 負數補碼(16進位制轉10進位制的負數)
- Python中整數移位及二進位制串操作Python
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- 查詢數N二進位制中1的個數(JS版 和 Java版)JSJava
- 八進位制,十六進位制和浮點數
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 某演算法競賽題——把一個二進位制的串轉換為十進位制整數演算法
- 數的進位制轉換
- 16進位制字串轉位元組字串
- C----判斷兩個整數乘積幾進位制
- 進位制均值-進位制轉換+最大公約數
- c++ 16進位制輸出C++
- 在c語言中輸出8進位制數,16進位制數C語言
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 階乘之和 輸入n,計算S=1!+2!+3!+…+n!的末6位(不含前導0)。n≤10 6 ,n!表示 前n個正整數之積。
- 負數的二進位制表示方法