c語言的進位制轉換問題,C語言16進位制轉10進位制問題,非強制轉換!

2022-03-07 23:26:32 字數 6141 閱讀 6729

1樓:匿名使用者

錯在》 for ( count = 1; num != 0; count++ )

你輸出的是按照餘數的先後順序輸出的,但是十進位制轉化成二進位制時,應該按照餘數的逆順序輸出的,你弄錯了順序,還有scanf ( "%d" &nuum )少了一個逗號,我寫的程式給你參考下吧!保管正確。

#include

void main ()

for(i=count-1;i>=0;i--)/*實現餘數的逆順序輸出*/

printf("%d",y[i]);

printf("\n");}

2樓:匿名使用者

輸出時按照從左到又的順序,最先計算出來的是這個二進位制數的最後一位也是最右邊的一位,可以先用陣列儲存起來,然後輸出。

另外你的程式有語法錯誤。把num寫成了nuum,並且掉了逗號。

#include

int main ()

for(i=count-1;i>=0;i--)printf("%d",a[i]);

printf ( "\n" );

return 0;}

3樓:匿名使用者

#include

int main ()

4樓:匿名使用者

兄弟,十進位制轉二進位制,公式是,除2取餘「反向」輸出,你對這個演算法的理解有小問題

程式很簡單,不贅述了

5樓:改淑珍尚嫻

你的if語句後面沒有用{}把它刮起來(注:要是隻有一句,那可以不用刮)。我幫你刮起來了,你看看是不是你想要的結果。

#include

main()

if(p==3)

}else

if(i==2)

if(p==3)

}else

if(p==2)

system("pause");}}

6樓:連晚竹金錦

if後面把{}加上,不然系統只預設執行if後面的一個;前的東西#include

main()

if(p==3)

}else

if(i==2)

if(p==3)

}else

if(p==2)}

system("pause");

}就對了

7樓:漆義鐵羅

#include

#include

void

main()

else

if(i==2)

else

system("pause");

}//少了stdlib標頭檔案,還有一堆大括號

8樓:雲望亭仉嬋

c語言本身根本不存在進位制轉換

如果是直接賦值

inta=0x14;

就可以了

如果是鍵盤輸入

就是scanf("%x",&a);

如果你需要輸出10進位制,就是

printf("%d",a);

進位制在c語言中只是一個表示方法,不影響變數本身

c語言16進位制轉10進位制問題,非強制轉換!

9樓:斯坦恩貝格(北京)電子****

首先需要明白,c語言中的任何資料,都是以十六進位制的形式儲存在記憶體中的,c語言**對任何資料進行運算,都是以十六進位制的形式進行的,比如對變數int var;進行賦值,採用var = 10;和var = 0xa; 其效果是一樣的,編譯器會自動將10轉換成其十六進位制0xa的形式。只有對變數進行格式化輸入或輸出時,才會區分輸入的資料是10進位制還是16進位制。

10樓:匿名使用者

如果是使用可以用sscanf()函式

#include

int main()

先有個判斷

如果是abcdef這六個可以str[i] - 『a' + 10如果是0123456789這十個可以str[i] - 』0『

11樓:聖鸞

#include "stdio.h"

#include "conio.h"

#include "string.h"

#include "math.h"

int main(void)

int transform(char str[100],int length)

return number;}

c語言程式設計怎麼實現進位制轉換?

12樓:曦曦

可以用直接法和間接法轉換。

1、(1)間接法:先將十進位制轉換成二進位制,然後將二進位制又轉換成八進位制。

(2)直接法:八進位制是由二進位制衍生而來的,因此可以採用與十進位制轉換為二進位制相類似的方法,還是整數部分的轉換和小數部分的轉換,下面來具體講解一下:

①整數部分

方法:除8取餘法,即每次將整數部分除以8,餘數為該位權上的數,而商繼續除以8,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數起,一直到最前面的一個餘數。

②小數部分

