當前位置:首頁 » 編程語言 » 八進制轉換為十進制c語言

八進制轉換為十進制c語言

發布時間: 2022-04-20 01:47:44

『壹』 c語言編程:八進制轉換為十進制

#include<stdio.h>

void main()

{

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

p=s;

gets(p);

n=0;

while(*(p)!='')

{n=n*8+*p-'0';

p++;}

printf("%d",n);

}

(1)八進制轉換為十進制c語言擴展閱讀:

一、二進制數轉換

二進制數轉換成十進制數

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

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

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

1、十進制整數轉換為二進制整數十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,

如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。

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

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

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

『貳』 c語言八進制轉10進制

由於指針p指向的字元必然是字元'0'~'7'(在main函數中已排除其他情況),且ascii碼中字元'0'~'7'是連續的,所以對於
'0'-'0'==0
'1'-'0'==1
'2'-'0==2
...
'7'-'0'==7
必然成立
且此處已知字元串為八進制數,故此處n=n*8+*p-'0',8為權值
具體演算法可解釋為
0123==1*8*8+2*8+3
同理,還可推出對於任意N進制(N>=2)
123(N) == 1*N*N+2*N+3
如對於十進制數
123==1*10*10+2*10+3
十六進制數
0x123==1*16*16+2*16+3

『叄』 C語言 八進制轉十進制

字元串輸入,然後每一個字元判斷是不是0-7。

#include <stdio.h>
#include <conio.h>
#define MAX 100
int main()
{
char input[MAX],*p;
int i,data;

printf("Please enter an octal number:");
scanf("%s",input);

data=0;
p=input;
while(*p)
{
if (*p>='0' && *p<='7')
data=data*8+*p-'0';
else
{
printf("\"%s\" is not an octal number.\n",input);
break;
}
p++;
}
if (*p==0) /*從循環中退出*/
printf("%s(Oct)=%d(Dec)\n",input,data);

getch();
return 0;
}

當然scanf函數還可以這樣用:
scanf("%[0-7]s",input); /*只要一碰到0-7以外的字元,立即截止輸入到input*/

『肆』 c語言 怎麼把八進制轉化為十進制

scanf("%c",&a[i]);%輸入8進制數的字元串
if(a[i]<'\x30'||a[i]>='\x39') %輸入的字元串是否數字0--7之間
break;
}
i--;
for(j=0;i>=0;i--,j++)
b+=(a[j]-48)*pow(8,i); /* 從把8進制數字元的ASIC碼轉換為十進制數
的0--7,然後從最低為位開始按各自的權展開
後相加,如(a3a2a1a0)8=a0*8^0+a1*8^1+a2*8^2+a3*8^3*/

『伍』 求八進制轉化為十進制的c語言思路及編程

思路:對於所有的八進制數符,按乘權求和的思想就可以實現轉化。

#include<stdio.h>

int main()

{int x=0,c;

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

scanf("%c",&c);

while(c>='0'&&c<'8')

{x=x*8+c-'0';

scanf("%c",&c);

}

printf("十進制數為:%d ",x);

return 0;

}

『陸』 怎樣用c語言把八進制數轉化為十進制數

希望你的八進制數的類型是char
#include<stdio.h>
#include<string.h>
#include<math.h>

int main (void){
char x[10]={10000};//八進制的10000是十進制的4096.
int i,j;
double k=0,w=0;
j=strlen(x);//j用來判斷用這個八進制數有多少位
for(i=0;i<strlen(x),i++)
{
k=(x[i]-48)*(pow(8,--j));
w+=k;
}
printf("%f\n",w);//顯示十進制數
retrun 0 ;}
我是這個思路,希望對LZ有幫助。

『柒』 C語言中八進制與十進制如何互相轉化

先將十進制數轉換為二進制數,然後就是從低位開始,每三位對應一位,不足補0
比如-32的代碼是10101110(隨便寫的)
轉換之後就是256,前面一個不足三位,在最前面補0
010
101
110
2
5
6

『捌』 C語言中,八進制怎麼轉化成十進制

0177777(為8進制,即2的3次方),=0 177 777(從右到左三位為一段分開,計算出的結果挨著寫在一起就是結果)=

『玖』 C語言 將八進制字元轉成十進制整數

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

轉化的過程是這樣子的:

假設 s = '123'

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

n='1'-'0';//n=1
p++;//*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進制的0234,轉換過程就是2*8*8+3*8+4,簡化成公式:8*(8*(2+0)+3)+4,*p-
『0』是轉化為整形字元的,希望能幫到你,謝謝

熱點內容
奧維地圖伺服器地址怎麼填 發布:2024-04-25 12:40:04 瀏覽:965
低配置游戲玩哪個平台 發布:2024-04-25 12:35:04 瀏覽:559
glinux下載 發布:2024-04-25 12:30:09 瀏覽:84
安卓手機可以用的谷歌叫什麼 發布:2024-04-25 12:05:57 瀏覽:943
linux改變用戶所屬組 發布:2024-04-25 11:50:33 瀏覽:469
rsa加密演算法java代碼 發布:2024-04-25 11:40:07 瀏覽:883
如何改變拉桿箱上的初始密碼 發布:2024-04-25 11:17:23 瀏覽:799
內網掛代理虛擬機如何配置網卡 發布:2024-04-25 11:15:06 瀏覽:687
明日之後緩存怎麼清理 發布:2024-04-25 11:14:56 瀏覽:205
華為mate30怎麼退回安卓版 發布:2024-04-25 11:08:49 瀏覽:898