對十進位制數字的按位輸出,取反,並求其位數
如何對一些數字需要輸出,取反,求其是幾位數
//求十進位制數字n的數字位數
//我們要求一個數字的位數,可以先從他的個位開始統計,step1:判斷這個數字n整除10 是否為0,如果為零,則它是個個位數,如果不為0,則它至少是個兩位數。step2:我們則給它的位數+1。step1:將n/10後的值賦值給n,例如:1234/10=123. 重複以上步驟
/*int GetFigures1(int n)
{
int i;
for(i=0;n!=0;i++)
{
n/=10;
}
return i;
}*/
如果用for語句求數字0的位數,數字0無法計入迴圈,i的值為0。則輸出0的位數為0,利用do while剛好解決這個問題
int GetFigures(int n)
{
int count=0; //首先需要定義一個整型常量來儲存數字的位數,定義一個 count
do //利用do while語句可以避免for語句求0的位數的時候出現的漏洞
{
count++; //位數+1
n/=10; //丟棄最後一位數字
}while(n!=0);
return count;
}
//逆序輸出十進位制數字n,如123456->654321
void PrintReverse(int n)
{
if(n<0) //如果n為負數,將n的絕對值賦值給n,將負整數數轉為正整數
{
printf("-"); //輸出一個負號
n=-n;
}
do
{
printf("%d",n%10); //依次輸出最後一位數字
n/=10; //輸出後將最後一位數字丟棄
}while(n!=0);
printf("\n");
}
//順序輸出十進位制數字n,如123456->123456
通過求十進位制數字n的數字位數我們可以知道如何輸出最後一位,捨棄最後一位。同理我們也可以輸出一個數字n的首位,然後捨棄首位,只是不同的是前者是整除10。後者是整除10的count-1次方,然後再對10的count-1次方取餘,最後10 的count-1次方對10取餘,依次迴圈直到n==0時結束迴圈
例如:123456整除10 的6-1次方為1(123456/100000=1),
123456對10 的6-1次方求餘等於23456(123456%100000=23456),
10的6-1次方整除10 等於10000,23456再整除10000,然後再對10000取餘,依次迴圈,直到最後數字為0
void PrintOrder(int n)
{
int count=GetFigures(n); //定義一個常量count接收呼叫函式GetFigures()的值
int tmp=1;
for(int i=1;i<count;i++) //求10的(count-1)次方
{
tmp*=10; //將10的(count-1)次方的值賦值給tmp
}
do
{
printf("%d ",n/tmp); // 取最高位
n%=tmp; //丟最高位
tmp/=10; //將tmp的位數減一
}while(n!=0);
printf("\n");
}
相關文章
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出
- printf()將10進位制數安照輸出16進位制,8進位制輸出
- 輸出二進位制數
- 在c語言中輸出8進位制數,16進位制數C語言
- C printf按8進位制、10進位制、16進位制輸出以及高位補0
- printf與scanf如何輸出、輸入十六進位制與八進位制數
- 牛客網測試題 把十六進位制數字轉換為十進位制數字
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 第一章:位運算-------輸入浮點數,輸出對應二進位制數
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- C 如何將輸出的地址轉化為十進位制數
- 羅馬數字轉換成十進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 使用 Haskell 將十進位制數字轉成羅馬數字Haskell
- Java 16進位制字串 取反Java字串
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- n進位制轉十進位制
- 十進位制轉十六進位制
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Qt進位制轉換(十進位制轉十六進位制)QT
- 彙編實現10進位制轉16進位制並以ASCII碼輸出ASCII
- 十進位制——二 (八、十六 )進位制
- 負數補碼(16進位制轉10進位制的負數)
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- printf十六進位制輸出64位值的方法
- 二進位制、十進位制與十六進位制相互轉化
- 八進位制,十六進位制和浮點數
- 二進位制中為什麼負數是正數取反再加一
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 二進位制轉十進位制快速方法
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 進位制數轉換方法(八/十六/十)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 2^k進位制數