方法:乘8取整法,即將小數部分乘以8,然後取整數部分,剩下的小數部分繼續乘以8,然後取整數部分,剩下的小數部分又乘以8,一直取到小數部分為零為止。如果永遠不能為零,就同十進位制數的四捨五入一樣,暫取個名字叫3舍4入。

2、十進位制的轉換到十六進位制:

十六進位制與八進位制有很多相似之處,可以參照上面八進位制與十進位制的轉換實現這兩個進位制之間的轉換。

13樓:匿名使用者

1、十進位制轉換成八進位制有兩種方法:

(1)間接法:先將十進位制轉換成二進位制,然後將二進位制又轉換成八進位制。

(2)直接法:八進位制是由二進位制衍生而來的,因此可以採用與十進位制轉換為二進位制相類似的方法,還是整數部分的轉換和小數部分的轉換,下面來具體講解一下:

①整數部分

方法:除8取餘法,即每次將整數部分除以8,餘數為該位權上的數,而商繼續除以8,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數起,一直到最前面的一個餘數。

②小數部分

方法:乘8取整法,即將小數部分乘以8,然後取整數部分,剩下的小數部分繼續乘以8,然後取整數部分,剩下的小數部分又乘以8,一直取到小數部分為零為止。如果永遠不能為零,就同十進位制數的四捨五入一樣,暫取個名字叫3舍4入。

2、十進位制的轉換到十六進位制:

十六進位制與八進位制有很多相似之處,可以參照上面八進位制與十進位制的轉換實現這兩個進位制之間的轉換。

14樓:陳

#include

int main(void)

要重複,新增迴圈就ok了。

這裡簡單的實現你的輸入和輸出功能,並沒有真正從運算規則上去進行轉換,你也沒做這樣的要求,不知道是不是你想要的結果。

一道c語言10進位制轉換2進位制問題,感激不盡!

15樓:網海1書生

#include

int main()

;printf("請輸入一個10進位制數:");

scanf("%d",&a);

printf("該數的二進位制數為:\n");

while(a>0)

for(i=15;i>=0;i--)

return 0;}

c語言進位制轉換

16樓:fu我若為王

計算機中常用的數的進位制主要有:二進位制、八進位制、十進位制、十六進位制。

2進位制,用兩個阿拉伯數字:0、1;

8進位制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;

10進位制,用十個阿拉伯數字:0到9;

16進位制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

下面用餘數短除法把十進位制數轉化為二進位制數為例進行說明

1、明確問題。舉個例子,我們現在是要將一個十進位制數字156轉換成二進位制數字。先將這個十進位制數作為被除數寫在一個倒著的「長除法」的符號裡。

把目標數系的基數(在這裡二進位制是「2」)作為除數寫在這個除法符號的外面。用這個方法將計算過程視覺化會更方便理解,因為整個計算過程只需將數字一直除以2。

2、進行除法運算。把結果的整數部分(商數)寫在長除法符號的下面,然後把它的餘數(0 或 1)寫在被除數的右邊。

我們現在是以2為除數,因此得出的商為偶數,則餘數為0;如果得出商為奇數,則餘數記為1。

3、一直往下繼續除,直到商為0為止。把每一個新的商數除以二,然後把餘數寫在被除數的右邊。直到商數為0為止。

4、寫出新的二進位制數字。從最下面的餘數開始,按順序讀到最上面。本例中,你會得到10011100。

這就是十進位制數字156的二進位制形式。或者,我們可以以腳註等式的形式表達,即:15610 = 100111002

活用這個方法可以將所有十進位制數字轉換成任何進製表達。除數為2是因為我們最終想得到的以2為基數的數(即二進位制數值) 。如果最終想得到其他數系的數字,用目標數系的基數代替這個方法裡二進位制的基數2 就可以了。

例如,要得到基數為9的數,就用9來代替2作為除數 。最終的結果就是目標數系的數字表達。

17樓:大野瘦子

