將八進位制正整數字串轉化為十進位制程式解釋

時間 2023-02-13 11:30:07

1樓:1絲冷風

n=0; /初始化n=0

while(*p++!0') 判斷八進位制數的字串是否結束,並指向下乙個數字字元。

n=n*8+*p-'0'; 若不結束,計算數字的十進位制值。*p從左取某位數字的字元碼(ascii碼),由於數字0-9的ascii碼是30-39,所以要減去'0'的ascii碼30,才能得到0-9。

2樓:音_藥

你乙個數乙個數帶,這就是8進製轉10進製的過程。

將八進位制數轉換成十進位制數的乙個程式,沒看懂

用c語言程式設計:將乙個8進製的字串轉化為十進位制的數。

c語言 將八進位制字元轉成十進位制整數

3樓:匿名使用者

n = p - 0';/這一行已經把字串的第乙個字元處理了,所以下面是從下乙個字元開始。

p++;所以要自加1

轉化的過程是這樣子的:

假設 s = 123'

fun(s)的執行過程如下:

n = 1' -0'; n = 1p++;p='2'

n = n*8+ *p - 0'; n = n*8 + 2'-'0' =1*8+2 = 10

p++;n = n*8+ *p - 0'; n = n*8 + 3'-'0' =10*8+3 = 83, 此時。

p++;此時*p=0;所以迴圈退出,返回n,結果就是83

c語言中如何將8進製字串轉化成10進製

4樓:丙英萊念雙

先化為二進位制,再化成十進位制,不對弄錯了,這不是c語言,用printf(「%d",a)輸出十進位制,printf(」%o",a)輸出八進位制,printf(」%x",a)輸出十六進製制。

c語言 任意輸入乙個八進位制正整數將其轉換成十進位制數 200

5樓:頹喪的廢人一枚

格式老是錯誤,我私信給你了。

c語言 八進位制轉十進位制程式

6樓:問明

#include

void main()

char *p,s[6];int n;

p=s;gets(p);

n=0;while(*(p)!=0')

printf("%d",n);

一、二進位制數轉換。

二進位制數轉換成十進位制數。

由二進位制數轉換成十進位制數的基本做法是,把二進位制數首先寫成加權係數式,然後按十進位制加法規則求和。這種做法稱為"按權相加"法。例1105把二進位制數轉換成十進位制數。

二、十進位制數轉換為二進位制數。

十進位制數轉換為二進位制數時,由於整數和小數的轉換方法不同,所以先將十進位制數的整數部分和小數部分分別轉換後,再加以合併。

1、十進位制整數轉換為二進位制整數十進位制整數轉換為二進位制整數採用"除2取餘,逆序排列"法。具體做法是:用2去除十進位制整數,可以得到乙個商和餘數;再用2去除商,又會得到乙個商和餘數,如此進行,直到商為零時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。

2、十進位制小數轉換為二進位制小數。

十進位制小數轉換成二進位制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進位制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到乙個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。

然後把取出的整數部分按順序排列起來,先取的整數作為二進位制小數的高位有效位,後取的整數作為低位有效位。

7樓:匿名使用者

其實我看你是了解一些八進位制和c語法的,因為你使用了scanf("%o",&a);但是你的**有很多很多的錯誤。。。不是一下就能說明的。舉些錯誤的地方吧:

1) tra(a);不對,既然你的函式是int tra(),而且返回了s,那麼應該是a=tra();2) s的初始值沒有,應該是int s=0;吧,另外b這一變數貌似沒有用處。。。最簡單的方法就是下面的**,你考慮的太複雜了,呵呵: #include"stdio.

h"int main()

當輸入10(8進製)的時候,會輸出8(10進製)。望採納!

八進位制轉十進位制演算法,求解釋~~為什麼是這樣~~~

8樓:網友

原始輸入為形如"34567"這樣的八進位制字串。

輸出為轉換後的整形十進位制數。

計算方法就是從最高位(首位元組)開始,先將ascii字元轉換為對應整數,而後逐位乘8並依次累加下來得到最終結果。

以上面的34567為例,執行本函式就相當於是在:

將0 35由十進位制化為二進位制,將十進位制的數 35轉換為二進位制

將0.35由十進位制化為二進位制是0.010110011,採用 乘2取整,順序排列 法進行計算。具體計算過程 0.35x2 0.7 取整0,0.7x2 1.4 取整1,0.4x2 0.8 取整0,0.8x2 1.6 取整1,0.6x2 1.2 取整1,0.2x2 0.4 取整0,0.4x2 0.8 ...

c語言十進位制轉八進位制,C語言十進位制轉八進位制

問明 include void main printf d n 一 二進位制數轉換 二進位制數轉換成十進位制數 由二進位制數轉換成十進位制數的基本做法是,把二進位制數首先寫成加權係數式,然後按十進位制加法規則求和。這種做法稱為 按權相加 法。例1105把二進位制數110.11轉換成十進位制數。二 十...

二進位制和十進位制的轉化,二進位制轉化為十進位制的方法?

我不能圓滿的你。給點我的想法吧!我覺得,如果按正確的轉化方法的話,那麼各類進製中,數的大小就都是統一的了 這句是你的原話。這句是沒錯的,不管按什麼方法轉化,他們的大小是不會變化的。但是,數的大小比較不是看他們的形式,不能因為one,和1不同就說他們是不一樣的。同樣也不能說10和10一樣就說他們是一樣...