當前位置:首頁 » 編程語言 » c語言數值轉換八進制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數值轉換八進制

發布時間: 2022-09-18 22:32:32

c語言: 輸入一個十進制正整數,將其轉換成八進制數,並輸出結果。

個人意見,僅供參考!
1.
//用轉意字元
⑴這是輸出有前綴「0」的八進制數
int
main(void)
{
int
a;
printf("\n");
scanf("%d",&a);
printf("%#o",a);
/*"%#o"這里的「#」就是輸出前綴的,「o」是八進制*/
getch();
return
0;
}
⑵輸出無前綴的八進制數
main()
{
int
a;
printf("\n");
scanf("%d",&a);
printf("%o",a);
/*不要在o前加「#」*/
}
——————————————————————————————
2.
//用數據結構的知識解決
int
*Init()
{
int
*top,*base;
base=(int
*)malloc(sizeof(int)
*
50);
if(!base)
{printf("Error!");exit();}
top=base;
return
top;
}
int
*push(int
*top,int
n)
{
*top=n;
top++;
return
top;
}
int
pop(int
*top)
{
int
e;
top--;
e=*top;
return
e;
}
void
convs()
{
int
*top,
*base;
int
e,N;
int
i;
top=Init();
base=top;
printf("Input
the
number:\n");
scanf("%d",&N);
while(N!=0)
{
top=push(top,N%8);
N=N/8;
}
printf("After
change,the
number
is:\n");
while(top!=base)
{
e=pop(top);
top--;
printf("%d",e);
}
printf("\n");
}
main()
{
convs();
getch();
}

❷ 用C語言進行十進制和八進制的轉換怎麼做

如果輸入是十進制字元串,輸出是八進制字元串,則用如下dec2oct函數可實現轉換

#include<stdio.h>

intdec2oct(char*dec,char*oct){
intnum=0,i=0,t;
charc;
do{
c=*dec;
if(!c)return0;//出錯了,沒找到10進制數
if(c>='0'&&c<='9')break;//找到十進制數了
elsedec++;
}while(1);
do{
num=num*10+(c-'0');
c=*++dec;
if(!c)break;//沒有其他字元了
if(c>='0'&&c<='9')continue;//還有十進制字元,繼續
elsebreak;//沒有其他十進制字元了,退出
}while(1);
do{
t=num%8;
oct[i]=t+'0';
num=num/8;
if(num==0)break;
i++;
}while(1);
for(t=(i+1)/2;t<=i;t++){
num=oct[t];
oct[t]=oct[i-t];
oct[i-t]=num;
}
oct[i+1]='';
return1;
}
intmain()
{
chardec[20],oct[20];
while(scanf("%s",dec)==1)
if(dec2oct(dec,oct))printf("%s ",oct);
elsebreak;
return1;
}

該函數dec2oct先將輸入字元串中的10進制字元串轉換成二進制數存下來,然後再將二進制數轉換成八進制字元串。

❸ 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);

}

(3)c語言數值轉換八進制擴展閱讀:

一、二進制數轉換

二進制數轉換成十進制數

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

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

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

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

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

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

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

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

❹ 在C語言中如何把十進制數變成八進制數

不知道你要的是那種,是自己換算嗎?
自己換算的話,用"除8求余數法「
比如(145)
145/8=18 餘1
18/8=2 餘2
2/8=0 餘2
則自下往上取余數就可以了,即221
如果你想讓計算機自己轉換的話,就像樓上說的辦法辦就行了,呵呵。祝你好運!

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

手工還是編程?
手工可以這樣:把16進制數從左至右按16進制各位上的「數」代表的二進制依次寫出來,比如0x9B8D7F6543D為,再從右至左每3位分開(最左端不足3位時在前面用0補齊)010,011,011,100,011,010,111,111,101,100,101,010,000,111,101。最後用八進制符號對應寫出來就可以了——233432775452075。十六進制數0x9B8D7F6543D的八進制就是233432775452075!
//#include "stdafx.h"//vc++6.0加上這一行.
#include "stdio.h"
#include "string.h"
void dtob(char *p,int n){
static i=0;
if(n) dtob(p,n/2);
if(n) p[i++]=n%2+'0';
}
int dtoo(char *p){
int x,i,k=strlen(p)%3;
for(x=i=0;i<k;(x*=2)+=p[i++]-'0');
for(;p[i];i+=3)
(x*=10)+=((p[i]-'0')<<2)+((p[i+1]-'0')<<1)+p[i+2]-'0';
return x;
}
void main(void){
int n;
char a[33]="";
printf("Type a hexadecimal number...\nn=0x");
scanf("%X",&n);
dtob(a,n);
printf("The binary is %s.\n",a);
printf("The octal %d.\n",dtoo(a));
}

❻ C語言十進制怎麼轉換八進制,求詳細描述,不要編譯器運行的結果

十進制轉任意進制一般都是用除基取余法,比如說102轉8進制,
102除以8,商12,餘6
12除以8,商1,餘4
1除以8,商0,餘1
商為0的時候即轉換完成,將余數逆序連接起來就是結果,即10進制的102轉8進制為146
將上述過程轉為代碼就是
#include <stdio.h>
int main()
{
int number = 102, i=0, div, rem;
int system = 8;//8進制
char s[50];

while (number) //除基取余法
{
div = number / system; //商
rem = number % system; //余
s[i++] = rem <= 9 ? rem + '0' : rem - 10 + 'A';
number = div; //上次的商賦給number
}
for (--i; i >= 0; i--)
printf("%c", s[i]);
printf("\n");

getchar();
return 0;
}

❼ 用c語言編程把一個十進制數轉化為八進制數

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

❽ c語言「把十進制數轉換成八進制數」怎麼寫

#include<stdio.h>
#include<string.h>
main()
{
inti,m,n,s=0,t=1;chara[100],b[100];
gets(a);//用回車分割
scanf("%d%d",&n,&m);//輸入的進制和想要轉換的進制
for(i=strlen(a)-1;i>=0;i--)//先轉10進制
{ if(n!=16)
s+=(a[i]-48)*t;
else
s+=(a[i]-55)*t;
t*=n;
}
for(i=0;s;i++)//10進制轉你想要的進制
{
if(s%m>=10)
b[i]=s%m+55;
else
b[i]=s%m+48;
s/=m;
}
b[i]='';
for(i=strlen(b)-1;i>=0;i--)
printf("%c",b[i]);
}

這是任意進制的轉換 望滿意

❾ C語言程序怎麼把十進制的數轉換成八進制的數

C語言程序十進制的數轉換成八進制的數的辦法:

#include <stdio.h>
#include <math.h>
void main()
{
int n,a,sum = 0,i =0;
printf("十進制輸出一個數n ");
scanf("%d",&n);
while(n)
{
a = n%8;
n = n/8;
sum += a*pow(10,i);
i++;
}
printf("八進制輸出sum:%d",sum);
}