1、十進位制轉二進位制

方法:十進位制的數除以2,然後取餘數,直到最後的商為0為止,然後餘數從下到上取(這個就是二進位制的數)

2、二進位制轉十進位制

方法:把二進位制數按權、相加就是十進位制數。

3、十進位制轉八進位制(類似十進位制轉二進位制的方法)

方法:十進位制的數一直除以8,直到商為0,然後倒著取餘八進位制的數。

4、八進位制轉十進位制(類似二進位制轉十進位制的方法)

方法:把八進位制的數按權,相加就是十進位制數。

5、二進位制轉八進位制

方法1:二進位制 -> 十進位制 -> 八進位制

方法2:2的3次方是8,所以,二進位制可以從個位開始,切成3個3個為一組,最高位不夠3個就補0然後每一組數就代表八進位制的一個位數。

6、八進位制轉二進位制

方法1:八進位制 -> 十進位制 -> 二進位制

方法2:八進位制每一位數進行除2取餘,如果取出來的餘數不夠3個就在最高位補0。

要掌握整型的表現形式,如下:

十進位制: 都是以0-9這九個數字組成,不能以0開頭。

二進位制: 由0和1兩個數字組成。

八進位制: 由0-7數字組成,為了區分與其他進位制的數字區別,開頭都是以0開始。

十六進位制:由0-9和a-f組成。為了區分於其他數字的區別,開頭都是以ox開始。

18樓:匿名使用者

很簡單的,

以下是各種進位制

的轉換方法:

兩個進位制(其中之一為10進位制)之間的互轉(手工計算方法)以2,10進位制互轉為例,其他請舉一反三:

二進位制數1101轉十進位制:

1×2的三次冪+1×2的二次冪+0×2的一次冪+1×2的零次冪=8+4+0+1=13

附加一個八進位制轉十進位制的例子吧:

507(八進位制轉10進位制):

5×8的2次冪+0×8的1次冪+7×8的0次冪=5×64+0×8+7×1=327(10進位制)以上是小進位制向大進位制的轉換,從2->10和8->10,下面說說大進位制向小進位制的轉換。(方法是相除去餘)

10進位制327轉八進位制:

327/8 = 40 餘數為7

40/8 = 5 餘數為0

於是八進位制數為507(第一位5是最後的商)10進位制13轉2進位制:

13/2 = 6 餘數為1

6/2 = 3 餘數為0

3/2 = 1 餘數為1

所以對應的二進位制數為1101(第一位1是最後的商)再測試一下,把307(10進位制)轉換為16進位制:

307/16 = 19 餘數為3

19/16 = 1 餘數為3

對應的16進位制數應該是:133

再把133轉回10進位制:

1×16的2次冪+3×16的1次冪+3×16的零次冪=256+48+3=307

這是程式:

#include

#define base 8 /*要轉換成幾進位制數/*#define digit 100 /*轉換數的位數/*int main(void)

return 0;

} 要轉換成16進位制只要改下base的值就有了。

C語言的問題C語言問題C語言問題

若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...

C語言問題,c語言問題?

一 c語言規定總是從main 開始執行的 這個函式也叫 主函式 因此,你發來的題目中的 1 6 8 敘述都是錯誤的,都應該選擇f。二 第2題中,c語言對其資料在記憶體中所佔用的實際位元組數,隨著程式中宣告的資料型別以及資料的多少而變化,c語言本身並沒有明確規定。這題應該選f。三 第3題,c語言中強制...

C語言問題,c語言問題?

你這個程式是捕捉0到9的按鍵狀態,按下再鬆開時才會記錄,想要識別所有按鍵,把for迴圈範圍擴大。比如for charch 32 ch 127 ch 這樣就包含了特殊符號及大小寫字母還有數字。但是,這個 是有問題的!一 你這個 需在鍵位已經按下後啟動才能識別,否則啟動時沒有按下對應鍵位,程式就結束了。...