幫忙編寫C 程式,要求十進位制和八進位制的相互轉換

2021-08-08 07:17:34 字數 3064 閱讀 5791

1樓:踏雪也尋梅

在iostream早定義了八進位制與十進位制的輸入輸出,請恕我偷個懶,具體**如下:

#include

using namespace std;

int main()

2樓:

首先你要知道,整形在計算機上是二進位制儲存的,比如說int是32位,「32位」就是二進位制位數;

十進位制/八進位制 都是整數變成字串格式之後才會有的。

stdlib.h中提供了幾個函式:

int atoi ( const char * str ); // 將十進位制字串轉換成int

long int atol ( const char * str ); // 將十進位制字串轉換成long

long int strtol ( const char * str, char ** endptr, int base ); // 將指定進製的字串轉成long

其中,str和前兩個一樣是帶轉換字串,endptr是乙個char*的引用,用於輸出非數值字元的位置,也可以用null,已表示不關心這種情況;

如下是使用例項:

/* strtol example */

#include

#include

int main ()

int到八進位制、十進位制、十六進製制字串的轉換,可以通過sprintf完成,對應的格式串分別為%o, %d, %x,比如:

int num;

char buf[64];

// ... 省略

sprintf(buf, "%o", num); // 八進位制字串

sprintf(buf, "%d", num); // 十進位制字串

sprintf(buf, "%x", num); // 十六進製制字串

同理,八進位制、十進位制、十六進製制字串轉換成int其實也可以通過sscanf來實現。

如果因為條件限制,不能使用庫函式,可以自己實現這些功能,實現起來也並不複雜(沒有考慮符號和字串錯誤情況):

void int2oct(char* str, const int num)

strcpy(&buf[c], str);

}bool oct2int(int& num, const char* str)

else return false;

}num = res;

return true;}

c++編寫程式將十進位制數轉化為八位二進位制輸出(要求用main)

3樓:匿名使用者

#includeint ****oer(int a,int* b) } return i; } int main()

c++ 編寫乙個程式,將使用者輸入的十進位制整數轉換成任意進製的數。

4樓:匿名使用者

1、首先,定義四個整型變數,儲存十進位制整數、二進位制整數等計算值。

2、給變數i和二進位制數賦初值,值為0。

3、接著,輸入乙個十進位制整數。

4、用while語句判斷,條件為十進位制數是否為零。

5、當十進位制數不為零時,對十進位制數用2求餘,儲存在變數d中。

6、十進位制數除以2,使數值縮小為原來的二分之一。

7、輸出十進位制數所對應的二進位制數。

8、執行程式,輸入任意乙個十進位制整數,計算機就會輸出對應的二進位制數。

5樓:oo墨色傾城

#include//我這個程式只針對2~16進製制的轉換using namespace std;

char str[17]=; //為了使程式簡化而提前定義將會輸出的數字

int main()

for(j=i-1;j>=0;j--)

cout<

}程式已近經過我自己驗證後,無錯誤!

如果還需要加另外的功能,請lz自行修改即可。

6樓:匿名使用者

%x是十六進製制,%o是八進位制,其他的要用ls的方法計算啦

我c++作業有乙個八進位制和十進位制相互轉換,但我寫完後輸出結果始終為0,能不能幫我看看問題出在哪?

7樓:匿名使用者

#include

#include

using namespace std;

int main( )  //*************************=

do  while( b != 0 );

cout<<"轉換結果為"<

使用者輸入乙個十進位制正整數,然後分別轉換成為二進位制數、八進位制數和十六進製制數輸出。(是c++,不是c)

8樓:匿名使用者

#include

using namespace std;

int main()

cout<十六進製制使用格式化輸出即可,oct表示八進位制,hex表示十六進製制

cout<

cout<

}如果有不懂請追問。

9樓:支景明孔茶

確定問題沒有什麼別的要求??比如說111可以是二進位制也可以是八進位制和十六進製制。。。

10樓:匿名使用者

有乙個轉換函式很好用:

char *itoa(int value, char *string, int radix);

int value 被轉換的整數,char *string 轉換後儲存的字元陣列,int radix 轉換進製數,如2,8,10,16 進製等

標頭檔案: itoa操作使用

但注意:這個不是c++標準庫函式,只能在visual c++系列編譯器環境下使用

想在gcc上做的話,可以設定輸出格式,也可以自己編函式進行轉換……

11樓:匿名使用者

有輸出格式設定的,

#include

#include

int main()

c語言使用陣列方法編寫程式,將十進位制小數轉換為p進製數

1 正負用乙個整數sign記錄 2 整數部 分,除p求餘,逐位存入乙個陣列,直到商為0 3 小數部分,乘p求商,整數部分逐位存入乙個陣列,直到結果為0或者達到指定的位數。4 將正負號 整數部分 小數點 小數部分,逐位輸出。5 p大於十時指定表現方法,比如用英文本母,p大於36,可能還要其他表達方式。...

C語言中的二進位制十進位制八進位制十六進製制都是怎麼轉化的

程式功能 求二進位制,十進位制,八進位制 建立人 蒲宇林 建立日期 2007年8月13日 include void two void eight void sixteen 主函式 void main if select 0 while 1 void two printf 轉換為二進位制 列印 for...

十進位制如何轉換成八進位制

方法1 採用除8取餘法。例 將十進位制數115轉化為八進位制數 8 115 3 8 14 6 8 1 1 結果 115 10 163 8 方法2 先採用十進位製化二進位制的方法,再將二進位制數化為八進位制數例 115 10 1110011 2 163 8 十進位制轉8進製方法 十進位制資料除以8一直...