.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位整數正規表示式
- 匹配n位正整數正規表示式
- n進位制轉十進位制
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- C++資料格式化5 - uint轉換成十六進位制字串&二進位制的data列印成十六進位制字串C++UI字串
- 二進位制漏洞挖掘之整數溢位
- 教你如何進行數倉字串、二進位制、十六進位制互轉字串
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- Java中8進位制和16進位制的表示方法Java
- 任意進位制下的可逆素數 C++C++
- stoi字串轉十進位制數越界問題字串
- c++的進位制轉換C++
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- C# 解析16進位制字串。將16進位制字串轉換成明文字串C#字串
- Java 16進位制字串 取反Java字串
- 驗證二進位制數字正規表示式
- 1290. 二進位制連結串列轉整數
- Python中整數移位及二進位制串操作Python
- 僅做筆記用:base64字串轉換為十六進位制形式表示的二進位制資料筆記字串
- JavaScript 八進位制與二進位制表示法JavaScript
- JavaScript八進位制與二進位制表示法JavaScript
- 負數補碼(16進位制轉10進位制的負數)
- 16進位制字串轉位元組字串
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 八進位制,十六進位制和浮點數
- 1161:轉進位制(C C++)C++
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- C----判斷兩個整數乘積幾進位制
- 位元組流轉16進位制字串字串
- C++資料格式化6 - uint轉換成二六進位制字串C++UI字串
- 在c語言中輸出8進位制數,16進位制數C語言
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 負數的二進位制表示方法
- 2^k進位制數
- 1417 二進位制數的大小
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出